SPX GEX Heatmap: Gamma Exposure by Strike and Expiration
As of 2026-10-23, SquawkFlow computes total SPX dealer gamma at -39.2B per 1% move with spot at 7,623.68.
That total spans all 54 expiries in the chain. The 10 expiries and 25 strikes shown in the grid sum to -25.8B.
| Strike | All | 10/26 0DTE | 10/27 1d | 10/28 2d | 10/29 3d | 10/30 4d | 11/02 7d | 11/03 8d | 11/04 9d | 11/05 10d | 11/06 11d |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 7,685 | -93M | +57M | -3M | -31M | -18M | -45M | -6M | -3M | -349K | -930K | -4M |
| 7,680 | -199M | +328M | -211M | +12M | -83M | -125M | -5M | -3M | -5M | +116K | -16M |
| 7,675 | -376M | +190M | -356M | +213M | -39M | -243M | -38M | -24M | -38M | -3M | +47M |
| 7,670 | -688M | -35M | -240M | -23M | -13M | -91M | -18M | -9M | -6M | +5M | -46M |
| 7,665 | -869M | -30M | -400M | +1M | -107M | -226M | -11M | -2M | +232K | +4M | -29M |
| 7,660 | -296M | +680M | -546M | -53M | -61M | -57M | -16M | -11M | -11M | -16M | -20M |
| 7,655 | -570M | -65M | -294M | -117M | -33M | -16M | +2M | -511K | -8M | -2M | -20M |
| 7,650 | -5.0B | -117M | -210M | -313M | -29M | -2.2B | -192M | -58M | -113M | -45M | -307M |
| 7,645 | -896M | -130M | -288M | -89M | -4M | -204M | -48M | -11M | -28M | -5M | -11M |
| 7,640 | -1.5B | -107M | -372M | -131M | -26M | -257M | -142M | -11M | -31M | -9M | -88M |
| 7,635 | -1.0B | -205M | -273M | -241M | -2M | -193M | -24M | +2M | +581K | +442K | -29M |
| 7,630 | -1.2B | -75M | -384M | -329M | -41M | -134M | -28M | -9M | -17M | -22M | +593K |
| 7,625SPOT | -1.7B | -251M | -393M | -160M | -45M | -232M | -76M | -38M | -25M | -11M | -82M |
| 7,620 | -1.2B | -212M | -222M | -120M | -115M | -167M | -94M | -30M | -25M | -10M | -57M |
| 7,615 | -976M | -152M | -443M | -141M | -19M | -76M | -22M | -27M | -5M | -4M | -24M |
| 7,610 | -1.0B | -185M | -180M | -192M | -34M | -88M | -71M | -5M | -9M | -13M | -52M |
| 7,605 | -719M | -174M | -163M | -94M | -9M | -91M | -53M | -2M | -105K | -523K | -45M |
| 7,600 | -6.9B | -560M | -366M | -453M | -211M | -1.8B | -79M | -70M | -32M | -21M | -280M |
| 7,595 | -619M | -125M | -138M | -134M | -25M | -54M | -26M | -3M | -1M | -8M | -20M |
| 7,590 | -1.7B | -295M | -137M | -140M | -30M | -729M | -28M | -21M | -9M | -13M | -143M |
| 7,585 | -1.1B | -138M | -308M | -180M | -13M | -240M | -15M | -2M | -26M | -5M | -53M |
| 7,580 | -1.6B | -411M | -188M | -142M | -72M | -116M | -27M | -19M | -77M | -7M | -33M |
| 7,575 | -1.7B | -442M | -181M | -83M | -50M | -426M | -19M | -15M | -23M | -5M | -54M |
| 7,570 | -955M | -293M | -77M | -124M | -76M | -150M | -20M | -10M | -18M | -7M | -74M |
| 7,565 | -1.0B | -742M | -34M | -56M | -43M | -45M | -2M | -3M | -2M | -1M | -23M |
| Net | -39.2B | -2.8B | -7.8B | -5.1B | -2.2B | -11.8B | -2.1B | -2.5B | -1.0B | -517M | -3.8B |
squawkflow.com/gex-heatmap ·
Swipe the grid sideways for more expirations; the strike column stays put.
The grid above covers 25 strikes nearest spot across 10 expirations, drawn from 29,424 contracts spanning 54 expiries in the full chain.
This total is summed from the gamma published with each contract on the delayed option chain, across every expiration dated today or later. The SPX total on the /gex levels page is a different book, where every contract is re-priced with Black-Scholes at the evaluation spot from an archived implied volatility surface, so the two totals are not directly comparable. Both derive from daily-settled open interest.
Dealer positioning is an assumption, not an observable: open interest shows that a contract exists, never which side a dealer holds. Machine-readable version.
Building on this data? Welcome, it is free to reuse with attribution (a visible link to squawkflow.com). The open dataset updates every trading day and is more stable than parsing this page; questions via contact.
- Dealers are net short about $39.2B of gamma per 1% move, so their hedging trades in the same direction as price; this state has historically meant faster, trend-prone sessions. That figure spans all 54 expiries in the chain; the 10 expiries and 25 strikes shown in the grid sum to -$25.8B.
- The heaviest same-day positive gamma near spot sits at 7,660; dealers hedging there lean against moves away from that strike, which tends to make price sticky around it into the close.
- Time decay alone shifts the aggregate dealer hedge by about $35.3B of index delta per day, and rebalancing that drift implies steady mechanical buying, heaviest into the close.
- Since the prior session's settlement, open interest at 7,000 grew by 82,517 contracts, the largest overnight change on this grid; those added positions carry gamma at that strike for as long as they stay open.
Composed from the numbers on this page, not opinion: each sentence restates one figure on this page and its mechanical consequence. Descriptive only, never advice.
Net dealer gamma in dollars per 1% move, split by strike and by expiry. Every other gamma chart sums the expirations together, which hides where in time the positioning actually sits. Free, no signup.
Every cell is dollar gamma, US dollars of dealer gamma per 1 percent move in spot, derived from open interest rather than from trades. This page is the book broken out by strike and expiration. For the single current net gamma exposure total and the call wall, put wall and zero-gamma levels taken from it, use the SPX GEX page. The two totals come from different inputs and are not directly comparable. What gamma exposure is covers the calculation, and negative gamma explained covers the sign.
Also: SPY, QQQ, IWM, DIA, NVDA, TSLA
How to read it
Scan down a column to see where hedging is concentrated for one expiration. Scan across a row to see whether a strike matters today or only later in the month. The All column is the strike summed across every expiration in the chain, which is the number a conventional gamma chart would show you on its own. A run of strikes above spot that each carry more call gamma than the last is what desks call a gamma ramp, and the grid is where its shape is actually legible, because it separates the near-dated gamma from the rest.
The near-dated columns dominate in absolute size, and that is real rather than a display artefact: gamma rises steeply as expiration approaches for strikes near the money. Each column is therefore shaded against its own range, so a quiet expiry stays readable next to a loud one. Compare tint within a column, never across two.
Questions
- What does this gamma heatmap show?
- Net dealer gamma exposure in dollars per 1% move in the index, split by strike (rows) and expiration date (columns). Positive means dealers are estimated to be long gamma at that strike and expiry, so their hedging leans against price moves. Negative means they are short gamma and hedging leans with moves, amplifying them.
- How is this different from a normal GEX chart?
- A standard gamma exposure chart sums every expiration together, producing one call wall and one put wall. That hides where in time the gamma sits. A strike carrying 500 million of gamma expiring tomorrow behaves nothing like the same 500 million spread over three months, and an aggregate cannot tell them apart. This grid keeps the expiration dimension.
- Why is the 0DTE column so much larger than the others?
- Gamma rises sharply as expiration approaches for strikes near the money, because a small move in the index has a proportionally huge effect on the delta of a contract about to expire. Same-day expiries routinely carry an order of magnitude more gamma at spot than a weekly does. Each column is shaded against its own range for that reason, so a smaller expiry is still readable. One caveat specific to this column: open interest is settlement data, updated once daily, so the 0DTE column measures gamma expiring today from positions held overnight. Contracts opened intraday (a large share of modern 0DTE volume) are not in open interest yet and are not captured here.
- How are the numbers calculated?
- For every contract: gamma multiplied by open interest, by the 100-share contract multiplier, by spot squared, by 0.01, which converts to dollars of delta per 1% move. Calls are counted positive and puts negative, following the standard convention that dealers are long calls and short puts against customer flow. Values are summed per strike and expiration across the full chain.
- Is dealer positioning actually known?
- No. It is an assumption, not an observation. Open interest records that a contract exists; it never records which side a dealer holds. Every gamma figure published anywhere, ours and every commercial vendor’s, inherits that assumption. Treat the grid as a map of where hedging pressure would concentrate if the standard convention holds.
- What are the charm and vanna numbers?
- Charm is how much dollar delta the estimated dealer hedge gains or sheds per day purely from time passing; vanna is how much it changes per one-point rise in implied volatility. Both are computed per contract from the Black-Scholes greeks using each contract’s own implied volatility, then summed with the same dealer sign convention as gamma. How much of the charm comes from same-day contracts is measured rather than assumed: charm on strikes right beside spot grows roughly with one over time-to-expiry while strikes further out lose theirs, so the same-day share moves through the session. These are model outputs, not observations, and they inherit the positioning assumption.
- What is overnight open interest change?
- Open interest is the number of contracts outstanding at a strike. The overnight change is today’s count minus the most recent prior session’s, summed across every expiration and both calls and puts, in plain contracts rather than dollars. A positive number means more contracts are open at that strike than were open at the last close; a negative number means contracts there expired or were closed. It is the closest free approximation of which strikes traders actually added to overnight. The caveat is the same one that applies to the 0DTE column: open interest is settlement data, published once daily after the close, so this compares two settlement snapshots and never intraday activity. A position opened and closed inside a single session never appears in it, and a strike whose only expiration has passed shows the full negative because those contracts no longer exist.
- How often does it update?
- Every four minutes during market hours. The underlying options data is delayed, so refreshing faster would not produce newer numbers.