How often do SPX dealer-gamma levels hold?
Five levels, 1,082 sessions, read at 10:00 ET and judged against the rest of the day
"Does this level hold?" is a better question than "is this level interesting": it is the one a stop is placed against, and its failure case carries the size of the damage. So the table below is shaped like a stop panel — hold rate, broke during the day, broke at the close, came back, how far the break travelled — for the levels the terminal draws, next to the two levels everyone draws: yesterday's high and low.
No lookahead. Each level is read once, 30 minutes after the open, and then judged only against the minutes that follow. The flip and the band move through the day; scoring them against their own later values would be scoring a level that already knew the answer.
The table
| level (at 10:00 ET) | sessions | held | broke at close | came back | avg overshoot | worst overshoot |
|---|---|---|---|---|---|---|
| hold band — top | 1,030 | 95.0% | 3.3% | 34.6% | 16.3 pts | 179 pts |
| hold band — bottom | 1,030 | 90.3% | 5.8% | 40.0% | 24.6 pts | 133 pts |
| zero-gamma flip | 1,048 | 88.5% | 6.4% | 44.2% | 24.4 pts | 133 pts |
| prior session low | 885 | 70.2% | 14.9% | 50.0% | 24.2 pts | 167 pts |
| prior session high | 781 | 63.8% | 22.5% | 37.8% | 20.9 pts | 213 pts |
"Sessions" counts the days on which the level existed and sat on the correct side of spot at 10:00 (a prior high already below spot is not a level being defended).
Definitions, so the numbers cannot be read as something else
Held — spot never traded beyond the level at any minute close after 10:00. Broke at close — the session's last print was beyond it. Came back — of the sessions that broke during the day, the share that closed back on the original side. Overshoot — the furthest distance beyond the level, in index points, among the sessions that broke. Median distance — how far the level sat from spot at 10:00, in points and in the sigma units of the touch surface (trailing 30-minute realised move × √minutes left).
The hold band is the corridor of hypothetical spot in which the measured dealer book stays long gamma — inside it hedging damps moves, outside it the same hedging amplifies them. Its edges are read from the measured 0DTE-plus-near-expiry book at 10:00. The flip is the root of that book's gamma ladder. Prior high and low are the previous session's maximum and minimum one-minute print.
How much of this is just distance?
A level two sigma away holds most days because it is two sigma away, not because it is a level. So each event was also scored against the empirical touch surface: given the side, the distance in sigma and the minutes left, how often was any level that far away reached? The baseline is side-specific — selloffs travel further than rallies in sigma terms, so a level below spot is compared with downside reach and a level above with upside reach — and day-clustered like everything else here. "Expected break" is that rate; "excess hold" is expected minus actual, with one binomial standard error of the break rate in brackets. The match is to the same minute of every other session (10:00), not to a wider time bucket: the opening half hour's scaler is the day's highest, so a bucket that mixes 09:40 with 11:00 would flatter any level read early.
| level (at 10:00 ET) | median distance | in sigma | expected break | actual break | excess hold |
|---|---|---|---|---|---|
| hold band — top | 64 pts | 1.6σ | 7.9% | 5.0% | +2.8 pp (±0.7) |
| hold band — bottom | 77 pts | 2.0σ | 9.8% | 9.7% | +0.0 pp (±0.9) |
| zero-gamma flip | 75 pts | 1.9σ | 11.3% | 11.5% | −0.1 pp (±1.0) |
| prior session low | 37 pts | 1.0σ | 29.2% | 29.8% | −0.6 pp (±1.5) |
| prior session high | 29 pts | 0.7σ | 36.8% | 36.2% | +0.5 pp (±1.7) |
The answer is: mostly, yes. The band's lower edge, the flip and yesterday's range all break within one standard error of what their distance alone predicts. A level 2σ from spot at 10:00 is reached roughly 10% of the time, and these levels are reached roughly 10% of the time. The one exception is the band's upper edge: it broke on 5.0% of sessions against 7.9% expected for an upside level 1.6σ away at that minute — about a third less often, four standard errors from the baseline. Read at 10:30 instead, every hold rate moves by a point or two and the ranking stands; the upper edge's excess narrows to +1.7 pp, and the lower edge and the flip show +1.4 and +1.5 — a few points across the band, not a regime.
Two ways to read that. The band's edges are set by the book, and its width is what buys the 90–95% — which is the number a reader actually wants: a level that far away holds nine days in ten, and now the table says so with its sample attached. And the edges adding a point or three beyond distance is consistent with the mechanism the band describes — long-gamma hedging leaning against the move — without proving it; it is an observation to keep testing, not a result to trade.
The two columns a stop is priced against
When a band edge or the flip does break, the session closes back inside 35–44% of the time, and the average overshoot is 16–25 points — with worst cases of 130–180 points. The prior day's low is the level most likely to be revisited and the one most likely to come back (50%); the prior high has the worst tail (213 points). None of this says where to put a stop. It says what each choice has cost, historically, when it was wrong.
Caveat
Breaks are judged on minute closes. A spike that pierced a level and reverted within the minute is not a break here, so every hold rate is an upper bound. The touch-surface baseline is measured the same way, so the comparison between them is fair even though each number alone is optimistic. The sample is one regime-spanning window — 2022's bear market through 2026 — and the hold band exists only since the measured book did; the rates are statements about these 1,082 sessions, not laws.
Reproduce it
Each finished session's JSON at https://gex.live/snapshots/YYYY-MM-DD.json
carries the one-minute series this is built from: spot, flip,
hold_hi, hold_lo (aligned with minutes, 09:30 to
15:58 ET). Index 30 is 10:00. Prior high/low are the previous session's max/min of
spot. The scoring, in full:
REF = 30 # 10:00 ET s0, fwd = spot[REF], spot[REF+1:] level = hold_hi[REF] # or hold_lo, flip, prior_hi, prior_lo side = "above" if level > s0 else "below" # skip if the level is on the wrong side broke = (fwd > level).any() if side == "above" else (fwd < level).any() closed = fwd[-1] > level if side == "above" else fwd[-1] < level overshoot = (fwd.max() - level) if side == "above" else (level - fwd.min()) # distance in sigma: rv = trailing-30-minute std of log returns * spot, at minute 30 # u = |level - s0| / (rv[30] * sqrt(len(spot) - 1 - REF)) # expected break = share of sessions whose reach from minute 30, same side, was >= u
The session pages at /sessions state each day's levels in prose, and the MCP server returns the same summaries — enough to spot-check any row of the table against a day you remember.
Part of gex.live research. Measured on the free session archive; every session is free to replay.