GEX
GEX data: see how dealers are positioned before the market opens
FinzData GEX measures dealer gamma exposure every trading day for 11,200+ US stocks, ETFs and the major indexes (SPX, NDX, RUT, VIX, XSP, DJX), from January 2010 to the latest close. Every row is stamped with the time it became known, so you can trade it today and backtest it honestly across 16 years, delisted names included.
What GEX tells you
Options dealers hedge the contracts they sell. When they are long gamma, their hedging runs against the market: they sell into strength and buy into weakness, which damps volatility and pins prices near large strikes. When they are short gamma, their hedging runs with the market: they sell as prices fall and buy as they rise, which accelerates moves in both directions.
Gamma exposure (GEX) puts a number on that hedging pressure. It tells you, before the open, whether the market's largest liquidity providers are likely to absorb a move or feed it, where that behaviour switches (the gamma flip), and where the heaviest strikes sit (the call wall and put wall).
The data, field by field
| Field | What it is | How traders read it |
|---|---|---|
net_gex_bn | Dealer net gamma, $bn per 1% move | Above zero, dealers are long gamma: they sell rallies and buy dips, damping moves. Below zero, they are short gamma: they sell into falls and buy into rallies, amplifying moves |
call_gex_bn, put_gex_bn | Gamma from calls and from puts | Which side of the book drives the hedging |
flip | Gamma flip: the price where net dealer gamma crosses zero | Above it, markets tend to pin and mean-revert; below it, moves tend to run |
call_wall, put_wall | Strikes with the largest call and put gamma | Common resistance and support, and pin targets into expiry |
call_oi, put_oi, pcr_oi | Open interest and the put/call open interest ratio | Where positioning sits and how defensive it is |
atm_iv_pct | At-the-money implied volatility | The price of protection on the same date |
spot, n_contracts | Underlying price used, contracts in the calculation | Context and data depth for each row |
knowledge_time, source, sign_conv | When the row became known, how it was produced, the dealer sign convention | The audit trail that makes a backtest honest |
Coverage: 11,200+ tickers, about 17.8 million daily rows from January 2010 to the latest close, including companies that were later delisted, acquired or went bankrupt. Index GEX (SPX, NDX, RUT, VIX, XSP, DJX) is computed from the index option chains themselves, not from an ETF proxy. Read the full method on the point-in-time GEX dataset page.
How traders use GEX
- Read the market's positioning each morning. Is the dealer book long or short gamma in SPX, QQQ or your stock? How far is price from the gamma flip? A market far above its flip behaves very differently from one trading just below it.
- Size risk to the regime. Across 4,223 SPY sessions since January 2010, next-day moves averaged 0.90% after short-gamma closes against 0.46% after long-gamma closes (the study). Short gamma calls for smaller size and wider stops; long gamma favours mean reversion and premium selling.
- Trade the walls. Use the call wall as resistance or a pin target into monthly expiry, and the put wall as support. A clean break through a wall while dealers are short gamma is where squeezes and air pockets start.
- Screen the whole market. Rank 11,200+ names by net GEX, distance to the flip or put/call open interest to find stocks where dealer hedging can drive the next move, on the long and the short side.
- Time options trades. Pair the dealer regime with at-the-money implied volatility: selling premium in long-gamma, high-IV names; buying convexity in short-gamma names before catalysts.
Hedging flows during shocks
Shocks are where GEX earns its keep. When a sell-off pushes an index below its gamma flip, dealers move from absorbing the decline to selling into it, and the hedging flow can turn an ordinary drawdown into a cascade. When the shock passes and put open interest rolls off, dealer gamma can swing back to long, and volatility collapses as quickly as it rose.
Because the history is point-in-time and goes back to 2010, you can study exactly how dealer positioning looked going into every stress episode of the last 16 years, from the 2011 debt-ceiling sell-off and August 2015 to March 2020, the 2022 bear market, August 2024 and April 2025, and test whether the same signals would have warned you, using only what was known each morning.
Built for honest backtests
- Point in time. Each row carries a
knowledge_timeand uses only option data from its own session, so a backtest only sees what traders could see. - Survivorship-free. Delisted names stay in the history, so a screen that would have picked a stock that later failed still picks it.
- One method, stated openly. Every row uses the same engine and says so: dealers are assumed long calls and short puts (
sign_conv = calls+,puts-), and the source of each row is labelled.
GEX in Python
import finzdata as yf # pip install finzdata
spy = yf.gex("SPY", start="2010-01-01") # one row per session, point-in-time
spy["regime"] = (spy["net_gex_bn"] > 0).map({True: "long gamma", False: "short gamma"})
spy["to_flip_pct"] = (spy["spot"] / spy["flip"] - 1) * 100
print(spy[["date", "regime", "to_flip_pct", "call_wall", "put_wall"]].tail())
spx = yf.gex("SPX", start="2020-02-01", end="2020-04-30") # dealer positioning through March 2020Import GEX into QuantConnect
FinzData ships ready-made LEAN custom-data classes, so GEX streams into a QuantConnect backtest or live algorithm like any other data feed:
- Download finzdata_qc.py and add it to your QuantConnect project.
- Add a project parameter named
finzdata-api-keywith your FinzData key. - Subscribe with
add_data(FinzDataGex, ticker). Each bar is stamped 17:00 New York on its session date, after the close, so the algorithm trades on it from the next session.
The full walkthrough is on the FinzData with QuantConnect page.
QuantConnect example
from AlgorithmImports import *
from finzdata_qc import FinzData, FinzDataGex
class GammaRegime(QCAlgorithm):
def initialize(self):
self.set_start_date(2012, 1, 1)
FinzData.set_api_key(self.get_parameter("finzdata-api-key"))
self.spy = self.add_equity("SPY", Resolution.DAILY).symbol
self.gex = self.add_data(FinzDataGex, "SPY", Resolution.DAILY).symbol
def on_data(self, data):
if not data.contains_key(self.gex):
return
g = data[self.gex] # g.value = net_gex_bn; g["flip"], g["call_wall"], g["put_wall"]
long_gamma = g.value > 0
self.set_holdings(self.spy, 1.0 if long_gamma else 0.5) # smaller size when dealers are short gammaFor AI agents
Connect Claude, ChatGPT or Cursor to the FinzData MCP server at api.finzdata.com/mcp and ask in plain English: "Which large caps are trading below their gamma flip this morning?" The get_gex tool takes an as_of date, so an agent backtesting a gamma rule cannot peek at the future.
Plans and pricing
| Plan | What you get | Price | |
|---|---|---|---|
| Free | Last 30 days of daily GEX for every ticker, 1,000 API calls a day | $0 | Free key |
| One ticker | Daily GEX history for one stock, ETF or index as a file: 5 years for $19, the full history since 2010 for $49 | From $19 | Buy a ticker |
| GEX Complete | Every US stock, ETF and major index, 2010 to today, through the API, the Python client, QuantConnect and the MCP server. Add it to a look-back bundle or a shop order for $195 | $295 | Buy GEX Complete |
| Institutional | Everything FinzData has, plus per-strike gamma profiles and every raw option chain since 2010 | $975 | Buy Institutional |
Everything you buy is yours to download as CSV or Parquet and keep. GEX is sold separately from the price-data bundles.
Frequently asked questions
What is GEX?
Gamma exposure: the total gamma options dealers hold, in dollars per 1% move in the underlying. It estimates how much dealers must buy or sell to stay hedged, and whether that hedging damps or amplifies price moves.
What does it mean when dealers are short gamma?
Their hedging moves with the market: they sell as prices fall and buy as they rise, so moves tend to be larger and trends can accelerate. Long gamma is the opposite: hedging leans against moves, so prices tend to pin and mean-revert.
How far back does FinzData GEX go?
January 2010 for every optionable US stock and ETF with options data, and for SPX, NDX, RUT, VIX, XSP and DJX, through the latest close, delisted names included.
Is the GEX data point-in-time?
Yes. Each row is stamped with when it became known and is built only from option data of its own session, so backtests only use levels traders could have seen.
Can I use FinzData GEX in QuantConnect?
Yes. Add finzdata_qc.py to your project, set your API key as a parameter and call add_data(FinzDataGex, ticker). Each bar arrives at 17:00 New York on its session date.
Is GEX included in the look-back bundles?
No. GEX is its own product: from $19 per ticker, GEX Complete for every ticker at $295 ($195 when added to a bundle or shop order), or Institutional. The last 30 days are free.