Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

What Is Gamma Exposure (GEX)? Dealer Hedging

Gamma exposure, or GEX, estimates the hedging dealers do as prices move. See the calculation, the assumptions it rests on, and why free GEX numbers differ.

Gamma exposure, usually shortened to GEX, estimates how much stock or futures hedging options dealers need to do for each one percent move in an underlying. It is a positioning statistic built from three ingredients: open contracts, an option pricing model, and one large assumption about who sits on which side of each trade. This page walks the calculation, states its assumptions plainly, and measures the tape underneath it on a pinned July 2026 session.

What gamma exposure (GEX) measures

Start one level down. Delta is an option's sensitivity to the underlying's price: a delta of 0.40 means the contract gains roughly 40 cents for every dollar the stock adds. Gamma is the rate at which delta itself changes. A contract with high gamma sees its delta swing quickly as the underlying travels across the strike, and our option gamma explainer traces that curve on real contracts.

A dealer who sells an option and hedges it holds a position in the underlying and re-sizes that position as the price moves. Gamma sets how much re-sizing each dollar of movement asks for. Gamma exposure scales that per-contract number up to a market-wide dollar figure. The standard recipe:

  1. For every listed strike and expiry, take open interest, the count of contracts still outstanding.
  2. Compute each contract's gamma from an option pricing model, usually Black-Scholes, fed with the underlying's price, the strike, time to expiry, an interest rate, and an implied volatility.
  3. Multiply gamma by open interest, by the 100-share contract multiplier, and by the square of the underlying's price, then divide by 100. The output is dollars of stock per 1% move.
  4. Attach a sign under the convention that dealers hold calls long and puts short, then sum across every strike and expiry.

An obviously hypothetical worked example: 10,000 open contracts carrying a gamma of 0.05, on a $100 underlying, give 10,000 times 0.05 times 100 times 100 squared, divided by 100, which is $5,000,000 of stock per 1% move. Published index-level readings run into the billions on this same arithmetic.

Positive gamma and negative gamma regimes

The sign carries the whole reading.

Positive (long) gamma. The dealer book gains delta as the underlying rises and sheds delta as it falls. Keeping the hedge flat means selling shares into strength and buying them into weakness, so the hedging flow runs opposite to the move.

Negative (short) gamma. The book sheds delta as the underlying rises and gains delta as it falls. Keeping the hedge flat means buying into strength and selling into weakness, and that flow runs with the move.

Practitioners label the first a dampening or pinning condition and the second an accelerant condition, and they call the level where the aggregate estimate crosses zero the gamma flip point. Each of those labels describes a hedging rulebook, never a forecast. Dealer hedging is one flow among many in a market trading billions of shares a session, and the estimate cannot see the rest of them. For what the hedging desk is actually doing all day, see how market makers make money.

Where the contracts actually sit

Gamma per contract peaks near the money and near expiry, so strikes closest to spot carry most of the arithmetic. Here is that concentration on the tape: every same-day SPY contract traded on Monday, July 6, 2026, grouped by its strike and ranked by contracts traded.

QuerySame-day SPY contracts by strike: the ten busiest, July 6, 2026
The exact SQL behind every number
SELECT strike_label AS strike,
       round(sumIf(contracts, opt_type = 'C') / 1e3, 1) AS call_contracts_k,
       round(sumIf(contracts, opt_type = 'P') / 1e3, 1) AS put_contracts_k,
       round(sum(contracts) / 1e3, 1)                   AS total_contracts_k
FROM (
    SELECT substring(ticker, length(ticker) - 8, 1)              AS opt_type,
           toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)) AS strike_thousandths,
           toString(intDiv(strike_thousandths, 1000))            AS strike_label,
           sum(toFloat64(volume))                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start <  toDateTime('2026-07-07 04:00:00')
      AND startsWith(ticker, 'O:SPY260706')
    GROUP BY ticker, opt_type, strike_thousandths, strike_label
)
GROUP BY strike_label
ORDER BY sum(contracts) DESC
LIMIT 10
Run this yourself

The busiest strike of the session was $751, carrying 1817.5 thousand contracts, split 1082.3 thousand calls against 735.2 thousand puts. The next strike down the list, $750, took 1725.9 thousand. By the tenth-ranked strike the count sits at 159.6 thousand. Ten strikes, a handful of dollars wide, hold the bulk of the day's activity in a $700-plus instrument.

The call and put mix flips across spot, which is the tilt a signed GEX calculation is trying to capture. At $753, above the money, calls led puts 587.8 thousand to 74.8 thousand. At $748, below it, puts led, 457.4 thousand against 107 thousand.

One caveat the panel makes visible: this is volume, the count of contracts changing hands, not open interest, the count still outstanding after the bell. GEX is built on the second. Options volume vs open interest separates the two.

Front-dated contracts dominate the tape

QueryJuly 6, 2026: whole-tape options volume by days to expiry
The exact SQL behind every number
SELECT multiIf(dte = 0, '0 (expires today)',
               dte = 1, '1 day',
               dte <= 7, '2-7 days',
               dte <= 30, '8-30 days',
               '31+ days') AS days_to_expiry,
       round(sum(volume) / 1e6, 2) AS contracts_mm,
       round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_volume
FROM (
    SELECT toFloat64(volume) AS volume,
           dateDiff('day',
                    toDate(toTimeZone(window_start, 'America/New_York')),
                    toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start <  toDateTime('2026-07-07 04:00:00')
      AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
)
WHERE dte >= 0
GROUP BY days_to_expiry
ORDER BY min(dte)
Run this yourself

Contracts expiring that same afternoon were 38.8% of all US options volume on the session, 23.52 million of them, against 18.6% for everything more than a month out. The gamma per contract is largest in exactly that front bucket, and it is also the bucket whose open interest turns over fastest. A GEX figure built on the prior evening's clearing file is describing a book that has already moved. Zero days to expiry covers the same-day contract in detail.

The estimate clusters in a handful of products

QueryJuly 6, 2026: top roots by same-day-expiry options volume
The exact SQL behind every number
SELECT root AS underlying,
       round(sum(volume) / 1e6, 2) AS zero_dte_contracts_mm,
       round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_zero_dte_volume
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toFloat64(volume) AS volume
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start <  toDateTime('2026-07-07 04:00:00')
      AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
      AND toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))
)
WHERE root != 'SPCX'
GROUP BY root
ORDER BY sum(volume) DESC
LIMIT 8
Run this yourself

Same-day flow concentrates hard: SPY took 36.1% of it, QQQ another 21.2%, and SPXW, the weekly cash-settled S&P 500 root, 11.3%. Published GEX series are quoted on this same short list of underlyings, which are the chains deep enough for a strike-by-strike sum to carry much meaning. Single-name GEX on a thinly traded ticker is arithmetic performed on a handful of contracts.

The assumptions GEX rests on

Open interest carries no side. Exchanges publish how many contracts are outstanding at each strike and never publish who is long and who is short. The convention that dealers hold calls long and puts short comes from a generalisation about customer behaviour, that retail buys calls and institutions buy puts for protection. It is a heuristic, and at individual strikes on individual days it is simply wrong.

Gamma comes out of a model. Black-Scholes needs an implied volatility per strike, a rate, and a dividend assumption. Change the volatility surface and every gamma in the sum changes with it.

Open interest is stale by construction. It publishes once per session from clearing data after the close, so an intraday GEX print is anchored to yesterday's book.

The product boundary is a choice. SPX index options, SPY ETF options and E-mini futures options all reference the S&P 500 at different multipliers. Including or excluding any of them moves the total by billions of dollars.

Why two GEX numbers disagree

Two dashboards can read the same market and print totals far apart, and every source of the gap is in the list above: which products were included, which volatility surface fed the model, whether the figure is quoted per 1% move or per one index point, whether the dealer sign was applied per strike or to the aggregate, and how expiry-day contracts were handled. A level from one publisher measured against a threshold quoted by another is a comparison of two different statistics. Reading one source's series against its own history keeps the units consistent.

Max pain, the neighbouring statistic

Max pain is the strike at which the largest total dollar value of open contracts would expire worthless. It is computed from open interest alone, with no volatility model and no dealer-side assumption, and it names a price rather than sizing a flow. The two get quoted side by side around monthly expiries and answer different questions: max pain points at a strike, gamma exposure sizes a hedging bill.

What practitioners actually use

Open-source GEX and positioning dashboards are common on code-sharing sites, and reading one is the fastest way to see these assumptions made concrete. The chain snapshot, the model inputs, the sign convention and the aggregation step all sit in a few hundred lines. As of July 2026 several such projects are actively maintained, and the ones worth the time state their volatility source and their dealer-side convention up front. A number whose derivation is not published cannot be checked. Traders reading GEX alongside flow often pair it with unusual options activity and the wider option Greeks.

Gamma exposure FAQ

What does positive gamma exposure mean?

Positive GEX describes an estimated dealer book that gains delta as the underlying rises and sheds it as the underlying falls. Keeping that book hedged means selling into strength and buying into weakness. Practitioners describe the condition as dampening or pinning; it is a description of a hedging rulebook, not a price forecast.

What is the gamma flip point?

The gamma flip is the underlying price at which a GEX model's aggregate estimate crosses from positive to negative. Above it the modelled hedging flow runs opposite to the move, below it the flow runs with the move. The level moves whenever the open interest, the volatility surface, or the model's assumptions change, so two publishers rarely quote the same flip.

Where does the open interest behind GEX come from?

Open interest is published once per trading session from clearing data after the close: the number of contracts outstanding at each strike and expiry. It carries no indication of which counterparty is long or short, which is the single largest assumption in any GEX calculation.

Is gamma exposure the same as a gamma squeeze?

No. Gamma exposure is a standing estimate of hedging sensitivity across a whole book. A gamma squeeze is a narrative applied to a specific episode of rapid buying in a single name where hedging flow is one of the moving parts. GEX is a measurement attempt; the squeeze label is a description of an event after the fact.

Can GEX be calculated for a single stock?

Mechanically yes, the same sum runs on any listed chain. The estimate gets noisy fast on thin chains, where a small number of strikes and wide implied-volatility marks dominate the total. On the July 2026 session above, same-day volume outside the index products fell away quickly past the top few single-name roots.


Every panel above is a stored query with its SQL one click away. Run the same scan over any chain on the Strasmore terminal.