← ClaudeAtlas

finding-and-searching-datalisted

Find the identifier before you fetch it, and know which free sources can actually search. TRIGGER - "what is the FRED series id for X", "which ticker is this company", "find the CIK for", searching for a series, ticker, symbol, contract, crypto pair or filing by name or phrase; fred/series/search, company_tickers.json, EDGAR full-text search, efts.sec.gov; a guessed identifier returning an empty frame; retrieving filings by form and date range; when a document became PUBLIC versus when it was filed; earnings-call transcript timestamps. Load BEFORE guessing an identifier - three of the four free searches are current snapshots and cannot answer as of a past date. SKIP for resolving or dating an identifier you already hold (security-master-and-symbology), for choosing a price vendor (market-data-sourcing), for the point-in-time join once the data is yours (fundamental-and-macro-data), for auditing a finished result (research-integrity-guards), and for crypto venue mechanics (crypto-data-and-execution).
howard-lynn-ye/fin-skills · ★ 1 · Data & Documents · score 77
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