Methods: where and how our backtests are run
Last updated October 15, 2026.
Every number we publish comes from a model, not a trading record. This page explains what goes into that model, where it can be wrong, and how we correct it.
The short version
- We don’t use historical option quotes. We rebuild option prices from the S&P 500 index and the VIX with a standard pricing formula.
- That formula is tuned to real fills from the operator’s account at a retail brokerage. The sample is small: 3 trading days.
- Results are model estimates, not real trades. Use them to compare rules, not to forecast dollars.
Data
Market data is free and public, mostly from Yahoo Finance via the open-source yfinance library:
- Daily S&P 500 index (^GSPC) and VIX (^VIX) bars: the long test, January 2, 2015 to October 12, 2026 (2,961 trading days).
- 1-hour bars: the path test, December 29, 2023 to October 14, 2026 (692 days). Yahoo keeps only about two years of hourly data.
- 5-minute and 1-minute bars: used for stop-timing checks and the calibration (Yahoo keeps 60 and 7 days of these).
- Cboe 1-day VIX index (VIX1D), from April 2023: used only to set the volatility scenarios below.
The pricing model
Each leg is priced with Black-Scholes. Its implied volatility = VIX × (0.506 for puts or 0.430 for calls, + 0.177 × the strike’s distance from the market in expected moves). One expected move = prior SPX close × prior VIX / 15.87 / 100. Time to expiry is the fraction of the trading day left, on a 252-day year.
Calibration. The operator’s account has 8 real fills (16 legs) on SPX 0DTE spreads over October 13 to 15, 2026. The model is fit to the four legs of the two stop fills on October 15. On that day:
- The model’s stop triggers landed within about one SPX point of the real ones.
- On a 1-minute replay, the model’s stops fired one to two minutes before the real fills.
On October 13 and 14, same-day volatility was lower relative to the VIX, and the model priced those spreads above what they actually traded for.
Volatility scenarios. One day can’t stand for every day, so every SPX test also runs at 0.78× and 1.30× the base volatility. Those match the 10th and 90th percentiles of the 2023–2026 VIX1D/VIX ratio at the open. October 15’s ratio (0.613) sits at the median (0.615).
Trade rules
- One SPX 0DTE put credit spread, 25 points wide, opened at the 9:30 ET open. No VIX filter.
- The short strike is the $5 strike whose model value is closest to $1.075. Average credit came out at $1.06–1.07, and the median short delta was about 9–11.
- Stops: buy back when the model value reaches the multiple (for example 2× the credit). A gap through the stop fills at the gapped value. Exits are capped at the spread width.
- Take-profits and the $0.05/$0.10 close: if a stop and a take-profit could both have hit in the same bar, the stop counts first.
- Anything still open settles in cash at the last close.
Fees and slippage
- $0.65 per leg: two legs to open, two to close, nothing at expiry.
- $0.15 per spread of slippage on stop and take-profit exits. The $0.05/$0.10 limit closes fill at the limit.
- Exchange and regulatory fees aren’t modeled separately. Real fills at a stop trigger can be worse than the model, especially with market orders.
Known limits
- Totals flip sign. Daily test, 2× stop: −$21.1k at low volatility, +$59.5k in the base case, +$145.3k at high volatility. So we publish only comparisons that hold at every level.
- Daily SPX expirations only began in 2022. Cboe added Tuesday expirations in April 2022 and Thursday in May 2022. Before that, SPX weeklies expired Monday, Wednesday and Friday at most, and only Fridays before 2016. Daily-test results before mid-2022 assume a same-day option that often didn’t exist, so they are model-only.
- Bar resolution. Daily bars judge stops on the day’s high/low at half a day left, which misses many stops: an earlier model counted 181 stops on daily bars vs 486 on hourly bars over the same 677 days. Hourly bars check each extreme at mid-bar and can’t see the order of moves inside a bar.
- Small calibration. 3 trading days and 16 legs, all with the VIX around 15–18. The model is untested in high-volatility markets.
- No real quotes. Skew is approximated with one straight-line term. Bid/ask spreads appear only through the fixed slippage.
How we label numbers
- Real fills: actual executions in a brokerage account. We use this label only for that.
- Model estimate: everything else, including every backtest, each with its method and limits stated.
Corrections log
October 15, 2026
- SPX 0DTE studies (stops, take-profit, June 5, 2026). The original model’s implied volatility was about 2× too high for 0DTE, which overpriced spreads at real strikes several times over. The studies were taken down and are being re-run with the calibrated model.
- Held up: no stop was the worst rule, and a 2× stop shrank the worst day by about 15×.
- Did not hold: the claims about totals, the stress periods and the $0.05 close.
- 7-rule put-selling study (Black-Scholes on ~35-day stock puts, volatility input = 30-day realized volatility × 1.2). Taken down while that input is checked against live option chains and Cboe’s AMZN volatility index (VXAZN). With real implied volatility, some AMZN conclusions changed. NVDA, NBIS and SPCX can’t be verified with free data yet.
Hypothetical backtests using model prices. Education only, not financial advice.