Monte Carlo simulation for trading strategies: what it tests, and what it cannot
The backtest shows one equity curve: the one that happened. Monte Carlo shows the thousand others the same trades could have made if they had arrived in a different order. It is a useful picture — and it is often sold as more than it is.
A backtest is a single path through history. The trades came in the order they came, the losing streaks fell where they fell, and the maximum drawdown was whatever that particular sequence produced. Reorder the same trades and you get a different drawdown, a different worst streak, and a different equity curve — from a strategy that has not changed at all.
Monte Carlo simulation does that reordering thousands of times and shows you the spread. This guide covers what the spread genuinely tells you, the assumptions hiding inside it, and — the part that most explanations skip — the two most damaging backtest flaws that Monte Carlo is structurally unable to find.
What it does
- Take the list of trade results from a backtest — say 300 trades, each a profit or loss.
- Shuffle the order at random and replay them, compounding from the same starting capital. Record the equity curve, the maximum drawdown, and the longest losing streak.
- Repeat a few thousand times.
- Plot all the curves together. They fan out — the top edge is the luckiest ordering, the bottom edge the unluckiest, and most paths cluster in the middle.
- Read off percentiles: "in 95% of orderings, max drawdown was under 28%" or "the median longest losing streak was 9 trades, and 5% of orderings had 14 or more".
Variants resample with replacement (bootstrap) rather than shuffling, randomly skip a fraction of trades to simulate missed fills, or add noise to each result to simulate execution variance. All of them are the same idea: take the outcomes you observed and ask what else they could have produced.
What it genuinely tells you
The drawdown you should plan for
This is the main use, and it is a good one. The backtest's maximum drawdown was one draw from a distribution. The 95th percentile of the Monte Carlo drawdowns is a far more honest number to size a live account around, and it is almost always worse than the backtest showed. If a strategy's backtest had a 15% max drawdown and the simulation says 95% of orderings stayed under 26%, plan for 26%.
How long the losing streaks get
A 55% win rate strategy will have streaks of ten losses. Monte Carlo puts a number on how often, which is the number you need before you decide whether you can psychologically survive the strategy. Most strategies are abandoned during a losing streak the simulation would have called routine.
Risk of ruin at a given size
Run the simulation at different position sizes and count the orderings that hit a ruin threshold — a 50% drawdown, say. This is the most defensible way to choose size: pick the largest size at which ruin is rare across orderings, not the size that maximises the backtest's return.
The three assumptions inside it
Reshuffling trades assumes three things, and each one is at least partly false for real strategies:
- Trades are independent. They are not. Losing streaks in trend strategies happen in ranging markets, which cluster in time. Reshuffling breaks the clusters and understates how long real streaks get — so the simulation's drawdown estimate, already worse than the backtest, is still optimistic.
- The trade distribution is right. The simulation can only reorder the trades the backtest produced. If the backtest never met a crash, the simulation has no crash to reorder.
- The future draws from the same distribution. This is the assumption every backtest makes and Monte Carlo inherits it unchanged. It reorders the past. It does not sample the future.
The two things it cannot detect
Here is the part that matters most. Monte Carlo operates on the output of a backtest — the list of trade results. It has no access to how those results were produced. So:
| Backtest problem | Visible to Monte Carlo? | Why |
|---|---|---|
| Sequence luck in drawdown | Yes | That is what it measures |
| Losing-streak length | Partly | Understated, because clusters are broken |
| Position size too large | Yes | Ruin frequency across orderings |
| Data leakage / look-ahead | No | Leaked trades reshuffle as happily as honest ones |
| Overfitting | No | The trade list is already the overfit list |
| Missing costs | No | Costs are absent from every ordering equally |
| Survivorship in the universe | No | The dead assets are not in the trade list |
A backtest that saw the future produces a list of wonderful trades. Monte Carlo will reshuffle those wonderful trades into a thousand wonderful curves and report, with great precision, that the strategy is robust. An overfit strategy gets the same treatment. The simulation is not lying; it was asked the wrong question. It measures sequence risk. It does not measure whether the sequence was real.
A permutation test is not a Monte Carlo test
The two get confused because both involve shuffling. They shuffle different things and answer different questions. Monte Carlo shuffles the order of trade results to measure sequence risk. A permutation test shuffles the labels before training to measure whether the strategy found anything at all. If you have time for one, run the permutation test. It addresses the question that kills strategies; Monte Carlo addresses the question that kills accounts.
How to use it well
- Validate the trade list first — leakage, costs, out-of-sample, sample size. Monte Carlo on an unvalidated list is decoration.
- Prefer block resampling — shuffling chunks of consecutive trades rather than individual ones — to keep some of the clustering.
- Read the 95th-percentile drawdown, not the median, and size the account so that number is survivable.
- Read the losing-streak distribution and decide, in advance, how long a streak you will sit through before you stop.
- Rerun at several position sizes and pick the largest with rare ruin, not the one with the best return.
Reading the output: a short example
A backtest with 300 trades shows a 15% maximum drawdown. Reshuffle it 5,000 times and tabulate the maximum drawdown of each ordering. Suppose the median is 19%, the 95th percentile is 27%, and the worst ordering seen is 38%. Read those three numbers as one sentence: the backtest's 15% was a lucky draw; a typical ordering of the same trades would have produced 19%; one ordering in twenty would have produced 27% or worse; and the strategy is capable, on its own trade list, of 38%. Size the account so that 27% is survivable and 38% is not fatal — and remember that, because reshuffling breaks the clustering of real losing streaks, even these numbers lean optimistic.
Where this sits in Wise Apple
Wise Apple does not include a Monte Carlo reshuffler. Its answer to the question Monte Carlo asks — how much of the result is sequence luck? — is the Walk-Forward Window, which grades the strategy on several successive out-of-sample periods so you can see the spread across real, clustered market conditions rather than across shuffled ones, and the cost and slippage models that make the trade list itself worth analysing. The trade journal exports to CSV, so if you want the reshuffle you can run it in a spreadsheet on a list you have already validated — which, per the section above, is the only list worth reshuffling.
Questions traders ask about Monte Carlo simulation
What is a Monte Carlo simulation in trading?
A method that takes the trade results from a backtest, reorders or resamples them thousands of times, and replays each ordering as an equity curve. The spread of curves shows the range of drawdowns and losing streaks the same strategy could have produced by chance, which is a more honest basis for sizing than the single path the backtest happened to take.
Does Monte Carlo simulation validate a trading strategy?
No. It measures sequence risk — how much of the drawdown was the order the trades arrived in. It cannot detect data leakage, overfitting, missing costs or survivorship bias, because it only sees the finished list of trades, and a leaked or overfit list reshuffles into robust-looking curves just as readily as an honest one. Validate the trade list first; then simulate.
What is the difference between Monte Carlo and a permutation test?
Monte Carlo shuffles the order of trade results to measure how bad the drawdown could get. A permutation test shuffles the labels before training to measure whether the strategy found any real relationship at all. They answer different questions — the permutation test asks whether the edge exists; Monte Carlo asks how rough the ride will be if it does.
Why is Monte Carlo drawdown worse than the backtest drawdown?
Because the backtest's drawdown is one draw from a distribution, and it is rarely the worst one. Across thousands of reorderings, some put the losing trades together, and the 95th-percentile drawdown from those is the number to plan around. It is still optimistic, since reshuffling breaks up the real clustering of losses in time.