Research

A rate without an interval is not a number

Our first backtest printed 35.0% against 31.5% and invited a conclusion it had no standing to support. Here is what went wrong and how we fixed the claim.

Measured September 9, 2026

The mistake

The first version of our breach backtest reported that a put placed under one condition was traded through 35.0% of the time, and under another 31.5%. Three and a half points apart, over more than a million rows. It looked decisive. We nearly acted on it.

It was noise. The rate was computed over entries opened on every session across a 24-day hold, which reuses the same stretch of price action about seventeen times. A million rows was never a million observations — it was roughly sixty-six thousand wearing costumes.

Why a big number can be a small sample

Two things break independence here, and both survive any amount of extra data:

Overlap. Entries opened on consecutive days share nearly all of the price history that decides them. Sampling more often does not add information; it adds copies.

One market. Eight hundred names do not move independently. A single bad October is one observation, not eight hundred — and in thirty years of history there are only a few dozen genuinely independent stretches of market.

Rebuilt to enter once per monthly expiration per name, the same twelve years give 66,858 entries across 774 symbols and 124 months — a number that finally means something, because it counts decisions rather than recomputations of the same decision.

What we do instead

Rates now carry an interval produced by a block bootstrap that resamples calendar months rather than individual entries. Every trade opened in a sampled month travels with it, which keeps both kinds of dependence intact: the overlap between neighbouring entries, and the correlation across the whole market on the same day.

What comes out is the range a rate would span if history had dealt a different sequence of months. It is seeded, so two runs on the same data print the same interval and a change in the output means a change in the data.

What it changed

Two results from the same data set, once the intervals were attached:

The cushion separates. A put placed 0–5% below spot was traded through 39.5% of the time; one placed 25–30% below, 21.8%. The intervals are clear of each other. Distance from the strike does the work you would expect it to.

The trend factor does not. Candidates scoring 0–20 on trend safety were traded through 35.5% of the time; those scoring 80–100, 31.7%. The intervals overlap — including within a single cushion band. That is fifteen points of our scoring model with no measured effect on how often a strike gets reached.

We have not removed the trend factor, and the reason is in the caveat below: breach frequency is not return. But we no longer describe it as protective, and the honest position is that it has not earned its fifteen points on the only question this data can settle.

The rule we took from it

Never quote a rate from overlapping data without its interval. A difference that survives the resampling is worth acting on; one that does not is a story about a sample, and it will be told with total confidence by anybody who only sees the point estimate.

What this does not show

A confidence interval fixes a claim of precision. It cannot fix a bias — the universe here is what is tracked today, so names delisted along the way are absent, and delisting is not a neutral event for somebody short puts. The strike is modelled too. Neither of those gets narrower with more data.

Every gate, factor, weight and curve behind this is on the methodology page, and every pick the model has published is on the track record.

Research and education, not investment advice. No result here is a forecast. See the disclaimer.