Method
Monte Carlo simulation
A backtest returns one equity curve. That curve is a single realized path out of a large space of paths the same strategy could plausibly have produced. Simulation is how we look at the rest of that space instead of treating the one path we happened to get as the answer.
Why one equity curve is not enough
Suppose a system produces a smooth-looking curve over a multi-year test. The temptation is to read that smoothness as a property of the strategy. It is not. It is a property of the specific ordering of trades that happened to occur. Reshuffle the same trades into a different but equally plausible order and the same system can produce a curve with a drawdown deep enough to breach a risk limit, trigger a margin call, or simply exhaust the operator's patience.
The question that matters before capital is committed is not "what did it do?" but "what is the range of things it could have done, and how much of that range am I able to survive?"
Block bootstrap, not naive resampling
The naive approach is to resample individual trade returns independently with replacement. That is wrong for market data, and wrong in a way that flatters the strategy. Independent resampling destroys autocorrelation and volatility clustering — the very structure that produces the long, grinding drawdowns that actually kill accounts. A naive bootstrap will systematically understate tail risk.
We resample in blocks: contiguous runs of consecutive periods, drawn with replacement and reassembled into synthetic histories. Because each block preserves its internal sequence, the local dependence structure survives the resampling — a losing streak stays a losing streak rather than being diluted across the sample.
Block length is a real parameter with a real tradeoff, not a detail to be hidden. Blocks that are too short approach the naive case and understate clustering; blocks that are too long produce too few distinct recombinations and the simulation collapses toward reproducing the original history. Block length is chosen against the autocorrelation structure of the series being resampled, and it is reported alongside any result rather than buried.
What the simulation reports
Outcome distribution
The full spread of terminal outcomes across simulated paths, not a point estimate. The useful reading is the shape and the width: a strategy whose median outcome is attractive but whose distribution has a long left tail is a different proposition from one with a tighter spread around a lower median, even if the headline number is identical.
Drawdown percentiles
The distribution of maximum drawdown across paths, reported by percentile. This is the number that should size the position, because the drawdown observed in the single historical backtest is typically nowhere near the worst the strategy can produce. Planning risk around the backtest's realized drawdown is planning for the sample you were lucky enough to draw.
Kill probability
The fraction of simulated paths that breach a stated ruin threshold — a drawdown depth past which the account is closed, the allocation is pulled, or the operator stops trading the system. This is set explicitly, as a parameter, before the simulation runs. A strategy with a strong median outcome and a meaningful kill probability is not a good strategy; it is a strategy that works in the paths where it is not stopped out first, which is a different and much less useful claim.
Limitations — read this part
A bootstrap resamples the regime it was fed. Every synthetic path it generates is assembled from blocks of the history it was given. If that history contains no rate-hiking cycle, no liquidity crisis, and no correlated unwind, then no simulated path will contain one either. The distribution will look reassuringly well-behaved because the input was well-behaved, not because the strategy is robust.
It follows that these simulations do not price regime breaks. A structural change in market behaviour — a shift in the volatility environment, a change in market microstructure, a correlation that held for a decade and then did not — is outside the sample by construction. The bootstrap cannot extrapolate to a state it has never observed.
Nor do they price event risk. A scheduled Fed decision, a CPI print, an earnings release, an unscheduled geopolitical shock: these produce gaps, liquidity withdrawal, and slippage that no resampling of ordinary trading days will reproduce. Simulated drawdown percentiles should be read as a floor on the risk, not a ceiling.
The correct use of this tool is to reject strategies, not to bless them. If a system fails its simulation it is genuinely fragile. If it passes, all you have established is that it does not fail under resampling of a regime that has already happened.
How we report results
Any simulation output published or delivered will carry the parameters that produced it: the source series and its date range, the number of paths, the block length, the ruin threshold used for kill probability, and the cost assumptions inherited from the underlying backtest. A distribution without those parameters is not interpretable, and we would rather show the assumptions than the smooth chart.
No simulated result on this site is presented as achieved performance. See the disclaimer for the full statement on hypothetical and simulated results, and the backtesting doctrine for how the equity curves being simulated are produced in the first place.