Datasets
Datasets
Every dataset on one API key, built for backtesting: delisted names kept, fundamentals and macro point-in-time, adjustments published. Coverage and fields below, with a working code example for each.
Browse every dataset: 170 macro and economic series · 16,000+ US stocks, delisted included · 231 ETFs · 13F holdings for every manager · every COT market
COT positioning · Free+
Commitments of Traders
CFTC Commitments of Traders reports, all four report types. Legacy report since 1986; Disaggregated and Traders in Financial Futures since 2006. Published weekly Friday 3:30 pm ET with positions as of Tuesday. 431 markets.
| Coverage | 431 futures markets |
|---|---|
| History | Legacy 1986–, Disaggregated & TFF 2006– |
| Schedule | Weekly, Friday 3:30 pm ET (as of Tuesday) |
| Fields | open_interest, noncomm_long, noncomm_short, comm_long, comm_short, cot_index, z_score |
Prefer a one-off bulk file? The full COT history (all four report types, futures-only and combined, 1986 to date) is also a free Parquet dataset on Hugging Face.
import finzdata as yf
cot = yf.Client().cot(report="legacy_fo", market="WHEAT")
print(cot.tail())
SEC fundamentals · Free+
Fundamentals from SEC XBRL
Company facts as reported to the SEC, parsed from XBRL filings. 10,435 SEC-reporting companies. Point-in-time queries via the as_of parameter return only what was public on that date.
| Coverage | 10,435 SEC-reporting companies |
|---|---|
| Source | SEC XBRL company facts |
| Point-in-time | as_of parameter (look-back plan) |
| Fields | cik, entity, concept (e.g. Revenues, Assets), unit, value, start, end, fy, fp, form, filed |
import finzdata as yf
f = yf.Client().fundamentals(ticker="AAPL", concept="Revenues", as_of="2023-06-30")
print(f[["end", "value", "form", "filed"]])
Macro · Free · point-in-time on look-back
US macro series, with every vintage
158 US economic series from government sources — inflation, jobs, growth, rates, money and credit, housing, liquidity and financial conditions — refreshed the day each release comes out. Every revision is kept, so a backtest can use the number as it was first published instead of today's revised figure.
| Coverage | 158 series in 13 categories (CPI, payrolls, GDP, Treasury yields, Fed balance sheet, claims, housing starts, ...) |
|---|---|
| Source | BLS, BEA, Federal Reserve, Treasury, Census via FRED/ALFRED |
| Vintages | latest (Free) · first release, all vintages, as_of a date (look-back plan) |
| Calendar | Upcoming release dates for CPI, jobs, GDP and more (Free) |
| Fields | series_id, date, value, realtime_start, realtime_end |
import finzdata as yf
c = yf.Client()
cpi_today = c.macro("CPIAUCSL") # current values
cpi_then = c.macro("CPIAUCSL", as_of="2022-06-30") # what was known that day
upcoming = c.macro_calendar() # next release dates
FinzData Quantitative Model · Look-back plan
Macro regime labels, a nowcast and a market-stress probability
Our own model outputs, built only from public data. Every label follows a written rule applied to each input as it was published on the date, so the history has no hindsight in it. The nowcast estimates the period that has not been published yet; the published label is kept beside it so you can see both.
| Weekly | Financial conditions direction and financial risk direction (tightening / easing / flat), from the Chicago Fed NFCI and its risk subindex |
|---|---|
| Monthly | Growth level, growth direction, inflation direction and macro quadrant (goldilocks / reflation / stagflation / slowdown), from the Chicago Fed CFNAI-MA3 and core PCE |
| Nowcast | Daily estimate of every label for the period not yet published, plus CFNAI-MA3 and core PCE estimates |
| Daily | Market stress probability: filtered probability of the high-volatility state in a two-state Markov-switching model of S&P 500 ETF returns |
| History | Point-in-time labels from 2005 (inflation) and 2011 (growth, financial conditions) |
| Rules | Every rule and threshold is returned by /v1/model/catalog |
import finzdata as yf
c = yf.Client()
now = c.model("latest") # today's labels, nowcast and stress probability
hist = c.model("labels", series="macro_quadrant") # point-in-time history
rules = c.model("catalog") # the written rule behind every label
Model outputs are research data, not investment advice.
Licensed third-party series · Look-back plan
Credit, sentiment, housing and volatility series, with their sources
Series owned by data companies, served under licence from each owner on paid plans. Each download and each chart carries the owner's source credit.
| Moody's | Seasoned Aaa and Baa corporate bond yields, monthly and daily |
|---|---|
| University of Michigan | Consumer sentiment and 1-year inflation expectations (Surveys of Consumers) |
| S&P Dow Jones Indices | Case-Shiller U.S. National, 20-City and 10-City home price indices |
| ICE Data Indices | ICE BofA US high-yield and BBB corporate spreads and yields |
| Cboe | VIX, VIX9D, VIX3M, VVIX, SKEW, 1- and 3-month implied correlation, oil and gold volatility, and the daily VIX futures curve |
| Fields | series_id, date, value |
| Source credit | Once per download: the citation field in JSON, the X-FinzData-Source header on CSV and Parquet, and SOURCES.txt in bundles |
import finzdata as yf
c = yf.Client()
c.licensed_catalog() # every series, its owner, source line and availability
hy = c.licensed("BAMLH0A0HYM2")
curve = c.vix_futures(start="2024-01-01")
Money, liquidity & capital flows · Look-back plan
M1, M2, M3, central-bank liquidity and cross-border capital flows
The money and flow data macro traders watch, in one place and in consistent units (billions). Fed net liquidity, G3 central-bank balance sheets in dollars, broad money for the US, euro area, Japan and the UK, and Treasury TIC flows by country, ready to line up against prices in a backtest. Updated twice a day.
| Money supply | US M1 and M2 (monthly and weekly), monetary base, M2 velocity, official US M3 to 2006, FinzData US M3 estimate from 1980, euro-area M3, Japan M3, UK M4, each also in US dollars, and G4 broad money in USD |
|---|---|
| Liquidity | Fed total assets, Treasury General Account, overnight reverse repo, bank reserves, Fed net liquidity (assets − TGA − ON RRP), discount window, swap lines, Eurosystem and Bank of Japan balance sheets, G3 central-bank assets in USD, Chicago Fed NFCI, St. Louis Fed stress index |
| Capital flows | Treasury TIC: foreign holdings, net purchases and valuation changes of US Treasuries, agencies, corporate bonds and equities by country and by official vs private holders; Fed custody holdings for foreign official accounts (weekly); foreign-held federal debt; rest-of-world Treasury purchases; US current account |
| History | US money from 1959, Fed balance sheet from 2002, euro-area M3 from 1980, TIC holdings from 2020 |
| Transforms | level, yoy, mom, diff, diff_yoy, computed on the server |
| US M3 estimate | M2 + large time deposits + institutional money funds. The Fed stopped publishing M3 in 2006; over 1980–2006 the estimate's year-on-year growth tracks official M3 with 0.94 correlation, at about 7% below its level |
| Fields | series_id, date, value (TIC: country, date, asset, holdings, net_purchases, valuation_change) |
| Sources | Federal Reserve, US Treasury, BEA, European Central Bank, Bank of Japan, Bank of England, credited once per download |
import finzdata as yf
c = yf.Client()
c.liquidity_catalog() # every series, units, coverage, sources
liq = c.liquidity("FED_NET_LIQUIDITY", start="2015-01-01")
money = c.liquidity(["US_M2", "US_M3_ESTIMATE", "G4_BROAD_MONEY_USD"], transform="yoy", wide=True)
china = c.tic(country="China, Mainland", asset="treasuries") # holdings and net purchases, USD bn
13F institutional holdings · look-back bundles
13F institutional holdings
Every Form 13F filed with the SEC since mid-2013: about 9,000 managers a quarter, every reported position, with CUSIP-to-ticker mapping and quarter-on-quarter flows. Amendments are applied the way the SEC intends (restatements replace the filing, new-holdings amendments add to it), and values are in dollars throughout.
| Coverage | All 13F-HR filers, 2013 Q2 to the latest quarter; holdings, puts and calls, investment discretion and voting authority |
|---|---|
| Ownership by stock | Holders, shares, reported value, new / added / trimmed / exited positions and net share change, by quarter |
| By manager | The full book each quarter, with portfolio weights |
| Plans | Free: latest quarter's ownership by stock. Look-back bundles: holders, manager books and ownership history for the years you buy. Institutional: everything since 2013 |
| Updates | As the SEC publishes each quarterly 13F data set |
import finzdata as yf
c = yf.Client()
c.institutional_ownership("NVDA") # holders and flows, quarter by quarter
c.holders("NVDA", period="2026Q2") # every manager holding it
c.manager_holdings(cik="1067983") # one manager's whole book
c.managers(q="berkshire") # find a manager
Daily prices · Free+
Daily US equity bars
End-of-day OHLCV bars. Stored unadjusted; adjustments are applied on read with adjust=none|splits|all. Delisted names are included on the look-back plan.
| Coverage | US-listed equities, incl. delisted, plus 231 US-listed ETFs (look-back plan) |
|---|---|
| ETFs | Daily bars for 231 ETFs (index, sector, bond, commodity, country and leveraged funds), split-adjusted as traded; dividends are not applied to ETF prices |
| History | Last 12 months (Free); back to January 2000 on the look-back plan, for the years you buy |
| Adjustment | adjust=none|splits|all, applied on read |
| Fields | date, open, high, low, close, volume |
import finzdata as yf
df = yf.Ticker("MSFT").history(start="2000-01-01", auto_adjust=True)
print(df.tail())
Intraday prices · hourly on every bundle · 1-minute and 5-minute from 25 years
Intraday bars: 1-minute, 5-minute, hourly
Intraday OHLCV bars on the ET wall clock, including pre-market and post-market sessions, unadjusted or adjusted for splits and dividends. Download free samples and read the full file specification before you buy.
| Coverage | US-listed equities |
|---|---|
| Clock | ET wall clock, incl. pre/post market |
| Bar sizes | 1-minute; 5-minute and hourly built from it (clock-aligned, stamped at bar start) |
| Which bundles | Hourly bars on every look-back bundle (5 to 30 years). 1-minute and 5-minute bars with the 25-year ($575), 30-year ($670) and Institutional ($975) bundles |
| Adjustment | Unadjusted or split + dividend adjusted |
| Fields | ts, open, high, low, close, volume |
import finzdata as yf
df = yf.Ticker("NVDA").history(interval="5m", start="2024-01-02") # 1m, 5m, 1h
print(df.head())
Dealer gamma · coming soon
GEX by ticker
Dealer gamma exposure computed from end-of-day options chains, aggregated per ticker.
| Coverage | US optionable tickers |
|---|---|
| Source | End-of-day options chains |
| Fields | date, ticker, gex, call_gamma, put_gamma |
import finzdata as yf
# Dealer gamma (GEX) is coming soon.
# Email [email protected] to join the early-access list.
Corporate actions · Free+
Splits and dividends
Splits and dividends delivered as dated events, so you can apply adjustments yourself or let the API do it on read.
| Coverage | US-listed equities, incl. delisted (look-back plan) |
|---|---|
| Event types | split, dividend |
| Fields | date, ticker, type, ratio, amount, ex_date |
import finzdata as yf
acts = yf.Client().actions("AAPL")
print(acts)