finding-and-searching-datalisted
Install: claude install-skill howard-lynn-ye/fin-skills
# Finding and searching data
Every data client in this ecosystem fetches **given an identifier**. `yf.download("AAPL")`,
`fred.get_series("DGS10")`, `Company("0000320193")` — each needs the string already in hand.
`fin_skills.data`'s Adapter protocol is the same shape: `bars / fundamentals / macro / actions /
universe`, and none of them takes a name.
So the first question of any real task is *what is the identifier*, and the failure mode is
specific: **a wrong identifier does not raise.** `DGS10` exists and `DGS10YR` does not, `ES=F`
works on Yahoo and `ES` does not, and the wrong one comes back as an empty frame that is
indistinguishable from "no data" the moment it lands in a file. Guessing is worse than stopping.
## 1. What each free source can search — and cannot
✅ Verified 2026-09-10 against each vendor's documentation or a live call. `scripts/find_data_source.py`
carries this table as data, plus `where_to_search(need)`.
| Source | Free text is matched against | Returns | As of a past date? |
|---|---|---|---|
| `api.stlouisfed.org/fred/series/search` | series **title**, units, frequency, tags — stemmed | series id | ✅ `realtime_start`/`realtime_end` |
| `sec.gov/files/company_tickers.json` | ticker and company title, locally after one download | ticker, CIK | 🚨 **NO** — no date field exists |
| `efts.sec.gov/LATEST/search-index` | the full text of filings **and their exhibits**, 2001+ | accession, CIK | ⚠️ on `file_date` only |
| `ccxt` `load_markets()` | unified