Dealer Gamma Sets the Size of the Day — Not Its Direction
Most trading write-ups sell you a winner. This one is mostly about things that didn’t work — and why I think that’s the more useful story.
Dealer Gamma Sets the Size of the Day — Not Its Direction
Most trading write-ups sell you a winner. This one is mostly about things that didn’t work — and why I think that’s the more useful story.
I run automated strategies on a low-five-figure retail account: Python, Interactive Brokers for execution, ThetaData for options history. Over the last stretch I took two options strategies from idea to a real verdict, and a third (a trend-following futures system) had died before that. All three died the same death, and naming that death plainly is the single most valuable thing I can hand another retail trader. There’s also a genuinely clean empirical result buried in the second strategy that I haven’t seen stated crisply anywhere, so I’ll give that its own section.
None of this is investment advice. It’s a lab notebook.
The enemy, named up front
At retail scale, the binding constraint on almost every strategy is transaction cost, not signal. You can have a real, statistically present edge and still lose money every single year because the bid/ask spread and commissions are larger than the edge you’re harvesting. This sounds obvious written down. It is astonishingly easy to forget when you’re staring at a backtest equity curve that slopes up and to the right because you forgot to subtract what it actually costs to trade.
Everything below is a variation on that theme.
Strategy one: short volatility, done “carefully”
The first real project was a short-volatility book on SPY options, built to be as defensible as a short-vol strategy can be.
The premise is the variance risk premium: implied volatility tends to trade above subsequently realized volatility, because people pay up for protection. If you sell that premium you get paid on average. The problem is that naked short vol blows up — this is literally the trade that vaporized the XIV note in February 2018, down ~96% in a day. So I didn’t want naked short vol. I wanted to isolate the premium and neutralize the things that turn short vol into a crater.
The structure: sell a back-dated (~45 DTE) at-the-money straddle as the vega engine, buy a gamma-weighted slug of a front-dated (~10 DTE) straddle to flatten net gamma, and delta-hedge the whole thing continuously with micro futures. Net short vega, roughly gamma-flat, delta-neutral. In a normal contango environment it carries positive theta because the back-month vol you’re selling is richer than the front-month vol you’re buying.
Concretely, gamma-neutrality pins the leg ratio. To zero net gamma you hold n_front / n_back = Γ_back / Γ_front front straddles per back straddle; since gamma scales like 1/√T, the front leg has the larger per-contract gamma, so you buy fewer fronts than you sell backs. What survives that hedge is net short vega — vega scales like √T, so the back leg dominates — plus a carry term. Per unit of gamma, the daily carry is approximately
carry ≈ ½ · F² · Γ · (σ_back² − σ_front²)
positive when the term structure is in contango (σ_back > σ_front) and negative in backwardation (which is exactly when a vol spike hits you). So the thesis in one line: harvest the vol-term-structure spread while neutralizing the path-dependent gamma P&L and hedging spot delta to zero. Everything that's left is supposed to be the variance premium.
To test it honestly I had to build real infrastructure, not toy code:
- A Black-76 pricing and greeks engine (delta, gamma, vega, theta, plus the second-order vanna and volga), priced on the futures forward
F = S·e^{(r−q)T}rather than spot. The point of Black-76 here is consistency: the forward is the futures price I hedge with, so the model and the hedge instrument speak the same language and I never have to estimate a dividend yield separately. Greeks were checked against finite differences to ~1e-5 and put-call parity to ~1e-9. - An implied-vol solver (Newton with a bisection fallback for the wings) and a hedge layer that maps option delta to futures contracts:
contracts = −Δ$ / (multiplier · F), rebalanced whenever dollar-delta breaches a band. - A backtester that reconstructs the chain from real ThetaData quotes and imputes the underlying from put-call parity —
S = [K + e^{rT}(C − P)] · e^{−(r−q)T}at the most at-the-money strike — then marks the book bar by bar, rolls on DTE thresholds, re-hedges delta on a band and gamma once a day, and sizes the position as a fixed fraction of current equity (a target net vega of about −1.2% of equity per vol point) so the book delevers as it loses instead of spiraling. Critically, it charges a realistic cost model: the per-leg option half-spread on every entry, roll, and exit, plus a per-contract futures commission and slippage (roughly $3.74 round-trip on the micro contract). Costs are where most backtests lie, so this is the part I trust least to be generous.
Then I ran it across regimes, on the same frozen configuration, with no per-month tuning. Here’s the part that matters.
In the calmest month I could find (an ultra-low-vol stretch in 2017), the strategy made about +0.83%, net of costs. The premium is real. You can see it.
Then I ran four continuous years, 2016–2019, across calm, normal, and a genuine stress event (the February 2018 vol spike sits right in the middle of the sample). The cleanest, lowest-turnover variant returned −18.7% over the four years, negative in every single year — including the calmest year on record, where it lost ~3.4%. Higher-turnover variants lost 70–80% as transaction costs compounded. Same edge, scaled up to a running system, eaten alive.

The lesson is in the second column. If a short-vol book can’t make money in the single calmest year in market history, the premium it harvests is smaller than the cost of harvesting it. The gross edge is roughly +0.8%/month in benign conditions; the cost of continuously running two-legged option structures plus futures hedging is larger. The tails (down 20%+ in a stress month) then do the rest.
A drawdown stop made the stress months survivable — it turned a −67% Volmageddon path into something closer to −8% in the best variant — but a stop helps you survive a tail; it cannot create an edge. The verdict was clean and negative: as a continuously managed, delta/gamma-hedged book on liquid SPY options, this doesn’t clear costs at retail scale. I shipped the engine to the “useful tools” pile and moved on.
A side note worth its own sentence, because it took me embarrassingly long to internalize: real data breaks things synthetic data never will. My greeks engine, validated to nine decimals against finite differences on synthetic chains, blew up on real chains — degenerate quotes that produced zero or NaN implied vol, near-flat term structures that made the position sizer demand thousands of contracts, single bad prints that booked five-figure phantom P&L. Every one of those bugs was invisible until real ticks hit the code. If your backtester has only ever seen clean simulated data, you don’t have a backtester yet.
The pivot principle: separate the edge from the expression
Here’s the idea that reframed everything after the short-vol post-mortem.
A trading strategy has two parts that we habitually glue together: the edge (the thing you believe predicts something) and the expression (the instrument you trade to act on it). When the expression is expensive — like multi-leg SPY option structures with wide spreads — costs can kill a perfectly good edge.
But the edge and the expression don’t have to live in the same instrument. If I can compute a signal from the options market but act on it in the cheapest liquid instrument available — micro S&P futures, at roughly a couple of dollars round-trip — then the options-derived edge no longer has to pay the options-sized toll. That single decoupling is, I suspect, the difference between a lot of “interesting backtests” and a lot of strategies that actually clear costs.
Which led directly to the second project.
Strategy two: dealer gamma exposure (GEX)
Dealer gamma exposure is one of the few options concepts where the gamma itself is the proposed edge, rather than just the mechanics of your position.
The story: market makers hold inventory from customer options flow, and you can estimate the aggregate dealer gamma position from open interest across strikes (the standard convention assumes dealers are long call open interest and short put open interest). Concretely, I compute the dollar gamma exposure at a spot level S as
GEX(S) = Σ_k s_k · Γ_k(S) · OI_k · M · S² · 0.01
summed over every listed contract k, where Γ_k is the Black-76 gamma I compute from that contract's own implied vol, OI_k is its open interest, M = 100 is the contract multiplier, the S² · 0.01 rescales it into dollars of delta-change per 1% move, and s_k = +1 for calls, −1 for puts (that's the long-call/short-put dealer convention doing the work). The gamma flip is the spot S* where GEX(S*) = 0; above it dealers are net long gamma, below it net short. The behavioral claim that follows is twofold:
- When dealers are net long gamma, they hedge against moves — selling rallies, buying dips — which suppresses volatility and, the folklore says, pins price and makes it mean-revert toward big strikes.
- When dealers are net short gamma, they hedge with moves — buying rallies, selling dips — which amplifies volatility and, the folklore says, makes price trend.
The spot level where aggregate dealer gamma flips sign is the “gamma flip”; the big-open-interest strikes are “walls.” There’s an entire cottage industry built on these levels.
The cost-smart design was obvious given the pivot principle: compute the GEX regime from SPY option open interest, but express the trade in micro futures, not options. The edge lives in the positioning data; the execution stays cheap.
I built a GEX engine on top of the greeks code from project one — per-strike dealer gamma, the aggregate dollar-gamma profile across a spot grid, the flip level, the walls — and a puller that grabs end-of-day open interest plus a closing quote for every near-the-money strike, back to 2016, computing my own implied vol and gamma from the quotes.
And then, before building any trading logic at all, I did the thing the short-vol project taught me to do: I validated the signal first.
The discipline: test the signal before you build the strategy
The honest first question is never “how do I trade this.” It’s “does this predict anything at all?” — answered with a few conditional statistics, not a full backtest. If dealer-gamma regime doesn’t predict next-day behavior, no execution cleverness will save it, and I find that out for the price of one data pull instead of a month of strategy engineering.
So I bucketed every day by its dealer-gamma regime and asked two separate questions, with explicit statistics on the daily return series r_t:
- Magnitude: are negative-gamma days bigger? Measured by mean
|r_{t+1}|and intraday range(High − Low)/Openper regime. - Direction: are negative-gamma days trendier and positive-gamma days more mean-reverting, as the folklore claims? Measured by the lag-1 autocorrelation
corr(r_t, r_{t+1})within each regime, the continuation statisticmean(r_{t+1} · sign(r_t)), and — the cleanest of the three — an intraday trend-efficiency ratio|Close − Open| / (High − Low), near 1 when price travels in one direction (trend) and near 0 when it wanders and returns (oscillation/pinning).
These are genuinely different questions, and conflating them is, I think, the central confusion in popular GEX commentary.
Result one: gamma predicts the size of the day, cleanly
This part of the story is true, and it’s strong. Sorting ~1,000 trading days into quintiles by aggregate dealer gamma, the intraday range falls monotonically as you move from the most-negative to the most-positive gamma regime:

Deep-negative-gamma days run about twice as wide as deep-positive-gamma days, and the relationship is monotonic across all five buckets — no reversals. I got the same answer three independent ways: next-day mean absolute move (0.76% in negative-gamma regimes vs 0.39% in positive), next-day realized vol, and intraday range. Dealer gamma is a real, robust volatility-magnitude forecaster. That’s not controversial, but it’s nice to confirm it cleanly on your own data.
Result two: gamma predicts nothing about direction
Now look at the last column of that table — the trend-efficiency ratio |Close − Open| / (High − Low) defined above. A value near 1 means price traveled in one direction (it trended); a value near zero means price wandered and came back (it oscillated or pinned). This is the column that tests the directional folklore.
It’s flat. 0.509, 0.510, 0.486, 0.443, 0.507 — hovering around 0.5 in every bucket, with the two extremes (most-negative vs most-positive gamma) essentially identical. There is no oscillation-versus-trend separation. I confirmed it a second, independent way with next-day return autocorrelation, which was also flat to slightly negative in both regimes (about −0.07 in negative-gamma, +0.03 in positive — both indistinguishable from noise, and if anything faintly opposite to the folklore).
The cleanest way I can state the finding:
A negative-gamma day is a bigger random walk, not a trendier one.
Dealer gamma scales the step size of the day. It adds no directional persistence. The larger net moves on negative-gamma days aren’t extra trend — they’re just the larger range multiplied by the same ~0.5 efficiency you see everywhere else. The “negative gamma means it trends, positive gamma means it pins” claim, which gets repeated constantly, simply did not survive in my data — and I looked hardest exactly where it should be strongest, at the gamma extremes.
That kills the strategy I set out to build. The whole point of expressing the signal in micro futures was to take a directional regime bet cheaply. Futures are a directional instrument; they need to know which way. The thing GEX predicts (how big) doesn’t tell you which way, and the thing I needed (which way) isn’t there. No directional alpha, established with two cheap studies and zero full backtests.
What actually survives
The volatility-magnitude result is genuinely useful — just not as standalone alpha. A signal that reliably flags “tomorrow is likely to run about twice as hot” is a risk and position-sizing overlay, not a money machine: when dealers are deep short gamma, expect a wider range, so size down and widen stops; when they’re long gamma, the tape is calm and you can lean in. It requires no extra trading, so costs never touch it, and it sits cleanly on top of whatever else you’re running.
The only path to direct alpha from the surviving result would be to trade the volatility forecast against implied vol — does GEX predict realized vol beyond what option prices already charge? Maybe. But that means trading options again (the cost wall), and the entire street watches GEX, so the odds it’s already in the price are high. I haven’t run that test yet; I’m flagging it as the one open thread, with appropriate skepticism.
The meta-lessons (the actual payload)
If you take nothing else from this, take these.
Costs are the assassin. Both options strategies harvested a real, measurable edge and lost money anyway, because the edge was smaller than the cost of capturing it. Before you fall in love with a signal, estimate what it costs to trade it at your size, and subtract that first.
Validate the signal before you build the strategy. A few conditional statistics — does the predictor actually predict? — cost almost nothing and can save you weeks. I learned this the expensive way on strategy one and the cheap way on strategy two. The discipline saved me from building an entire directional GEX system on an effect that isn’t there.
Separate the edge from the expression. The instrument that generates your signal does not have to be the instrument you trade. Decoupling them is sometimes the only way an edge survives costs. It’s also, I’d argue, an underused source of genuinely new strategies.
Honor negative results. “This doesn’t work, and here’s the number that proves it” is a finding, not a failure. It’s also most of what real research produces. The trader who cheaply rules out ten dead ends is ahead of the one who expensively half-convinces themselves of one.
Beware the seduction of one more parameter. The fastest way to manufacture a fake edge is to add a knob and tune it until last month looks great. I caught myself doing exactly this — improving a stress-month result by adding a stop — and had to consciously stop tuning against a single month. If a number only looks good after you’ve fit it to the data you’re testing on, you’ve discovered nothing.
Caveats, honestly
Single underlying (SPY). In-sample window roughly 2016 through early 2020; I did not include the full COVID-2020 period in the GEX study, partly because the highest-volume days are brutal to pull and partly because four prior years across multiple regimes already answered the question. The dealer-gamma sign convention is a heuristic — you cannot actually see dealer books, and the explosion of zero-DTE trading has shifted where intraday gamma lives in ways a daily open-interest snapshot misses. My intraday range/efficiency used 30-minute sampling, which understates true high-low (the bias is constant across buckets, so the flatness of the efficiency result holds, but the absolute level is soft). And the cost models, while realistic, are modeled, not the scars of live fills. Treat all of it as one practitioner’s evidence, not gospel.
The point
After three strategies and a lot of engineering, my net P&L from these specific ideas is roughly zero, and I consider the project a success. I built a validated options pricing-and-backtesting stack I’ll reuse for years, I confirmed a clean empirical fact about dealer gamma (it sets size, not direction), and I ruled out two plausible-sounding edges cheaply and honestly before they could cost me real money.
In retail quant research, that’s most of the job: figuring out what doesn’t work, as fast and as honestly as you can, and keeping the tools you built along the way. The winners, if they come, come from the same discipline — and you’ll trust them more because you know exactly how many things you killed to get there.
메타데이터
- post_id
- 3ddcc6541c81
- slug
- dealer-gamma-sets-the-size-of-the-day-not-its-direction-3ddcc6541c81
- url
- https://medium.com/@gopiponneganti/dealer-gamma-sets-the-size-of-the-day-not-its-direction-3ddcc6541c81
- canonical_url
- https://medium.com/@gopiponneganti/dealer-gamma-sets-the-size-of-the-day-not-its-direction-3ddcc6541c81
- author_url
- https://medium.com/@gopiponneganti
- status
- ok
- fetched_at
- 2026-06-20 20:29:01