Built for quants

Market data built for AI, quants, data scientists, traders and analysts

FinzData is one API for people who test ideas against market history before they risk money: clean, survivorship-free, point-in-time data across US stocks, ETFs, futures, crypto, dealer gamma, positioning, fundamentals and macro, so a backtest shows what would really have happened.

Get a free API key See pricing Download free samples

The backtest that lies

Most failed strategies don't fail in the market. They fail in the data, months earlier, and nobody notices until real money is on the line.

A universe built from today's listings drops every company that went bankrupt, was acquired or was delisted. Fundamentals from today's database include restatements that weren't public when the trade would have been made. Macro series show revised numbers, not the first print the market traded on. Prices are adjusted with undocumented formulas and gaps are forward-filled.

Each error flatters the backtest. Together they can turn a losing strategy into a winner on paper. FinzData removes them at the source.

Exceptional breadth: the whole market in one key

16,000+ US stocks that have traded on NYSE and Nasdaq in the last 26+ years, delisted included, alongside every other dataset a cross-asset researcher reaches for. One API key, one Python client, one set of conventions.

DatasetCoverageHistory
US stocks16,000+ NYSE and Nasdaq names, delisted included; 1-minute, 5-minute, 15-minute, 30-minute, hourly and daily bars26+ years
ETFs231 ETFs, same bar sizes as stocksSince inception or 2000
Futures139 markets, 17,605 individual contracts; daily to 1-minute bars; back-adjusted and raw continuous series with the roll calendarSince 2007
Crypto15 USD pairs, Bitcoin includedBitcoin since July 2015
Dealer gamma (GEX)Point-in-time gamma for 8,755 US stocks and ETFs: net, call and put gamma, long or short gamma, gamma flip, call wall, put wall, put/call ratios, ATM implied vol; squeeze signalsSince October 2019 (extending to 2010 this week), every trading day
COT positioningCFTC legacy, disaggregated, TFF and supplemental reports for 950+ futures markets, plus a 0-100 COT indexSince 1986
Institutional holdingsSEC 13F holdings for every filing manager, with adds, trims and exitsSince 2013
Short interest and insidersFINRA short interest; SEC Form 4 insider tradesShort interest since 2017
Fundamentals and valuationSEC XBRL financials as reported and point-in-time; daily P/E, P/B, P/S, EV/EBITDA, market cap, dividend yieldAs filed
Macro18,000+ US macro series with every revision kept as a vintageFull series history
Liquidity and regimeFed net liquidity, money supply, credit stress and the FinzData Quantitative Model regimeWeekly and daily

The point-in-time stock universe holds about 1,700 listed names in 2000 and about 7,200 today, because that is how many actually traded on each date.

Depth: built by people who backtest for a living

  • Survivorship-free by construction. Delisted, bankrupt and acquired companies stay in the history. The universe as of any date is the stocks that traded that day. The survivorship_audit tool shows how much survivorship bias inflates CAGR and Sharpe.
  • Point-in-time, every time. Fundamentals, macro and dealer gamma can be requested as_of a past date and return only what was public then. Every macro vintage is kept, so a backtest trades on the first print of payrolls or CPI.
  • Clean, documented bars. Intraday bars are stamped at the start of each interval in US Eastern time; minutes without trades are omitted, never forward-filled; unadjusted and adjusted prices, with the adjustment formula published.
  • Honest about overfitting. Server-side backtests are deterministic and reproducible from a run_id, and every result reports your trial count and the deflated Sharpe ratio.
  • Transparent operations. Freshness for every dataset is published hourly on the status page, and free sample files show the exact format.

Point-in-time dealer gamma for every optionable US name

FinzData computes dealer gamma exposure every trading day for every optionable US-listed stock and ETF: 8,755 tickers since October 2019, extending to January 2010 this week (see the point-in-time GEX history). Each row is stamped with the moment it was known (5:00 pm US Eastern for the history, 6:00 am the next morning for the nightly scan), so a backtest sees only the gamma map traders could see that evening.

FieldWhat it tells a trader
Net GEX ($bn), call GEX, put GEXHow much hedging dealers must do per 1% move, and which side drives it
Dealer regimeLong gamma: dealers sell rallies and buy dips, so volatility is damped and prices pin. Short gamma: dealers chase the move, so volatility and trends accelerate
Gamma flipThe price where dealers switch from long to short gamma, and the distance to it in %
Call wallThe strike with the largest call gamma, often resistance and a pin into expiry
Put wallThe strike with the largest put gamma, often support; below it short-gamma selling can intensify
Put/call ratios, ATM implied volPositioning and the price of protection on the same date

With point-in-time history you can test what is usually told as a story: do stocks below their gamma flip trend more, do call walls cap rallies into monthly expiry, do squeezes start when dealers flip short gamma?

Use cases: quants and data scientists

Quants

  • Factor research without survivorship bias. Rank value, momentum, quality or low volatility across the full point-in-time universe going back more than 26 years; the value book includes the companies that went to zero.
  • Event studies on the right date. Measure reactions to earnings, index inclusion or insider buying with fundamentals and filings as known that day.
  • Managed-futures and cross-asset trend. Run trend or carry across 139 futures markets with back-adjusted continuous series and the real roll calendar.

Data scientists

  • Leak-free training sets. Pull features as_of each training date, so a model never learns from a restated number or a revised macro print.
  • Labelled regimes. Use the FinzData Quantitative Model's macro regime and stress probability as targets or conditioning variables.
  • Fast pipelines. Parquet by year straight into pandas or Polars, with integrations for Backtrader, vectorbt and QuantStats.

Use cases: AI agents, traders and analysts

AI builders and agents

  • An MCP server out of the box. Connect Claude, ChatGPT or Cursor to api.finzdata.com/mcp: 11 tools from universes and bars to point-in-time fundamentals and server-side backtests.
  • Backtests an agent can't fool itself with. run_backtest takes a signal formula such as rank(ret(252)) - rank(vol(60)), can hide tickers so the model can't recall their history, and reports the deflated Sharpe on every run.
  • Evaluation. FinzData Forecast Bench publishes monthly leak-free forecasting questions for testing AI models.

Traders

  • Know the dealer's position before the open. Is the dealer book long gamma (expect pinning and mean reversion) or short gamma (expect moves to run)? How far is price from the gamma flip?
  • Trade the walls. Use the call wall as a target or resistance and the put wall as support, and watch for breaks into expiry.
  • Backtest gamma rules, not anecdotes. Test fading moves in long-gamma names and riding them in short-gamma names across 8,755 tickers since October 2019, extending to January 2010 this week (see the point-in-time GEX history).
  • Positioning beyond options. COT extremes with the 0-100 COT index, squeeze signals that combine short interest with dealer gamma, and short interest alongside the chart.
  • Intraday history. Test opening-range, VWAP and overnight-gap rules on 1-minute stock and futures bars.

Financial analysts

  • Follow the smart money. Any manager's 13F portfolio, highest-conviction positions and every add, trim and exit since 2013.
  • Valuation through time. A company's P/E or EV/EBITDA against its own history and peers, using only figures public on each date.
  • Macro context in one place. 18,000+ macro series, Fed net liquidity and credit stress against sector returns, without stitching vendors together.

Start free

import finzdata as yf                     # pip install finzdata
prices = yf.download(["SPY", "QQQ"], start="2000-01-03")
c = yf.Client()
payrolls = c.macro("PAYEMS", as_of="2020-06-05")    # the number the market saw that morning
es = c.futures("ES", continuous=True)              # back-adjusted continuous E-mini S&P 500

Frequently asked questions

Is FinzData survivorship-free?

Yes. Delisted, bankrupt and acquired companies stay in the price history, and the universe as of any date contains the stocks that actually traded that day.

Does FinzData have historical dealer gamma (GEX)?

Yes. Daily point-in-time GEX for 8,755 US stocks and ETFs since October 2019, extending to January 2010 this week: net, call and put gamma, long or short gamma regime, gamma flip, call wall and put wall.

Can AI agents use FinzData?

Yes. FinzData runs an MCP server at api.finzdata.com/mcp with 11 tools, including point-in-time data and deterministic server-side backtests.

Is there a free tier?

Yes. A free key returns the last 12 months of daily bars with 1,000 calls a day. Full history is a one-time purchase.