Backtesting realism
Why Options Backtests Fail
Most options backtests fail because they model a cleaner market than the one the strategy would have traded.
Options backtests usually fail because they use today’s contract list, last price fills, incomplete quote history, weak liquidity filters, and entry timing that could not have been known at the time.
The hidden data problem
A valid options backtest starts with the contract universe that existed on the simulated date. If the model selects from current listings or ignores expiration availability, the result has stale-contract leakage before the first trade is evaluated.
The hidden execution problem
A last price is only a print. It does not prove the bid, ask, size, or spread available at entry and exit. Quote-aware fills force the simulation to pay attention to what was executable.
The practical fix
Use historical contracts, listed expirations, quote windows, trade evidence, and liquidity filters. Then run the same setup through a realism checker before comparing strategy variants.
A defensible replay sequence
Start with the signal timestamp, then request the contract universe that was listed at that time, then select the contract using only information available before entry. After that, request quote and trade windows around the candidate entry and exit. This sequence prevents the model from quietly using future listings, future open interest, or a cleaner end-of-day chain than the strategy actually had.
What should be stored with each fill
A research result is easier to trust when every fill stores the OCC ticker, expiration, strike, side, intended timestamp, quote timestamp, bid, ask, midpoint, last trade, spread percent, volume, open interest, and rejection reason. The rejection rows are as important as the trades because they show how often the strategy wanted contracts that were too stale, too wide, or unavailable.
How to compare variants
Compare strategy variants under the same execution model before comparing return metrics. A strategy that survives midpoint fills but fails near-side fills is a different claim than a strategy that survives marketable assumptions. Report the fill model, spread threshold, freshness window, and missing-data policy next to Sharpe, drawdown, win rate, and turnover.
Quote vs Trade Timeline
Bid, ask, midpoint, and prints show why last price alone is fragile.
Bid/Ask Spread by Strike
Lower bars usually produce more defensible fill assumptions.
Evidence checklist
What to record before trusting an options research result
The pages in this cluster are intentionally practical: a backtest, scanner, or dashboard should preserve the evidence that made each contract eligible and each fill plausible. The table is the minimum audit trail for option-specific execution realism.
| Check | Evidence to keep | Docs |
|---|---|---|
| Contract universe | Historical contract identity, listed expiration, strike, call/put type, and as-of contract metadata. | /docs/contracts |
| Executable market | Bid, ask, midpoint, quote timestamp, quote size, and stale-quote handling around the decision time. | /docs/quotes |
| Trade confirmation | Nearby prints, sizes, exchange/condition codes, and whether prints support the assumed fill level. | /docs/trades |
| Liquidity gate | Spread percent, volume, open interest, DTE, IV, and whether the contract should have been eligible. | /docs/option-chain |
Related tools and docs
Learn Options From Zero
Beginner explanations for calls, puts, chains, Greeks, IV, paper trading, and risk.
Backtest Realism Checker
Score contract, quote, trade, and spread assumptions before trusting a backtest.
Options Slippage Calculator
Translate bid/ask assumptions into dollar drag and breakeven movement.
Options Liquidity Scanner
Rank contracts by spread, volume, open interest, IV, and quote context.
Put/Call Ratio Dashboard
Track the current market put/call ratio beside daily, weekly, or monthly history.
Options Chain Visualizer
Inspect heatmaps, IV smile, spread by strike, and volume versus open interest.
Why options backtests fail
Audit stale contracts, last-price fills, quote gaps, liquidity filters, and execution timing.
Options slippage modeling
Model midpoint, near-side, and marketable fills from bid/ask spreads and contract size.
Mid price vs fill price
Separate a reference midpoint from the executable fill assumption used by the strategy.
Bid/ask spread backtesting
Use spread width as both a liquidity gate and a cost input for every modeled entry.
Quote vs trade timeline
Validate fills with synchronized bid, ask, midpoint, and print evidence around each decision.
Options data API
See the full API surface behind these tools.
Historical options data API
Use contracts, quotes, trades, and aggregates for research workflows.
Options backtesting API
Plan historical contract and quote-aware fill sequences.
Quotes docs
Review bid/ask history fields used by realism checks.
Option chain docs
Inspect chain snapshots with Greeks, IV, volume, and open interest.