In my last post about the 14 year GEX backtest, I left one question open, does GEX (gamma exposure, how much hedging the option dealers have to do when the index moves) add anything beyond VIX? GEX did say something about tomorrow, the range after negative gamma was bigger in both periods, but VIX is also high on those days, and an earlier look of mine found about two thirds of GEX’s link to calm days is just “VIX is low”. So I wrote down one more test, ran it on SPX option history from 2012, and this is what came back.
Short answer first, it looked great for ten years, and then it did not hold. ❌
The test
I need something where the market has already given its own forecast, so I can check whether GEX knows more than that forecast. The at the money straddle is a nice one,
- a straddle is buying a call and a put at the same strike, near the current index price
- it pays the size of the move, up or down, |close − strike|
- so its price is the market’s own guess of how far SPX will move until the close
If GEX knows something the price (and VIX) does not, it should show up in the straddle return, payoff ÷ price − 1.
Every session with a 0DTE (expires the same day) SPXW expiry, at 10:15 New York time, I read the GEX regime (positive, negative, or a dead zone too close to the flip), read VIX, priced the straddle at mid, and settled it at the close. No orders, measurement only. Two tests, written down before any run,
- S1, is the straddle return after negative gamma bigger than after positive gamma?
- S2, is it still bigger inside the same VIX bucket (low < 15, mid 15 to 20, high ≥ 20)?
Both need p < 0.05 (the chance of a gap this big if GEX meant nothing) with the gap in the predicted direction. Same split as before, build on 2012 to 2021, then run 2022 to 2026 once, on the same code, only the dates changed.
2012 to 2021, it looked like the answer
| Negative gamma | Positive gamma | |
|---|---|---|
| Sessions | 258 | 647 |
| Straddle return at mid | +9.3% | −6.9% |
| Bought at the ask, $1 per leg | +5.5% | −10.6% |
- S1, gap +16.2 points, p = 0.014 ✅
- S2, gap +15.8 points, p = 0.034 ✅
Holding VIX fixed barely moved the gap, 16.2 to 15.8, and it held in every VIX bucket, the biggest in high VIX (+14.0% vs −13.5%). In plain words, after negative gamma the straddle was too cheap, the day moved about 9% more than the price said, after positive gamma it was too expensive.
I really wanted to add more numbers at this point (win rate, median, worst day, “is more negative GEX better?”), but changing the code after seeing the dev result, even only adding a log line, makes the holdout less clean. So I saved the dev result, committed it, and ran the holdout first.
2022 to 2026, it did not hold
| Dev 2012 to 2021 | Holdout 2022 to 2026 | |
|---|---|---|
| S1 gap, p | +16.2 points, p = 0.014 | +3.4 points, p = 0.51 |
| S2 gap, p | +15.8 points, p = 0.034 | +3.9 points, p = 0.54 |
| Negative gamma, return at mid | +9.3% | −0.4% |
| Positive gamma, return at mid | −6.9% | −3.7% |
| Negative gamma, bought at the ask | +5.5% | −1.1% |
Both fail. The rule I wrote before running says, if S1 fails, the straddle price already includes what GEX knows. The negative gamma edge is just gone, −0.4% is basically a fair price, and after costs buying it loses a little.
This is not the same as “GEX is useless”. The range after negative gamma is still bigger, H1 passed in both periods in the last post. It is that the market prices it too, the straddle is more expensive on those days, about by the right amount.
Why it might have changed
These are guesses, I did not test any of them,
- from 2022 SPXW has a 0DTE expiry every day, and 0DTE volume grew a lot, more people trading exactly this contract may have priced the gap away
- the two periods are not the same kind of days, in dev 1,429 of 2,517 sessions had no 0DTE expiry at all (before 2016 only some days, later still not Tuesday and Thursday), in the holdout only 31 of 1,141
- p = 0.014 and 0.034 are not very strong, a result at that level failing on new data is quite common
I am not going to go back and tune the VIX buckets or the entry time on 2022 to 2026 to “find” it again, that data is now seen, it is just another dev set if I do.
Some smaller things
A mean is not a win rate. +9.3% sounds like “you win on negative gamma days”, it is not. In the first test month, 4 negative gamma days gave +21%, −69%, −35%, +177%, two out of four lost. A long straddle usually loses small and sometimes wins big, I never logged the win rate, it is likely below 50%.
The one month run first, again. Before the ten year run I ran November 2021 with a line per session, checked the strikes, quotes and payoffs by hand (strike 4605, close 4613.7, payoff 8.66), and only then the long runs. It is boring and it is the cheapest bug check there is.
Still open
- does more negative GEX (further below the flip) mean a bigger effect? Only the sign was tested here
- win rate, median, worst day and losing streaks, for both periods
- positive gamma straddles stayed slightly rich in both periods (−6.9%, −3.7%), selling premium only then is the obvious next idea, but the gap was not significant in the holdout, and selling 0DTE has the fat tail problem from the last post, 92.8% win rate and still losing
- the only fresh data left is the live study, it records the SPX option chain every session since end of July, anything new has to be confirmed there