6 · Robustness
Stress the system against a hostile world: costs, regimes, randomness and unseen data.
On the roadmap — not shipped yet
Sensitivity perturbs your parameters. Robustness perturbs the world. A system is robust if it survives conditions that differ from the tidy backtest — because live markets always will. This is the last gate before risking money (paper or real).
The stress tests that matter
Cost stress
Re-run with pessimistic frictions: higher commission, wider slippage, a real short- borrow rate. If a modest cost bump erases the edge, the edge was mostly a costing artefact.
Regime / period slicing
Evaluate separately across bull, bear and sideways periods, and across years. A system that only prints money in one regime isn't a system — it's a bet on that regime continuing.
Out-of-sample & holdout
Keep a slice of history you have never looked at during development or optimization, and test on it exactly once. If you peek repeatedly, it stops being out-of-sample.
Monte-Carlo / resampling
Shuffle or resample the trade sequence (or bootstrap returns) to build a distribution of outcomes. It answers "how much of my result was luck?" and gives an honest range for drawdown and final equity, not a single hero number.
Perturbation of entries
Delay every fill by one bar, or add random noise to fill prices. An edge that vanishes when execution is slightly worse was never executable.
What "robust" looks like
- Positive (if smaller) net of pessimistic costs.
- Profitable — or at least not catastrophic — across multiple regimes.
- OOS results consistent with in-sample.
- A Monte-Carlo drawdown distribution you can actually stomach.
Robustness beats peak performance
Given two systems, prefer the one with the lower backtest return but far tighter, more stable behaviour under stress. The flashy one is usually overfit; the boring one is usually deployable.
Position sizing is part of robustness
The best entry logic can still blow up with reckless sizing. Volatility-targeted sizing (risk a fixed fraction of equity per trade, scaled by an ATR-style stop distance) keeps risk roughly constant across assets and time — and is what lets a system survive its worst stretch, which Monte-Carlo will show you is worse than your backtest's.
In Malgot
- Cost stress is fully available now — clone your broker with pessimistic commission, slippage and short-borrow settings and re-run.
- Period slicing — run the same system over different date windows and compare.
- Trade-distribution shape — the histogram view is a first, manual read on tail risk.
Practise it today, manually: run your candidate over three separate regimes and under a "pessimistic broker", and compare the metrics side by side. If it holds up, you're ready to trade it without money at risk.
