Data
Point-in-Time GEX: Historical Gamma Exposure Data
Historical GEX data you can backtest without look-ahead. Every row is dealer gamma exposure as it stood after that session’s close: net, call and put GEX, the gamma flip, call wall and put wall, put/call open interest and at-the-money implied volatility. Coverage runs from October 2019 to the latest close for 8,755 US stocks and ETFs, about 8.5 million daily rows, and the history is being extended back to January 2010 (backfill under way). Get it through the REST API, the Python client, CSV, or the get_gex tool for AI agents.
Why point-in-time matters for gamma exposure backtests
A gamma exposure backtest is only as honest as its timestamps. If the levels you test on for a past date were built from data that arrived later, the backtest quietly knows tomorrow and looks better than anything you could have traded.
FinzData stores dealer GEX the way a trader could have seen it. Each daily row is computed from that session’s closing option chain and carries a knowledge_time: 17:00 New York time on the session date for the history, and 06:00 the next morning for rows from the nightly scan, always before the next session opens. Nothing computed later is written back into it. That makes the history safe to join with prices on the next session: a signal formed at the close of day t is only ever tested on returns from day t+1 onward.
The definitions are fixed. Dealer gamma is summed across listed contracts out to 90 days, with calls counted as positive and puts as negative from the dealer side. When net_gex_bn is above zero, dealers are long gamma; below zero, they are short gamma. The gamma flip is the price at which net dealer gamma changes sign.
Historical GEX data: coverage and fields
Coverage: 8,755 US stocks, ETFs and index options, every session from 2019-10-01 to the latest close, with a backfill to January 2010 under way. New sessions are added each evening.
| Field | Meaning |
|---|---|
date, ticker | Session date and underlying |
knowledge_time | When the row became known: 17:00 New York time for the history, 06:00 next morning for the nightly scan |
spot | Underlying price used for the calculation |
net_gex_bn | Net dealer gamma exposure, in billions |
call_gex_bn, put_gex_bn | Call and put dealer gamma, in billions |
flip | Gamma flip: the price where net dealer gamma crosses zero |
call_wall, put_wall | Strikes with the most call and put gamma |
call_oi, put_oi, pcr_oi | Open interest and the put/call open interest ratio |
atm_iv_pct | At-the-money implied volatility, in percent |
n_contracts | Contracts that entered the calculation |
Example: SPY GEX on March 21, 2025
Here is one row as the API returns it for SPY on a quarterly expiration day. Dealers were short gamma, with the gamma flip above the close.
| Date | Regime | Net GEX | Gamma flip | Call wall | Put wall |
|---|---|---|---|---|---|
| 2025-03-21 | Short gamma | minus 6.09 billion | 575.56 | 570 | 560 |
The same query works for SPX GEX, QQQ, single stocks and ETFs. Across 1,761 SPY sessions from October 2019 to October 2026, next-day moves averaged 1.06% after short-gamma closes against 0.54% after long-gamma closes, about twice as large (see the SPY gamma regime study). That is a description of the past, not a forecast or investment advice.
Python: historical GEX in a few lines
import finzdata as yf
# daily dealer gamma for SPY, as it stood after each close
spy = yf.gex("SPY", start="2025-03-01", end="2025-03-31")
print(spy[["date", "net_gex_bn", "flip", "call_wall", "put_wall"]])
# net gamma by strike for one session (Institutional plan)
strikes = yf.gex_strikes("SPY", "2025-03-21")
# every ticker covered, with its first and last date
universe = yf.gex_tickers()Net gamma by strike, call walls and put walls
Daily totals tell you the regime. Per-strike gamma tells you where it sits. The strikes endpoint returns call, put and net dealer gamma for every strike of a ticker on a given session, so you can rebuild the gamma profile, see how concentrated the call wall and put wall are, and test how price behaved near them.
Common uses: screening for gamma squeeze conditions when price trades through a call wall with dealers short gamma; measuring distance to the gamma flip as a volatility regime feature; and adding dealer positioning as a factor next to momentum, volatility and options flow.
Access is the same everywhere: REST endpoints /v1/gex/daily, /v1/gex/strikes and /v1/gex/tickers in JSON or CSV; the Python client (pip install -U finzdata, version 0.1.12 or later); and the get_gex MCP tool, so an AI agent can pull dealer gamma for any covered ticker and date. See the docs and free samples.
Plans and pricing
The last 30 days of daily GEX are included with a free key at $0. Older history comes with a look-back plan: $195 plus $95 for each 5 years of history, then $19.95 a month. Per-strike gamma history is part of the Institutional plan at $975 plus $59.95 a month. Full details are on the pricing page.
For background on how dealer gamma works, read the dealer gamma exposure guide, or see the nightly gamma exposure data API snapshot.
Frequently asked questions
What is point-in-time GEX?
Gamma exposure stored as it could be known after each close, stamped with when it became known and always before the next session opens, with nothing computed later written back. It lets you backtest dealer gamma signals without look-ahead.
How far back does the historical GEX data go?
Daily GEX covers October 2019 to the latest close for 8,755 US stocks and ETFs today, and the history is being extended back to January 2010 (backfill under way).
Is SPX and SPY gamma exposure included?
Yes. SPX, SPY, QQQ, NDX and other index and ETF options are covered alongside single stocks, with daily totals and per-strike gamma.
What is the gamma flip?
The price at which net dealer gamma changes sign. In our SPY study, next-day moves were about twice as large after closes with dealers short gamma as after closes with dealers long gamma.
Can AI agents use the GEX data?
Yes. The get_gex MCP tool returns dealer gamma for any covered ticker and date, and the same data is available through the REST API and the Python client.
Is the GEX data free?
The last 30 days of daily GEX are free with a key. Older history and per-strike gamma come with the paid plans on the pricing page.