The forward test
We bought a year of options data and tested our own screener against a placebo, before we looked at the outcome. Most of what we tested came back flat. This page has every table.
Last updated 2026-09-07. Full method and every number: docs/gex-level-expiry-study.md in the repo.
What the product is
Where the options money is sitting, on every US stock, screenable, all day. Pick a ticker, see which strikes hold the most contracts, how big, calls or puts, which expiry. Screen the whole market by it.
What the number is
Every level on the screener comes from one calculation, per strike: gamma times open interest times spot price squared. Calls count positive, puts count negative. We do not split the total between buyers and sellers, because open interest does not record which side either one is on.
The options chain data comes from TastyTrade. It refreshes every 15 minutes while the market is open.
The forward test
The design was fixed before we looked at a single outcome. For every stock, every trading day of 2025, we took the call wall above the price and the put wall below it, each between 0.5% and 10% away. For each real wall we built a fake level the same distance away on the opposite side of the price. Chance alone puts a real wall and its fake pair at 50.0%, because the fake one is a mirror image.
Next day, which one did the price end up closer to?
| Measure | Real wall | Fake level (chance) |
|---|---|---|
| Price landed closer to it | 49.9% | 50.0% |
| Price crossed it while moving toward it | 17.0% | 17.2% |
1,047,940 wall-days, all of 2025, 261 trading days.
The result did not move in any slice we checked: thin names or liquid ones, close walls or far ones, clear walls or close calls between two strikes, round-number strikes or not, either sign of net gamma, single stocks or ETFs. It stayed flat when we used the biggest gamma strike either side instead of the wall, and flat again using max pain or the center of gamma mass. It was flat in the 25 most-traded names too, at 50.4%.
Because one trading day moves thousands of tickers together, we also clustered the result by day rather than by ticker. The 95% band across 258 trading days is 48.4% to 50.0%. That band sits on the chance side of the line, not above it.
The one exception: expiration day
Tested the same way, on the biggest-gamma strike of the nearest expiry, measured the day before that expiry:
| Measure | Expiring wall | Fake level |
|---|---|---|
| Landed closer to it the next day | 50.7% | 49.3% |
| Crossed while moving toward it | 37.5% | 38.2% |
| Closed within 0.5% of it on expiration day | 10.9% | 10.2% |
45,130 events.
This is the one place in the whole test where the real level beat its fake pair on every measure, by about 0.7 percentage points, which is roughly three standard errors on this sample. It is small. Acting on it is right about one time in a hundred more than acting on nothing.
The index products
Intraday, SPY, all of 2025
Using real 1-minute bars instead of daily closes, the level SPY traders watch (the biggest-gamma strike of tomorrow's expiry, fixed at tonight's close) was touched on 22 of 202 eligible sessions. A plain neighbouring strike, chosen the same way, was touched on 21 of 200. On the sessions where both were touched, price moved back off the real level less often than off the fake one, at 15, 30 and 60 minutes afterward. 22 touches is a small sample: this is "we found nothing," not "we proved there is nothing to find."
Move size, not which way it moved
One thing did not wash out. On SPX, SPXW, SPY and QQQ, treated separately, a more negative net gamma reading went with a bigger move in the stock the next day, even after removing the VIX level, the stock's own implied volatility, and known event windows like FOMC and monthly expiration. The correlation sits around -0.19 to -0.21 on all four, about three standard errors from zero, and it held up across seven separate controls, including one that dropped every day touched by the April 2025 shock.
Its boundary matters more than the number: it shows up on SPX, SPY and QQQ only. IWM, DIA, RUT and NDX all sit inside their own noise bands, showing nothing. On individual stocks the same measurement comes back at about one eighth the size. The test only covers 2025, we cannot point to a mechanism that would explain why one index shows it and another does not, and it has not been checked against a second year yet. We are not putting this in the product, or telling anyone to act on it, until it holds up on 2024 data as well.
Where this study is weak
- One year of data, one market regime, with a large shock in April. Every number on this page could be specific to 2025.
- The gamma figure is the plain textbook one: open interest times gamma, no attempt to work out which side of each trade a dealer was actually on.
- The intraday counts are small: 22 touches on the level SPY traders watch, 13 on the wider set of walls. Too few to call the result settled either way.
The three rules we hold ourselves to
- We never say, or suggest, what price will do next.
- We only report what a level shows about positioning, never a guess at what the people holding it were thinking.
- We do not treat a level as meaningful on its own, without also showing the volume and the quotes that sit behind it.
The card

1,047,940 wall-days, January to December 2025, 261 trading sessions.