Stress testing
A single green backtest is easy to get, and easy to fool yourself with. The stress test in the Horizon platform attacks your strategy from six directions (higher costs, look-ahead bugs, thin samples, reshuffled luck, nudged parameters, and different periods of history) and gives you a straight PASS, WARN or FAIL. Most strategies fail at least one check. That's the point: finding out here costs you nothing.
How to run it
Three ways, all equivalent:
- Click the "Stress-test this strategy" chip under the chat; it appears once your strategy has a healthy backtest behind it.
- Open the Stress test tab (inside the Backtest panel, next to Overview, Report and Trades) and click Stress-test this strategy.
- Just ask: "stress-test it", "is this edge real?", "am I curve-fitting?" all work.
The run takes about 20 seconds and executes up to 24 backtests behind the scenes. A card in the chat tracks all six checks live, and the full breakdown lands in the Stress test tab.
The six checks
| # | Check | What it does |
|---|---|---|
| 01 | Cost sensitivity | Re-runs your whole backtest at 2× and 3× real-world spread and commission. If profit only exists at zero friction, it isn't profit. |
| 02 | Look-ahead scan | Scans the code for anything that reads the future, the classic way a backtest gets impossibly good. |
| 03 | Sample size | Counts your trades and how concentrated the profit is. Thirty trades is the floor; one lucky trade carrying the P&L is a red flag. |
| 04 | Monte Carlo | Reshuffles your realised trades 1,000 times to see how much of the result is order luck, and how bad the drawdown could plausibly get. |
| 05 | Parameter sensitivity | Nudges every parameter by ±10% and ±20% and re-runs each variant. A real edge survives a nudge; a curve-fit one flips negative. |
| 06 | Consistency over time | Splits history into five periods and tests each on its own. An edge that only existed in one stretch of the data probably wasn't an edge. |
Each check gets its own chart in the results: the cost bars, a sample gauge, the Monte Carlo fan of 1,000 reorderings with your result marked on it, the parameter-nudge strip, and per-period bars.
Reading the verdict
- "Held up under every check": trade-worthy candidate. Consider verifying the exported version on your platform's own tester as the final step.
- "Held up, with a caveat": the flagged rows tell you exactly what to be careful of (often sample size or cost sensitivity).
- "Didn't hold up, here's where": the results separate what tuning can fix from what it can't. A look-ahead bug is fixable; an edge that vanishes at realistic costs usually means retire the idea and build the next one.
That last case is normal. The whole Horizon workflow (build fast, test across markets, stress test, iterate) exists because most ideas die here, cheaply, instead of dying in your live account.
Fine print
- Strategies only: an indicator has nothing to simulate.
- Available on every plan, and a FAIL never blocks anything: you can still iterate, re-run, or export. The verdict is information, not a gate.
- The test uses the same window as your backtest: set custom dates on the Backtest tab (or in your message) and the stress test inherits them.
- If a backtest looks too good to be true (triple-digit returns on a handful of trades, Sharpe above 3, 75%+ win rates), the assistant will offer a stress test on its own, once, and it won't nag.
- It re-runs against the current code. If you edit the strategy after a run, the old scorecard is marked as describing an older version, so run it again.