Rory Kane · Risk Manager
Design study · 0DTE market structure · Exchange risk controls

Anatomy of a Gamma Squeeze

Zero-days-to-expiry options concentrate dealer hedging into a reflexive feedback loop. This study works through the mechanics of the 0DTE gamma squeeze, then designs the exchange-side control stack that contains it, with an interactive dealer-positioning simulator and the risk engine code behind it.

Gamma vs. strike — same open interest, shrinking clock DTE 21.0d
Drag toward zero. Total open interest never changes, but the convexity it carries concentrates into a spike at the money, and the spike is what forces the hedging.
59%
of SPX options volume traded same-day in 2025, a record 2.3M contracts per day (Cboe full-year volume report)
Γ ∝ 1/√T
At-the-money gamma scales with 1/√T: from 21 days to 2 hours to expiry, hedging pressure per point at the strike grows roughly 16x
2 regimes
Dealer positioning flips the market between self-stabilizing (pinning) and self-amplifying (squeeze)
01 / Mechanics
Dealer hedging

Squeezes run on forced hedging

Most accounts of a gamma squeeze focus on a stampede of call buyers. The buyers start it. The size and persistence of the move comes from the market maker on the other side of the trade, who carries directional risk they never wanted and have to keep hedging away.

When a dealer sells a call, they are short delta — they lose if the underlying rises. So they buy stock or futures against it. The amount they must hold is the option's delta. The problem is that delta is not constant: it changes as spot moves, and the rate of that change is gamma (Γ = ∂Δ/∂S).

A dealer who is short gamma must hedge in the direction of the market: buy as price rises, sell as it falls. Their own hedging pushes price further along the path that forced them to hedge in the first place. The loop is mechanical: it runs on hedging rules, not on anyone’s view of value.

THE SHORT-GAMMA LOOP — each lap is one re-hedge cycle. Loop gain rises as (a) dealer gamma grows and (b) book depth thins. When hedge flow per cycle approaches the liquidity available to absorb it, the loop goes critical and the squeeze starts. The diagram is drawn for an up-move, but the loop is symmetric: swap rises for falls and buying for selling and it amplifies a sell-off identically.

Whether the loop stays quiet or takes over the tape comes down to two quantities. Dollar gamma — how many dollars of delta the dealer community must trade per 1% move — and book depth — how many dollars the market can absorb per 1% of price impact. Their ratio is the loop gain. Everything in this study, including the control stack at the end, works on one of those two numbers.

02 / Why 0DTE
Convexity on a timer

What changes when T goes to zero

Black–Scholes gamma for an at-the-money option scales like 1/(Sσ√T). Hold everything else fixed and shrink T: gamma at the money grows without bound, while gamma everywhere else collapses. The hero chart above is that equation drawn live.

Three structural consequences follow, and each one matters to an exchange:

Concentration. A 30-day option spreads its hedging pressure across a wide band of strikes and weeks of time. A 0DTE option releases all of it inside one session, within a few strikes of spot. The same open interest produces an order of magnitude more hedge flow per point of movement in the final hours.

Velocity. Charm (delta decay) and the gamma spike force re-hedging on a minutes-not-days cadence. Dealers cannot wait out a move that expires at 4:00 PM. Hedging becomes compulsory and immediate, which is exactly the condition under which hedge flow chases price.

Regime fragility. Because 0DTE positioning is rebuilt every single morning, the market's stabilizing or destabilizing character can flip overnight. A market pinned placidly to a strike on Tuesday can be a feedback amplifier by Wednesday lunchtime. Surveillance that updates daily is already too slow; this is an intraday risk discipline.

In 2025, 59% of SPX option volume traded on the day it expired, a record 2.3 million contracts per day, in a product category that barely existed before daily expirations were listed in 2022. The product is popular because it is convex, cheap, and fast. A risk manager does not have to like that, but the venue listing it has to survive its worst day.

03 / Regimes
+Γ pins
−Γ amplifies

One book, two regimes

The sign of aggregate dealer gamma decides whether hedging flow leans against the market or chases it. The instruments and participants are identical in both states; the dynamics are opposite. That sign is the single most useful number an exchange risk desk can track intraday.

Dealers long gamma — the pin

Hedgers sell rallies, buy dips. Volatility is absorbed.

When customers net-sell options (covered calls, income strategies), dealers are long gamma. Re-hedging means fading every move. Price gets magnetized to the strike with the heaviest open interest — the familiar “pin” into Friday closes, visible for years in heavily-optioned names like NVDA around round-number strikes.

Dealers short gamma — the squeeze

Hedgers buy rallies, sell breaks. Volatility is manufactured.

When customers net-buy options — the canonical 0DTE flow — dealers are short gamma. Re-hedging means chasing every move, and the chase grows as spot approaches the strike wall. Past a threshold the hedge flow exceeds book depth and the move starts funding itself.

The implication for risk design: the danger is a positioning state, not any particular level of price or volatility. Price-based triggers only catch the move once it is underway. The early warning lives in the open interest distribution, and in who is short it.

Cboe’s own flow research pushes back on the squeeze narrative: on most days, SPX 0DTE customer activity runs roughly two-sided, and net dealer exposure stays small. That describes the average day, and it is probably accurate. Risk controls are sized for the bad one.

04 / History
Design motivation

What the tape already taught us

None of the events below is a pure 0DTE gamma squeeze. Each one is the reason a specific piece of the simulator exists. History does not supply the parameter values, which are stylized, but it dictates which mechanisms a credible model has to contain.

Feb 5, 2018

Volmageddon

Short-volatility ETPs forced into a mechanical end-of-day rebalance as VIX spiked; the rebalance demand itself drove VIX futures further, terminating XIV. A textbook demonstration of reflexive, rule-bound hedge flow exceeding available depth.

In the simulator: the loop-gain readout, the supercritical flag, and the gain floor that stands in for a discontinuous move.
Jan 2021

The meme-stock squeezes

Concentrated short-dated call buying in single names forced dealer delta-buying into thin borrow and thin books. Clearinghouse margin calls on member firms became the binding constraint — brokers restricted trading because collateral, not conviction, ran out.

In the design: control layer 2, pre-committed and state-dependent margin. The simulator checks coverage; the procyclical feedback belongs to the control stack.
Aug 5, 2024

The volatility dislocation

An overnight carry unwind met a thin early book; VIX printed above 60 in the opening minutes, a level the print itself partly owed to sparse option quotes rather than traded panic. Depth is a time-of-day variable, and stress arrives precisely when it is lowest.

In the simulator: depth as a slider to stress, and a quantity that erodes at the moment an interruption triggers.

The common thread is uncomfortable for venue operators: in each episode the risk infrastructure itself (rebalance rules, margin methodology, auction design) amplified the dynamics it was meant to contain. Good controls are designed with the knowledge that they become part of the system they police.

05 / Simulator
Interactive

Drive the engine yourself

The panel below runs a stylized intraday session: 78 five-minute bars, an open-interest wall near the money, and a dealer community that re-hedges every bar. You control the positioning state, the depth of the book, and the exchange's volatility interruption band. Then you stress it.

Two paths render on every run from the same random shocks: the raw path (no hedge feedback) and the realized path (hedge feedback on). The gap between them is the squeeze: volatility produced by market structure alone. The readouts answer the exchange's three questions: how big was the amplification, did margin coverage survive, and did the interruption logic fire in time.

GAMMA ENGINE / INTRADAY SESSION SIMULATOR
Charts update live as you drag. New shocks redraws the random session.
Intraday price path, % from open
Raw shocks, no feedback (dashed)Realized, hedge feedback onVolatility interruption
Net dealer $Γ vs. spot ($B / 1%)OI wall K*
Loop gain at the wall, |$Γ|/D at the open — critical at 1, and it grows into the close
Vol amplification (realized / raw, trading bars only)
Max excursion, realized path
Margin coverage verdict
Interruptions triggered
MODEL ASSUMPTIONS (deliberately simple): per-bar hedge flow = net dollar gamma × bar return; price impact is linear in flow/depth; loop is solved per bar as r = e/(1+G·p(S)/D) with gamma localized around the OI wall by a Gaussian kernel p(S); interruption halts trading for 3 bars when the 3-bar move exceeds the band; depth rebuilds toward its open level while halted, and flow arriving during the halt queues and re-prices as a single reopening gap; dealer gamma is re-priced as the clock runs down, growing like 1/√(time remaining) and capped at 2.5× its open value, so the same book is far more dangerous at 3 PM than at 10 AM; amplification is measured over trading bars only, so a halt cannot flatter the statistic. Past loop gain 1 the per-bar fixed point has no solution; the gain floor stands in for a discontinuous move, so supercritical sessions show capped magnitude and a direction set by the first few shocks. A production engine replaces each assumption with measured quantities; see the code section. A stylized model trades realism for legibility, and legibility is the goal of a design study.

Three experiments worth running. (1) Flip the sign: set dealer gamma to +$1.0B; the shocks stay identical, and the realized path is now calmer than the raw one. (2) Drain the book: leave gamma at −$1.0B and walk depth down from $2B; watch the loop-gain readout climb toward one and amplification go nonlinear with it. Near criticality, small parameter changes can flip the entire shape of the day. That sensitivity is not a glitch; it is the defining property of a system at the edge of its stability boundary. Past one, the chart flags the session as supercritical: magnitude is floor-capped, and which way the day runs is decided by the first few shocks. (3) Tune the brake: widen the interruption band until it never fires, then tighten it until it fires constantly — both extremes break the market, which is why band calibration is a genuine design problem.

06 / Control stack
Exchange design

Designing the venue that survives its product

A control is only as good as the loop edge it cuts. Below, each layer of the stack is mapped to the specific part of the loop it interrupts: surveillance shrinks uncertainty about loop gain, margin removes leverage from the ignition, interruptions buy time for depth to recover, and incentives raise depth itself.

1

Positioning surveillanceDetect · intraday

Reconstruct net dealer gamma in real time. Outside analysts have to estimate this from public open interest and sign-convention guesses; the venue holds ground truth in its clearing and account-level data and only has to assemble it into a live state. Publish an internal regime state (+Γ / −Γ / critical) with the same seriousness as a price feed. This is the highest-leverage investment in the stack, because every other control can be conditioned on it.

Cuts: uncertainty about loop gain — you cannot manage a state you cannot see.
2

Convexity-aware marginPrevent · T+0

Short-dated short-option positions margined against stressed intraday scenarios, not end-of-day VaR; concentration add-ons when one strike's OI exceeds a depth-scaled threshold; intraday calls with same-hour settlement. Margin schedules are pre-committed and state-dependent, so calls do not arrive as a surprise demand for liquidity at the worst possible moment (the Jan 2021 lesson).

Cuts: ignition size — caps how much gamma can be built per dollar of collateral, anti-procyclically.
3

Volatility interruptions & price bandsInterrupt · seconds

Reference-price bands and short auctions triggered by velocity rather than level, calibrated against measured book depth so the band tightens when the book thins. The simulator above shows why calibration is the hard part: a band that never fires is theater, a band that always fires is the volatility.

Cuts: the re-hedge cadence — a 90-second auction lets depth regenerate and breaks flow-chasing into discrete, absorbable steps.
4

Position & strike concentration limitsPrevent · structural

Limits expressed in the unit that matters — dollar gamma at the wall, not contract count. Ten thousand far-dated contracts are a position; the same count expiring in three hours at the money is a detonator. Exemptions for hedgers earned through demonstrated two-sided behavior.

Cuts: the OI wall — bounds the height of the gamma spike any one strike can carry.
5

Market-maker obligations with stress teethAbsorb · continuous

Quoting obligations that bind during stress: maximum spread and minimum size requirements that scale with the venue's regime state, paid for with meaningful fee economics in calm markets. Depth that evaporates at the first interruption is depth the risk model must not count.

Cuts: thin-book denominator — directly raises D, the only term that shrinks loop gain without shrinking the product.
6

Default management & reverse stress testsSurvive · quarterly

Run the engine backwards: find the positioning state and shock that breaks the waterfall, then check how visible that state would be to layer 1 today. Cover-2 sizing uses squeeze-conditional scenarios, since correlated member stress is the norm in a gamma event rather than the tail.

Cuts: nothing, by design. This layer assumes the loop won and asks whether the venue opens tomorrow.

The design philosophy threading the stack: controls must be convex where the risk is convex. Static, level-based rules are linear answers to a nonlinear problem. Every layer above conditions on the positioning state, because the same 2% move is noise in a +Γ regime and an emergency in a −Γ one.

07 / Engine code
Python

The risk engine, readable

The simulator above is a JavaScript port of a small Python engine: Black–Scholes greeks, dollar-gamma aggregation across an open-interest book, the feedback-loop session simulator, and the margin/interruption checks. The two load-bearing functions are below.

gamma_risk_engine.py — dollar gamma aggregation1 of 2
# Net dealer dollar-gamma per 1% spot move, aggregated across the book.
# Sign convention: dealer_sign = -1 where dealers are short the option.
def dollar_gamma_profile(spot_grid, book, sigma, t_years):
    profile = np.zeros_like(spot_grid)
    for leg in book:                      # leg: (strike, oi, dealer_sign)
        g = bs_gamma(spot_grid, leg.strike, sigma, t_years)
        # dollar gamma per 1% move: Γ · S² · 0.01 · contract_mult · OI
        profile += leg.dealer_sign * g * spot_grid**2 * 0.01 \
                   * 100 * leg.open_interest
    return profile                        # <0 ⇒ hedgers chase price
gamma_risk_engine.py — feedback session, solved per bar2 of 2
# Realized return when hedge flow feeds back through finite depth.
# Per-bar fixed point of  r = e + impact(hedge_flow(r)):
#   r = e / (1 + G(S)/D)   — stabilizing when G>0, amplifying when G<0.
def realized_return(e_t, spot, gamma_profile, depth, t_rem):
    G = gamma_profile.at(spot, t_rem)     # Γ re-priced as the clock runs down
    gain = 1.0 / max(1.0 + G / depth, 0.2)  # cap: no infinite loops
    return e_t * gain

def run_session(book, depth, sigma_day, shocks, band, n_bars=78):
    spot, halted, path = 100.0, 0, []
    for t, e_t in enumerate(shocks):
        if halted: halted -= 1; queue += e_t; depth = recover(depth)
        else:
            r = realized_return(e_t + queue, spot, book.gamma_profile, depth, t_rem); queue = 0
            spot *= (1 + r)
            if rolling_move(path, window=3) > band:
                halted = 3               # volatility interruption
        path.append(spot)
    return SessionResult(path, breaches(path), interruptions(path))

Everything stylized in the demo has a measured counterpart in production: G(S) from positioning surveillance instead of an assumed book; D from realized order-book depth by time-of-day instead of a slider; shock distributions from historical intraday tapes including the bad days. The architecture — state, loop, brake, verdict — does not change.

08 / Takeaways
For the risk desk

Thoughts for the Risk Committee:

One: the gamma squeeze is a positioning state, not a price event. Venues that surveil only prices will always be late. Build the regime feed first; it is the cheapest control with the highest option value.

Two: the loop has exactly two physical parameters — dealer gamma and book depth. Every credible control either bounds the first, raises the second, or buys time for the second to recover. If a proposed control does none of those, it will not matter on the day it is needed.

Three: your own infrastructure is inside the loop. Margin calls, auction rules, and rebalance mechanics have all, historically, been gears in the engine rather than brakes on it. Stress-test the controls as participants in the dynamics, not as referees outside them.

Four: short-dated convexity products are here to stay, and on balance they should be: they are popular because they are useful. The venues that win the category will be the ones whose risk architecture lets them stay open, and stay trusted, on the worst day.