Free during validation — all features unlocked. Feedback welcome

User Guide

Start Here

What is this for?

Before you risk real money on a trading idea, you want to know whether it actually works. Backtesting is how you find out. You describe a set of rules — buy when this happens, sell when that happens — and the system runs those rules against years of real historical price data to show you what would have happened. Not what you hope would have happened. What the math actually says.

The paper trader takes it one step further. Once a strategy looks solid on historical data, you run it live with fake money to see how it performs in real market conditions — without the risk of discovering it doesn't work with actual capital on the line.

Most retail traders lose money not because they're unintelligent but because they're trading ideas that have never been validated. A backtest doesn't guarantee future results, but it does show you whether the idea had an edge historically. That's the starting point for everything here.

What kinds of strategies are there?

There are two main categories on this platform:

Options strategies (SPX credit/debit spreads)
These involve selling or buying options on the S&P 500. The core idea behind selling options: every option has a price built into it that reflects what the market thinks volatility will be. Historically, the market consistently overestimates that volatility — meaning option sellers collect more premium than the actual risk warrants. The premium decays as time passes (that's the "decay" in The Decay Lab).

The most common approach is a credit spread — you sell an option that's out of the money and buy a further one to cap your risk. If the market doesn't reach your strike by expiration, you keep the premium. You win most of the time for small, predictable amounts. The tradeoff: occasionally the market makes a large gap move that goes against you.

Futures strategies (ORB, EMA crossovers, mean reversion)
These involve trading S&P 500 futures (ES), Nasdaq futures (NQ), or Russell 2000 futures (RTY). Two broad approaches: trend-following (trade in the direction of a moving average or breakout) and mean reversion (bet that a sharp move will snap back). The Opening Range Breakout — ORB — is the most well-known intraday setup: the first 5 minutes of the day defines a range, and you trade any breakout of that range with a defined target and stop.

How to approach testing a new idea
  1. Start with Quick Backtest. It has pre-built strategy types you can configure in a few clicks. Get a feel for what different settings produce before building anything custom.
  2. Look at Sharpe ratio first, not win rate. A strategy with a 70% win rate but losses 3× larger than wins still loses money overall. Sharpe measures risk-adjusted return — it tells you how much you earn per unit of risk. Above 1.5 is decent. Above 2 is good. Above 4 is excellent — but it warrants scrutiny. Always confirm with walk-forward testing and Monte Carlo before trusting a very high Sharpe. A strategy that passes both is the real thing.
  3. Take the walk-forward test seriously. If a strategy looks great on historical data but the walk-forward result is much worse, it was likely over-fitted to that specific history — it memorized the past rather than found a real edge.
  4. Always include costs. The default fee and slippage assumptions are realistic. Don't test with zero fees — commissions and slippage are real and they matter, especially for short-term strategies with many trades.
  5. Think about max drawdown before you think about returns. If the worst losing streak in the backtest is $4,000, you need that $4,000 sitting on the sideline as a buffer — not deployed as buying power. Undercapitalization is the most common way a statistically sound strategy fails in practice.
Some common starting points
If you want to...Try thisWhy
Collect premium with high win rate SPX Put or Call Credit Spread, 8-delta, 1-DTE, 80% target Exploits the volatility risk premium — the market systematically overpays for options
Profit when the market stays in a range Iron Condor, 10-delta, 7-DTE Collects premium on both sides; wins as long as SPX doesn't move sharply in either direction
Trade intraday breakouts on futures ORB on ES or NQ, 5-min range, TP8/SL1 Morning range tends to hold as support/resistance; breakouts carry momentum
Trade with the trend EMA crossover on ES, EMA 9 / EMA 21 Simple, widely used; good baseline for trend-following on liquid instruments
Bet on mean reversion RSI strategy, oversold <30 / overbought >70 Works in range-bound markets; test VIX regime breakdown to understand when it fails
When to move from backtest to paper to live

A strategy is ready to paper trade when: Sharpe is above 1.5, walk-forward passes, Monte Carlo P(profit) is above 80%, and the max drawdown is something you could absorb without changing your behavior.

A strategy is ready to go live when: it's been paper trading for at least 4–8 weeks, the live results are roughly in line with the backtest, and you have enough capital to cover the max drawdown with buffer left over. Going live too early — before paper confirms the edge holds in real conditions — is where most of the value of this whole process gets thrown away.

The detailed technical reference for all parameters, indicators, and outputs is in the sections below.

1. Platform Overview

The Decay Lab backtest platform lets you test options and futures trading strategies against years of historical data. Every backtest includes statistical validation (Monte Carlo simulation and walk-forward testing) so you know whether your edge is real or just noise.

There are three modes:

  • Quick Backtest — pick a preset strategy type, set parameters, run it
  • Strategy Builder — build custom strategies from scratch using indicator-based rules
  • Portfolio — combine multiple strategies and see how they perform together

2. Quick Backtest

The fastest way to test a strategy. Pick options or futures, set your parameters, and run.

Options Strategies

Test SPX credit/debit spreads and iron condors with Black-Scholes pricing and historical VIX.

  • Call/Put Credit Spread — sell premium, profit from time decay
  • Call/Put Debit Spread — buy directional exposure, limited risk
  • Iron Condor — sell both call and put credit spreads (together or separate)

Key parameters:

  • Delta — how far out-of-the-money. 5 = very safe, 20 = more premium but more risk
  • Width — distance between strikes. $5 = $500 max loss per contract
  • DTE — days to expiration at entry. 0-DTE through 45-DTE
  • Target % — close when this % of max profit is captured (e.g., 80%)
  • Stop — close if loss reaches this multiple of credit (e.g., 2x)
Futures Strategies

Test 7 strategy types on ES, NQ, or RTY with 14 years of 5-minute bar data.

  • ORB — Opening Range Breakout. Trade the first 5-30 minute range
  • EMA Crossover — enter when price crosses EMA
  • SMA Crossover — enter when price crosses SMA
  • VWAP Cross — enter when price crosses session VWAP
  • RSI Reversal — mean reversion at overbought/oversold levels
  • IBS — Internal Bar Strength daily mean reversion
  • EMA + VWAP — VWAP for direction bias, EMA for trigger
Entry Window

Controls the time range when new positions can be opened. Defaults update automatically based on DTE selection:

  • 0-DTE — 10:15 to 11:00 (morning session only, avoids gamma risk near close)
  • 1-DTE — 15:30 to 15:55 (end of day entry, default)
  • 7-DTE — 10:00 to 14:00 (broader window for longer-dated spreads)
  • 45-DTE — 10:00 to 14:00 (broad window, less time-sensitive)

You can override the defaults to test any custom time range.

Parameter Sweep

The Parameter Sweep section lets you test any parameter across multiple values and see a ranked comparison table. Pick one parameter for a simple sweep, or two for a grid search.

Sweepable parameters include:

  • Options: delta, profit target, width, DTE, stop loss, entry time
  • Futures: TP, SL, ORB window, EMA/SMA/RSI period, overbought/oversold

Results are sorted by Sharpe ratio with all metrics shown. For a grid sweep (two parameters), you get a matrix showing Sharpe for every combination — the same type of analysis used in the TIER 1.1 research that tested 30 delta/target combinations.

3. Strategy Builder

Build completely custom strategies from scratch. Define rules with conditions, set your exits and position limits, then backtest against historical data.

How It Works
  1. Name your strategy — call it whatever you want
  2. Pick an instrument — ES, NQ, RTY (futures) or SPX, SPY, QQQ, IWM (options)
  3. Add rules — each rule has conditions and a direction (long, short, or options spread type)
  4. Set exits — take profit, stop loss, trailing stop, time stop, EOD close
  5. Set limits — max trades per day, max per direction
  6. Run it — see full results with Monte Carlo and walk-forward
  7. Save it — saved to your browser for portfolio testing later
Rules & Conditions

Each rule fires when ALL its conditions are true (AND logic). If you have multiple rules, the first matching rule wins (evaluated top to bottom each bar).

A condition has three parts:

  • Indicator — what to check (price, EMA, VWAP, RSI, etc.)
  • Operator — how to compare (crosses above, price below, >, <, etc.)
  • Value — threshold (e.g., 30 for RSI oversold)
Example: RSI Mean Reversion
Rule 1: "Buy oversold bounce" → Long Condition: RSI 14 | Crosses above | 30 Rule 2: "Sell overbought drop" → Short Condition: RSI 14 | Crosses below | 70 Exits: TP 5pts, SL 3pts, EOD 3:55 PM Limits: Max 2/day, 1 long, 1 short
Example: ORB + VIX Filter
Rule 1: "Long breakout" → Long Condition 1: ORB High | Price crosses above Condition 2: ORB Range | < | 15 Rule 2: "Short breakdown" → Short Condition 1: ORB Low | Price crosses below Condition 2: ORB Range | < | 15 Exits: TP 5pts, SL 3pts Limits: Max 2/day
Entry Window vs. Time of Day Condition

The Entry Window (Start/End at the top of the Builder) is a global setting that controls when any rule is allowed to open a new position. No trades will be entered outside this window, regardless of what the rules say.

The Time of Day condition (in the indicator dropdown) is a per-rule filter for time-dependent behavior within the same trading day. Use it when different rules should fire at different times.

Example: Morning Longs, Afternoon Shorts
Entry Window: 09:35 – 15:30 (global) Rule 1: "Morning long" → Long Condition 1: Time of Day | < | 12:00 Condition 2: Price | Price crosses above | EMA 9 Rule 2: "Afternoon short" → Short Condition 1: Time of Day | >= | 13:00 Condition 2: RSI 14 | Crosses below | 70 Exits: TP 5pts, SL 3pts, EOD 3:55 PM

In this example, the entry window allows trades from 9:35 to 3:30. Rule 1 only fires before noon, Rule 2 only fires after 1 PM. Time of Day values use HH:MM format (24-hour).

Direction Options

For futures: Long or Short

For options: Call Credit, Put Credit, Call Debit, Put Debit, Iron Condor

4. Portfolio Mode

Combine multiple saved strategies and see how they perform together. This shows you whether adding another strategy actually diversifies your portfolio or just adds correlated risk.

How to Use
  1. Build and save strategies in the Builder tab
  2. Switch to the Portfolio tab
  3. Check the strategies you want to combine
  4. Click "Run Portfolio Backtest"
What You Get
  • Per-strategy summary — P&L and Sharpe for each
  • Combined portfolio — total P&L, Sharpe, max drawdown
  • Correlation matrix — how correlated the daily P&Ls are (lower = better diversification)
  • Monte Carlo — risk analysis on the combined portfolio

5. Paper Trader

The Paper Trader runs your strategy live — entering and exiting positions using real market prices every trading day — but without real money. It's the step between a backtest and going live. Backtests show you what worked historically. Paper trading shows you whether it holds up in actual market conditions.

Each paper strategy is tracked independently per account. You only see your own strategies.

Setting Up a Strategy (Simple Mode)

All fields and their defaults:

FieldDefaultWhat it means
Strategy Name Whatever you want to call it. Used to identify it in your dashboard.
Underlying SPX The index the options are on. SPX = S&P 500 cash index. Best liquidity for 1-DTE options.
Type Call Credit What kind of spread to trade. Call Credit = sell above market (bearish/neutral). Put Credit = sell below market (bullish/neutral).
Delta 8 How far out-of-the-money your short strike will be. Delta 10 means roughly a 10% chance of the option expiring in-the-money. Lower = safer, less premium. Higher = more premium, more risk.
DTE 1 Days to expiration. 1-DTE means you enter today and the trade expires tomorrow. The position holds overnight.
Width ($) $5 Distance between strikes in dollars. $5 wide = max loss of $500 per contract. $10 wide = $1,000 max loss. Wider spreads collect more premium but require more capital.
Target % 80% Close the trade when this percentage of the premium has decayed. 80% means if you collected $1.00, close when you can buy it back for $0.20. Don't wait for 100% — the last 20% isn't worth the overnight risk.
Entry Time 15:30 (3:30 PM ET) When to enter each day. For 1-DTE options, 3:30 PM is the standard — late enough that you get maximum time value without giving up much premium. Do not change this unless you have a specific reason.
Contracts 1 Number of spreads per trade. Start with 1. Buying power requirement = width × $100 × contracts ($500 for 1ct $5-wide).
Fee/Leg $1.20 Commission per option leg. $1.20 is the Schwab rate. Tradier is $0.35/leg. 4 legs per round trip (2 to open, 2 to close).
Min OTM Distance (pts) 0 (off) Requires the short strike to be at least this many points away from the current SPX price, regardless of delta. Protects against entering when the market has already moved toward your strike. Recommended: 50 for SPX 1-DTE.
VIX Max Entry 0 (off) Skips the entry entirely if VIX is above this level. High VIX = elevated volatility = higher risk of large gap moves against your position. Recommended: 30 for call/put credit spreads.
Delta Walk Off If the credit at your target delta is below $0.05 (too small to be worth the trade), automatically tries strikes 1–3 steps closer to the money to find better premium. Useful in low-volatility environments where far OTM options pay almost nothing.
Recommended Settings (matching the live Decay Lab 1-DTE strategy)
Type: Call Credit (bull market/neutral) or Put Credit (bear market) Delta: 10 DTE: 1 Width: $5 Target: 80% Entry Time: 15:30 Contracts: 1 Fee/Leg: $1.20 (Schwab) or $0.35 (Tradier) Min OTM: 50 pts VIX Max: 30 Delta Walk: On
How it works day-to-day

At your configured entry time, the simulator fetches the live SPX price and option chain, finds the strike matching your delta, builds the spread, and records the fill with realistic slippage. It then monitors the position every minute during market hours. When the profit target is hit, it closes. If expiry arrives before the target, it closes at expiration value.

You'll get a Telegram notification for every entry and exit if you're connected to the bot.

Builder Mode

If you've built and saved a custom strategy in the Strategy Builder tab on the Backtest page, you can paper trade it here. Switch to Builder Mode, select the saved strategy from the dropdown, and click Start. The paper executor will run your custom rule logic against live market data.

6. Indicators

IndicatorDescriptionCommon Use
EMA 9/21Exponential Moving Average. Weights recent prices more.Trend following, crossover entries
SMA 20/50/200Simple Moving Average. Equal weight over period.Trend filter (200 SMA), crossovers
VWAPVolume-Weighted Average Price. Resets each session.Institutional fair value, direction bias
RSI 14Relative Strength Index (0-100). Momentum oscillator.Mean reversion: buy <30, sell >70
IBSInternal Bar Strength: (close-low)/(high-low). Daily bars.Mean reversion: buy <0.2, sell >0.8
ORB High/LowOpening range high and low from first N minutes.Breakout entries above/below range
ORB RangeSize of opening range in points.Filter: skip wide/narrow ranges
PriceCurrent bar close price.Compare to indicators
VolumeBar volume.Confirm breakouts
Time of DayCurrent bar time in HH:MM format (24-hour). Compare with operators like >, <.Time-of-day filters (e.g., only trade before 12:00)
Operators
OperatorMeaningExample
Price aboveCurrent price is above the indicatorPrice above VWAP → bullish bias
Price belowCurrent price is below the indicatorPrice below SMA 200 → bearish
Price crosses abovePrice was below, now above (trigger)Price crosses above EMA 9 → go long
Price crosses belowPrice was above, now below (trigger)Price crosses below VWAP → go short
> / < / >= / <=Compare indicator value to thresholdRSI 14 > 70 → overbought
Crosses aboveIndicator value crosses above thresholdRSI crosses above 30 → oversold bounce
Crosses belowIndicator value crosses below thresholdRSI crosses below 70 → overbought fade

7. Exit Rules

Exits are checked every bar in this priority order:

  1. Stop Loss — checked first (worst-case fill). Closes at exact SL level.
  2. Profit Target — closes at exact TP level.
  3. Time Stop — closes at market price after N minutes elapsed.
  4. Trailing Stop — once profit reaches +X pts, stop moves to breakeven. If price reverses back to entry, closes at breakeven instead of full SL.
  5. EOD Close — safety net. Force closes anything still open at this time (default 3:55 PM).

All exits work together. Most trades close on TP or SL. EOD catches stragglers.

Setting TP = 0 or SL = 0 means that exit type is disabled (off). For example, setting TP to 0 means the trade will only close via stop loss, trailing stop, time stop, or EOD. This is useful for strategies that rely purely on time-based exits or trailing stops.

Points vs. Percent Mode

TP and SL can be set in two modes:

  • Points (default) — fixed distance from entry price. TP 5 = close when +5 pts profit.
  • Percent — percentage of entry price (futures) or percentage of credit received (options). TP 80% = close when 80% of credit captured.

Switch between modes using the TP/SL Mode dropdown in the Builder.

8. Cost Model & Slippage

Default Slippage Model (66% Spread)

By default, backtests use the 66% bid-ask spread model (based on ORATS research). This assumes you give up 66% of the estimated bid-ask spread as slippage on each fill. The spread is estimated dynamically based on:

  • DTE — 0-DTE has wider spreads (8%) than 45-DTE (3%)
  • VIX — high VIX widens spreads by 20-50%
  • Option price — cheaper options have wider relative spreads

You can adjust the fill percentage (e.g., 50% for optimistic, 100% for worst case) or switch to fixed points per side.

Customizing Costs

In the Strategy Builder, the Costs section lets you override:

  • Commission RT — round-trip commission per contract (default $0.70 for micro futures)
  • Slippage model — "66% spread" (ORATS model, default) or "Fixed pts" (set your own slippage per side)
  • Fill % — what percentage of the bid-ask spread you give up (66% default, 50% optimistic, 100% worst case)
  • Contracts — number of contracts per trade
Commissions
InstrumentCommission RTMargin
SPX options (Schwab)$4.80 per spreadWidth × $100/contract
MES / M2K (micro futures)$0.70$100 intraday
MNQ (micro Nasdaq)$0.70$100 intraday

9. Validation

Every backtest includes two forms of statistical validation to help you distinguish real edge from overfitting or luck.

Monte Carlo Simulation

Bootstraps your daily P&Ls — randomly resamples them 5,000 times to build a distribution of possible outcomes. Shows you:

  • 95% confidence interval — range of likely annual P&L
  • P(profit) — probability of being profitable over a year
  • Max drawdown 95th percentile — worst drawdown you should prepare for
Walk-Forward Testing

Splits data into training period (80%) and test period (20%). Runs the strategy on both and compares. If the test period Sharpe is much worse than training, the strategy may be overfit to historical data.

  • PASS — test Sharpe is at least 50% of training Sharpe
  • CAUTION — test Sharpe dropped significantly, possible overfitting

You can customize the split (60/40, 70/30, 80/20) or turn either validation off.

Deflated Sharpe Ratio

The Deflated Sharpe Ratio (DSR) adjusts the observed Sharpe for the number of strategy variations you have tried. If you test 50 parameter combos and pick the best one, the DSR tells you whether that Sharpe is still statistically significant after accounting for multiple testing. A DSR above 0.95 means the edge is likely real, not a lucky pick.

VIX Regime Breakdown

Results are split by VIX regime to show how the strategy performs in different volatility environments: low VIX (<15), normal (15-25), elevated (25-35), and high (>35). A robust strategy should show positive expectancy across regimes, not just in calm markets.

10. Available Data

SymbolTypePeriodBars
ES (MES)Futures 5-minDec 2011 – Mar 202614 years, 1M bars
ES (MES)Futures 1-minMay 2023 – Mar 20262.8 years, 1M bars
NQ (MNQ)Futures 5-minDec 2011 – Mar 202614 years, 1M bars
RTY (M2K)Futures 5-minMay 2011 – Mar 202614 years, 1M bars
SPX / SPYOptions 5-minMar 2025 – Feb 20261 year, 19K bars
QQQ / IWMOptions 5-minMar 2025 – Feb 20261 year, 19K bars
VIXDaily + 5-minJan 2024 – Feb 20262 years
SPX ChainsReal bid/ask/IV/deltaMar 2 – 13, 202610 days, 23 snapshots/day

Need data for a different instrument? Use the Request New Data form at the bottom of the backtest page. Submit what you need and I'll review it.

Chain Snapshot Data

Real SPX option chain snapshots are collected via Tradier every 15 minutes during market hours. This includes actual bid/ask, implied volatility, and delta for every strike across multiple expirations. The chain backtest engine uses this data for the most accurate possible simulation — actual market quotes instead of synthetic Black-Scholes pricing. This dataset grows every trading day.

PDF Reports

After running any backtest, click Download PDF to save a report with all results, metrics, Monte Carlo analysis, and strategy configuration. Useful for record-keeping or sharing with others.

11. External Resources

These are free resources worth reading if you're new to options or futures trading.

Options — Foundational
Options — Research & Edge
Futures — Foundational
Futures — ORB Strategy
Risk & Position Sizing

12. Glossary

TermDefinition
Sharpe RatioRisk-adjusted return. Mean daily P&L / standard deviation × √252. Above 2 is good, above 4 is excellent.
Profit FactorGross wins / gross losses. Above 1.5 is solid.
Max DrawdownLargest peak-to-trough decline in equity. The worst losing streak in dollar terms.
Win RatePercentage of trades that were profitable.
DeltaOption's sensitivity to underlying price. Also approximates probability of expiring ITM.
DTEDays to expiration. How many days until the option expires.
Credit SpreadSell a closer strike, buy a further strike. Collect premium upfront, profit from time decay.
Debit SpreadBuy a closer strike, sell a further strike. Pay premium, profit from directional move.
Iron CondorA call credit spread + put credit spread. Profits when price stays in a range.
ORBOpening Range Breakout. The high and low of the first N minutes define a range; trade breakouts.
VWAPVolume-Weighted Average Price. Institutional benchmark for fair value during the session.
RSIRelative Strength Index. Oscillator 0-100. Below 30 = oversold, above 70 = overbought.
IBSInternal Bar Strength. (Close-Low)/(High-Low). Below 0.2 = weak close, above 0.8 = strong close.
EMAExponential Moving Average. Weights recent data more than older data.
SMASimple Moving Average. Equal weight over the lookback period.
Monte CarloStatistical simulation that shuffles historical results to estimate the range of possible outcomes.
Walk-ForwardSplit data into train/test periods to check if a strategy works on unseen data (detects overfitting).
SlippageThe difference between expected fill price and actual fill price. Caused by bid-ask spread and market impact.
Entry WindowThe time range during which new positions can be opened. Set globally for the entire strategy. No entries occur outside this window.
Time SweepRuns the same strategy across multiple entry time windows and compares results in a table. Helps identify the optimal time of day for a given strategy.
Concurrent PositionsThe number of trades open at the same time. "Max Open" limits this. Use to control exposure — e.g., max 1 long and 1 short at a time.
Parameter SweepTest a strategy across multiple values of a parameter (e.g., delta 5/8/10/15). Shows a ranked table sorted by Sharpe. Grid sweep tests two parameters at once.
Chain BacktestBacktest using real option chain snapshots (actual bid/ask/IV/delta from IQFeed) instead of synthetic Black-Scholes pricing. Most accurate simulation available.