Research

The S&P's Put Skew Forecasts Volatility at 0.4833 and Direction at 0.0166

The 25-delta put trades 6.50 volatility points above the 25-delta call across 1,848 sessions of our own SPY chain. Against the next ES session's direction that skew scores r = 0.0166 at p = 0.4762; against the realised volatility of the following 21 sessions it scores 0.4833 with p rounding to zero. The term structure behaves the same way: r = −0.5742 against the next session's range, and no tradeable split, with backwardation sessions paying $2.56 at t = 0.02 and contango sessions $58.65 at t = 1.27. Both shapes are volatility forecasts sold as direction warnings.

The 25-delta put on SPY trades 6.50 volatility points above the 25-delta call. Both the steepness of that skew and the slope of the volatility term structure are sold as warnings about what the market is going to do next. On 1,848 sessions of our own option chain against the next ES cash session, neither one predicts direction, and both predict volatility.

Skew against the next session’s move scores r = 0.0166. Skew against the realised volatility of the following 21 sessions scores 0.4833. That gap is the whole article.

This is the second piece from the same test run. The first covered the variance risk premium and found it was not there: the S&P’s variance risk premium is zero. This one takes the other two shapes of the surface.

The data

The options half of this series runs on our own OPRA recording, one row per contract per session, with the exchange’s greeks, open interest and volume. The chain store starts in 2019, so this is a seven-year test against the twelve and a half years of ES ticks the rest of the series uses. Where the extra five years carry a finding in this series we say so. Here they do not exist, and no claim below reaches back past 2 January 2019.

Two limits are load-bearing and both are repeated in the method line.

  • Open interest is a daily OCC figure, so anything derived from it describes the state at the start of a session, not intraday.
  • Sessions after 29 May 2026 are excluded. The recorder’s last snapshot of the day is sometimes a truncated post-close chain, which breaks the ATM reference. Those rows are dropped rather than quietly averaged in.

The rule

  • Skew is the implied volatility of the 25-delta put minus that of the 25-delta call, from the recorded chain, in volatility points.
  • Term structure is three-month ATM implied minus one-week ATM implied. Positive is contango, negative is backwardation.
  • Both are measured at the session’s chain snapshot and correlated against the next ES cash session: its open-to-close move, its absolute move, its high-low range, and the realised volatility of the following 21 sessions.
  • For the traded versions, sessions are sorted into five equal skew buckets and, separately, split on the sign of the term structure. Each bucket is simply long the next ES cash session, open to close, one contract.
  • Every traded line carries costs. Nothing below is a gross number.

Skew predicts one thing, and it is not the thing it is sold for

Three correlations, same variable, same 1,848-session window.

Skew againstrpn
Next session’s move (signed)0.01660.47621,848
Next session’s absolute move0.25120.00001,848
Realised volatility, next 21 sessions0.48330.00001,828

The first row is the claim everybody makes, and it is a coin. A p-value of 0.4762 means the sign of that 0.0166 is not stable enough to name.

The third row is the one worth keeping. Skew explains a real share of the volatility of the following three weeks, which is a longer horizon than most of what this series measures and a more honest one for an option-derived number. A skew reading is, after all, a price for a three-week hedge. It should know something about three weeks of volatility. It has no business knowing which way the index goes, and it does not.

This is now the fourth quantity in this series to behave exactly this way. Dealer gamma did it, ATM implied volatility did it, session volume did it, and now skew does it. Each was presented to us as a direction tool, each turned out to be a decent volatility forecast, and each scored somewhere between −0.02 and 0.02 against direction. The pattern deserves a name, so here it is: on a daily bar, almost everything that appears to work is a volatility signal. Volatility is persistent and direction is not. Any measurement that picks up persistence will look impressive against an absolute-value target and will look like noise the moment you restore the sign.

The traded version of the skew warning

If a steep skew warns of a drop, the steepest bucket should lose money on a long. Five buckets, each long the next session, costs in.

BucketSessionsMean skewWin rateAverageTotalPFSharpet
Flattest3703.20 pts53.2%+$0.87$322.501.0020.010.01
23694.71 pts55.0%+$22.80$8,414.501.0400.220.26
33706.01 pts52.7%+$89.18$32,997.501.1490.820.99
43697.44 pts52.6%−$34.21−$12,623.000.948−0.30−0.36
Steepest37011.14 pts55.7%+$58.03$21,472.501.0620.330.40

There is no ordering here. The averages go up, up, up, down, up. The best bucket is the middle one, which is where nobody claims an edge lives, and even that is t = 0.99. Not one of the five is significant.

The steepest bucket is the interesting failure. Mean skew there is 11.14 volatility points, roughly three and a half times the flattest bucket, and those are the readings that get screenshotted with a warning attached. Being long into the next session after those readings paid +$58.03 a session at t = 0.40. The market went slightly up after the scariest skew prints, and t = 0.40 says that slight rise is a coin. Both halves of that sentence matter. The warning is not merely weak. It is not even pointing the right way.

The term structure, same story, larger number

One-week implied against three-month implied, on 1,592 sessions with a next session to measure. The curve is in contango 66.0% of the time, which is the expected shape and matches what index-level VIX term data has always shown.

Term structure againstrpn
Next session’s range−0.57420.00001,592
Next session’s move (signed)−0.04940.04871,592

The first is the largest single correlation in this test run, and its sign is the intuitive one. A negative term reading is backwardation, near-dated implied above far-dated, and it comes with a wider next session. That is a good volatility forecast and we will treat it as one.

The second number needs care rather than celebration. It sits at p = 0.0487, just under the conventional threshold, and it is one of roughly a dozen correlations we ran across this article and its companion. At that count, one result landing just inside 0.05 is what chance produces on its own, and a magnitude of 0.0494 explains under a quarter of one percent of the variance in the next session’s move. We do not treat it as a finding, and we would not size a position on it if it were three times larger.

The traded version of the curve

Long the next session, split on the sign of the curve, against the baseline of being long regardless.

BackwardationContangoEvery session
Sessions5401,0511,592
Win rate53.3%54.5%54.1%
Average+$2.56+$58.65+$39.43
Total$1,382.50$61,645.50$62,773.50
Median$170.50$120.50$126.75
Profit factor1.0031.1141.060
Max drawdown$47,855.00$37,284.00$45,291.50
Sharpe0.020.620.32
t0.021.270.79
p0.98240.20320.4285

Read honestly, that table says one thing: contango sessions look better than backwardation sessions, and neither clears significance. Contango at t = 1.27 is not a result. Backwardation at t = 0.02 is a flat line with a drawdown of $47,855.00 attached.

The baseline finishes the argument. Long every session made $62,773.50, and the contango-only version made $61,645.50 of it. Contango is two thirds of all sessions, so the “signal” version is very nearly the baseline with a third of the sample removed. The Sharpe does improve, 0.62 against 0.32, and that improvement is exactly what you would expect from dropping the noisier third of a mildly positive drift. It is not evidence that the curve told you when to be in.

We have been here before with the index version of the same idea. We concluded a while ago that the VIX against VIX3M ratio is a stress indicator rather than a timing signal, and we stopped using it for entries. This is that conclusion measured a second time, on our own chain instead of on an index of an index, with 1,592 sessions and costs deducted. The answer did not change.

What both shapes are actually good for

Neither of these is a null result in the useless sense. They are misfiled tools.

Skew’s 0.4833 against three weeks of realised volatility is a genuinely useful number. If you are sizing a position over the next month, pricing a hedge, or setting a stop distance that should scale with conditions, a variable that explains that much of the coming volatility earns a place in the model. Term structure’s −0.5742 against the next session’s range is a better single-day number than most things on a screen, and it survives against the same benchmarks that have beaten most of what we tested this year.

So we keep both, and we keep them in the right drawer. Skew and term structure go into the volatility feature set, next to dealer gamma, ATM implied volatility and yesterday’s range, where they can inform how large a position is. Neither becomes a signal. Neither gets a sleeve. Neither is allowed to tell anyone which way to lean, because on 1,848 sessions of measurement neither one knows.

The same conclusion, arrived at from three different directions, sits in the dealer gamma test and in the entropy test.

The ES archive this ran against is for sale — ticks back to 2014, from which every cash session here was built — in the historical data packages.

Methodology: SPY option chains from our own OPRA recording, one row per contract per session with the exchange’s greeks, open interest and volume, joined to ES cash sessions built from our own tick archive, 09:30–16:00 New York. The chain store starts in 2019, so the window is 2 January 2019 to 29 May 2026 — seven years, against the twelve and a half years of ES ticks the rest of this series uses. 1,848 sessions carry a skew reading and a next session; 1,592 carry a term-structure reading and a next session. Skew is 25-delta put implied minus 25-delta call implied; term structure is three-month ATM implied minus one-week ATM implied. Two limits apply: open interest is a daily OCC figure, so anything derived from it describes the state at the START of each session and not intraday; and sessions after 29 May 2026 are excluded because the recorder’s last snapshot of the day is sometimes a truncated post-close chain from which the ATM reference cannot be built. Correlations are Pearson, two-sided p. Traded lines mark the next session’s open-to-close move at $50 per ES point on one contract, with the series cost convention of $4.50 commission plus two ticks per round trip, $29.50, deducted from every trade.

Frequently asked questions

Does a steepening put skew warn that the market is about to fall?

No. Across 1,848 sessions the correlation between skew and the next ES cash session's open-to-close move is 0.0166 at p = 0.4762, which is nothing. Traded directly, the steepest-skew quintile made +$58.03 a session at t = 0.40 — the market drifted slightly up after the scariest readings, not down.

So is skew useless?

It is useful, but for a different job. Skew correlates 0.4833 with the realised volatility of the following 21 sessions, and 0.2512 with the next session's absolute move, both at p rounding to zero. That makes it a volatility forecast worth carrying in a sizing or hedge-pricing model.

How often is the S&P volatility curve in contango, and does it matter?

The one-week against three-month curve is in contango on 66.0% of the 1,592 sessions measured. Contango sessions returned +$58.65 a session at t = 1.27 and p = 0.2032; backwardation sessions returned +$2.56 at t = 0.02 and p = 0.9824. Neither clears significance, so there is no timing rule in the split.

Does an inverted volatility curve predict a wider day?

Yes, and strongly. Term structure correlates −0.5742 with the next ES cash session's range at p rounding to zero, so a curve in backwardation comes with bigger ranges. Against the next session's direction the same variable scores −0.0494, which we do not treat as a finding.

Would trading the curve have beaten simply being long?

No. Long every one of the 1,592 sessions made $62,773.50 at Sharpe 0.32. The contango-only version made $61,645.50 at Sharpe 0.62 while sitting inside that same result, because contango is two thirds of all sessions. Costs of $29.50 a round trip are deducted from every line.

Keep reading

Research

Absorption Carries Nothing on 247,090 S&P Bars

We graded absorption on twelve and a half years of ES five-minute bars using the exchange's own aggressor flag, splitting every bar into five strength buckets instead of a threshold. The most-absorbed fifth pays +0.0108 points against the pushing side over the next 30 minutes, at t = 0.23 and p = 0.8211. Effort correlates 0.4226 with the same bar's range and −0.0018 with what the next six bars do. Trading the strongest 5% of readings lost $164,275.39 fading the pusher and $142,213 following it, on 8,311 trades each.

Research

A Random Anchor Beats Three of the Four Meaningful Ones on ES

We ran anchored VWAP on 12.5 years of S&P 500 futures with five different anchors and nothing else changed. All five make money and all five clear significance, from t = 4.53 to t = 7.65. But an anchor placed at a bar drawn at random pays +$30.05 a trade against +$23.99 for the average of the four meaningful anchors, a difference of −$6.06, and only 1 of the 4 beats it. The two anchors the literature recommends most, the swing high at +$13.25 and the swing low at +$19.35, are the two worst columns in the table.