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
- 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.
- 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.
- 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.
- 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.
- 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 this | Why |
|---|---|---|
| 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.
Reference
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
- Name your strategy — call it whatever you want
- Pick an instrument — ES, NQ, RTY (futures) or SPX, SPY, QQQ, IWM (options)
- Add rules — each rule has conditions and a direction (long, short, or options spread type)
- Set exits — take profit, stop loss, trailing stop, time stop, EOD close
- Set limits — max trades per day, max per direction
- Run it — see full results with Monte Carlo and walk-forward
- 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
Example: ORB + VIX Filter
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
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
- Build and save strategies in the Builder tab
- Switch to the Portfolio tab
- Check the strategies you want to combine
- 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:
| Field | Default | What 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)
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
| Indicator | Description | Common Use |
|---|---|---|
EMA 9/21 | Exponential Moving Average. Weights recent prices more. | Trend following, crossover entries |
SMA 20/50/200 | Simple Moving Average. Equal weight over period. | Trend filter (200 SMA), crossovers |
VWAP | Volume-Weighted Average Price. Resets each session. | Institutional fair value, direction bias |
RSI 14 | Relative Strength Index (0-100). Momentum oscillator. | Mean reversion: buy <30, sell >70 |
IBS | Internal Bar Strength: (close-low)/(high-low). Daily bars. | Mean reversion: buy <0.2, sell >0.8 |
ORB High/Low | Opening range high and low from first N minutes. | Breakout entries above/below range |
ORB Range | Size of opening range in points. | Filter: skip wide/narrow ranges |
Price | Current bar close price. | Compare to indicators |
Volume | Bar volume. | Confirm breakouts |
Time of Day | Current bar time in HH:MM format (24-hour). Compare with operators like >, <. | Time-of-day filters (e.g., only trade before 12:00) |
Operators
| Operator | Meaning | Example |
|---|---|---|
Price above | Current price is above the indicator | Price above VWAP → bullish bias |
Price below | Current price is below the indicator | Price below SMA 200 → bearish |
Price crosses above | Price was below, now above (trigger) | Price crosses above EMA 9 → go long |
Price crosses below | Price was above, now below (trigger) | Price crosses below VWAP → go short |
> / < / >= / <= | Compare indicator value to threshold | RSI 14 > 70 → overbought |
Crosses above | Indicator value crosses above threshold | RSI crosses above 30 → oversold bounce |
Crosses below | Indicator value crosses below threshold | RSI crosses below 70 → overbought fade |
7. Exit Rules
Exits are checked every bar in this priority order:
- Stop Loss — checked first (worst-case fill). Closes at exact SL level.
- Profit Target — closes at exact TP level.
- Time Stop — closes at market price after N minutes elapsed.
- Trailing Stop — once profit reaches +X pts, stop moves to breakeven. If price reverses back to entry, closes at breakeven instead of full SL.
- 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
| Instrument | Commission RT | Margin |
|---|---|---|
| SPX options (Schwab) | $4.80 per spread | Width × $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
| Symbol | Type | Period | Bars |
|---|---|---|---|
| ES (MES) | Futures 5-min | Dec 2011 – Mar 2026 | 14 years, 1M bars |
| ES (MES) | Futures 1-min | May 2023 – Mar 2026 | 2.8 years, 1M bars |
| NQ (MNQ) | Futures 5-min | Dec 2011 – Mar 2026 | 14 years, 1M bars |
| RTY (M2K) | Futures 5-min | May 2011 – Mar 2026 | 14 years, 1M bars |
| SPX / SPY | Options 5-min | Mar 2025 – Feb 2026 | 1 year, 19K bars |
| QQQ / IWM | Options 5-min | Mar 2025 – Feb 2026 | 1 year, 19K bars |
| VIX | Daily + 5-min | Jan 2024 – Feb 2026 | 2 years |
| SPX Chains | Real bid/ask/IV/delta | Mar 2 – 13, 2026 | 10 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
- Investopedia: Options Basics Tutorial — plain-English intro to calls, puts, strikes, expiry, and premium
- Investopedia: The Greeks (Delta, Theta, Vega) — understand what drives option prices
- tastylive: Credit Spreads — the mechanics of selling credit spreads, risk/reward, management
- tastylive: Implied Volatility — what IV is and why option sellers care about it
Options — Research & Edge
- ORATS Research Blog — quantitative research on SPX options, IV edge, win rates by delta/DTE
- tastytrade Research — live trading research on premium selling, position sizing, win rates
Futures — Foundational
- CME Group: Introduction to Futures — official intro to how futures contracts work
- Investopedia: Algorithmic Trading Basics — background on systematic/rule-based trading
Futures — ORB Strategy
- Zarattini & Stamatoudis (2023): Intraday Breakout Strategies in Equity Futures — the academic paper behind the ORB strategy used in this platform. 14 years on ES/NQ/RTY.
Risk & Position Sizing
- Investopedia: Risk/Reward Ratio — why the ratio of average win to average loss matters more than win rate alone
- Investopedia: Sharpe Ratio — understand the primary metric used in every backtest here
12. Glossary
| Term | Definition |
|---|---|
| Sharpe Ratio | Risk-adjusted return. Mean daily P&L / standard deviation × √252. Above 2 is good, above 4 is excellent. |
| Profit Factor | Gross wins / gross losses. Above 1.5 is solid. |
| Max Drawdown | Largest peak-to-trough decline in equity. The worst losing streak in dollar terms. |
| Win Rate | Percentage of trades that were profitable. |
| Delta | Option's sensitivity to underlying price. Also approximates probability of expiring ITM. |
| DTE | Days to expiration. How many days until the option expires. |
| Credit Spread | Sell a closer strike, buy a further strike. Collect premium upfront, profit from time decay. |
| Debit Spread | Buy a closer strike, sell a further strike. Pay premium, profit from directional move. |
| Iron Condor | A call credit spread + put credit spread. Profits when price stays in a range. |
| ORB | Opening Range Breakout. The high and low of the first N minutes define a range; trade breakouts. |
| VWAP | Volume-Weighted Average Price. Institutional benchmark for fair value during the session. |
| RSI | Relative Strength Index. Oscillator 0-100. Below 30 = oversold, above 70 = overbought. |
| IBS | Internal Bar Strength. (Close-Low)/(High-Low). Below 0.2 = weak close, above 0.8 = strong close. |
| EMA | Exponential Moving Average. Weights recent data more than older data. |
| SMA | Simple Moving Average. Equal weight over the lookback period. |
| Monte Carlo | Statistical simulation that shuffles historical results to estimate the range of possible outcomes. |
| Walk-Forward | Split data into train/test periods to check if a strategy works on unseen data (detects overfitting). |
| Slippage | The difference between expected fill price and actual fill price. Caused by bid-ask spread and market impact. |
| Entry Window | The time range during which new positions can be opened. Set globally for the entire strategy. No entries occur outside this window. |
| Time Sweep | Runs 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 Positions | The 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 Sweep | Test 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 Backtest | Backtest using real option chain snapshots (actual bid/ask/IV/delta from IQFeed) instead of synthetic Black-Scholes pricing. Most accurate simulation available. |