Alphanume

Insights

Backtesting SPX 0DTE Iron Condors Against the Daily Strike Band

Alphanume Team · July 1, 2026

How to test a 0-DTE iron condor honestly: anchor it to a published, never-revised strike band, measure how often the band actually contains the close, and then attack your own result before believing it.

Most 0-DTE iron condor backtests fail before the first trade is simulated, because the strikes are chosen with hindsight. Pick short strikes as "one standard deviation from the open" computed off a volatility estimate you tuned after seeing the data, and you are testing a trade nobody could have placed. The result looks great, and it is fiction.

The fix is to anchor the condor to something that was published at a known time, in writing, and never changed afterward. That is exactly what the Alphanume SPX 0DTE Strike Band provides: every trading day at 10:30 AM Eastern, the model publishes a lower strike and an upper strike for the S&P 500, the range it expects SPX to stay inside through the 0-DTE close. Once published, a day's band is never revised. That single property is what makes an honest backtest possible.

If you are still getting comfortable with the instruments themselves, start with what an iron condor is and how 0-DTE options work, then come back. This post is about the test.

The structure under test

A band-anchored iron condor places itself. Sell a call spread with the short strike at the band's upper edge, sell a put spread with the short strike at the lower edge, and buy insurance legs some distance beyond each. Four legs, premium collected from both sides, maximum profit if SPX finishes anywhere inside the published range.

The band gives you the two short strikes. It does not give you the wing, the distance to the bought legs. That parameter is entirely yours, and it is the risk dial of the whole trade: a narrow wing means a small maximum loss but expensive insurance, a wide wing keeps more premium but exposes you to a deeper loss when the band breaks. There is no correct wing printed anywhere, which makes it the first thing to vary in any backtest. The Condors, Butterflies, and Verticals lesson in Alphanume Learn walks through the full structure, plus the butterfly and single-sided variants built on the same two strikes.

Separate the two questions

A condor backtest is really two studies stacked on top of each other, and mixing them is how people fool themselves.

  • Containment: how often does SPX close at or inside the band? This is a property of the band itself: one row per session, a yes or no per row, a rate over the sample.
  • Expectancy: does selling the condor make money? This depends on containment plus the premium collected, the wing you chose, and costs.

Containment is the cleaner study, so run it first. The test per session is one line: lower_strike <= spx_close <= upper_strike. Count contained days, divide by total days, and the rate falls out. One honest wrinkle: the band endpoint returns a date, two strikes, and an instrument field, nothing else. There is no SPX price series in the payload, so a real containment study joins the band history to a daily SPX close series from your broker or an index data provider. The join is one line of pandas; sourcing the series is your side of the work.

The Measuring Containment lesson runs this exact study as a guided exercise, using the four-step research loop: hypothesis, data, measurement, attack.

The look-ahead trap specific to this dataset

Point-in-time discipline cuts both ways. The band's history is honest because every row is exactly what the model said at 10:30 on its own day, frozen. But the band does not exist before 10:30, so any strategy built on it can only act from 10:30 onward. A backtest that enters the condor at the 9:30 open using that day's band has manufactured the exact look-ahead bias the dataset was designed to prevent. It tests a trade nobody could have placed, which is the same sin as hindsight strikes wearing a different costume.

So the honest simulation enters at or after 10:30, holds to the cash settlement at the close, and prices the legs from a real option chain at entry time. The band tells you where to sell; option prices come from your broker's chain, not from the dataset.

A high containment rate is not a green light

Suppose your study comes back with a containment rate in the mid-80s. Before selling anything, turn adversarial. Four attacks matter most:

  • Containment is not expectancy. A condor seller wins small on contained days and loses large on breaks. Whether the strategy makes money depends on whether the premium collected on the quiet days outruns the losses on the breaks, after wings and costs. A high containment rate with violent breaks can still be a losing trade.
  • Check how the breaks cluster. The same break count spread evenly across the sample is one world; concentrated in a single ugly week is another, and short-vol strategies die in the second world. Split the sample by regime.
  • Closing inside is not staying inside. A close-based containment rate measures what a held-to-expiration structure settles against. A live condor can be pierced intraday, forced into a defensive exit at the worst price of the day, and still close back inside the band. If your rules manage positions intraday, a close-based rate flatters them. State which version you measured.
  • Full-sample averages go stale. One number smears years of calm together with whatever this quarter is doing.
Rolling containment: the band's health meter

The useful upgrade on the full-sample rate is a moving window: compute containment over the trailing 20 sessions and read it as a time series. When rolling containment is high, the band has been doing its job and containment sellers are operating in a friendly regime. When it slides, the model is being broken repeatedly, and that is advance warning that the current volatility environment is not the one these structures were built for.

That turns the backtest output into a live sizing layer rather than a one-time verdict: full size when recent containment is strong, scaled down or flat when it deteriorates. Nothing about a falling rate implies the band is "due" to start holding again.

What a minimal, honest backtest looks like

Put together, the procedure is short enough to write on a card:

  • Pull the full band history from the SPX 0DTE Strike Band dataset and join a daily SPX close series by date.
  • Compute per-session containment and the 20-day rolling rate.
  • Simulate the condor: enter at or after 10:30, short strikes at the band edges, a fixed wing, hold to the close, settle in cash.
  • Charge realistic costs on all four legs, then vary the wing and re-run.
  • Split results by regime and by rolling-containment level before trusting any aggregate number.

If the edge only exists at one wing width, in one calm year, or before costs, you have learned something valuable for the price of zero dollars at risk.

Run the study yourself

The band data is browsable in the dataset explorer, documented in the API docs, and covered in more depth in where to find the expected SPX 0DTE trading range.

If you want the full guided version, the index module of Alphanume Learn builds this study step by step: 0-DTE Options and the Daily Strike Band introduces the dataset and its point-in-time guarantees, Condors, Butterflies, and Verticals builds the structures, and Measuring Containment runs the backtest with you, in the browser, against real data. The first module is free with no account needed; start with the first lesson or browse the full syllabus.