At a glance
- What it does
- Reshuffles your trades to show the range of possible outcomes
- Main output
- The distribution of drawdowns and final equity
- Planning rule
- Size for the 95th percentile drawdown, not the historical one
- Key caveat
- Simple resampling assumes trades are independent
Key takeaways
- Your historical equity curve is one sample from a distribution. Monte Carlo reveals the distribution, which is what you actually need for risk decisions.
- The maximum drawdown in a backtest is almost always below the median of the simulated distribution, because a single path understates the tail.
- Size positions so that the 95th percentile simulated drawdown is tolerable, not so that the historical one is.
- Simple resampling with replacement assumes trades are independent, which understates risk when trades cluster or correlate.
- Block resampling, which preserves sequences of consecutive trades, produces a more realistic picture for clustered strategies.
Why one equity curve is not enough
A backtest produces the trades in the order history happened to deliver them. If the five largest losses had occurred consecutively rather than spread across three years, the drawdown would have been far deeper and you might have stopped trading. That alternative ordering was just as likely.
Backtest result (the historical ordering):
Total return +64%
Maximum drawdown -18%
Longest underwater 7 months
Monte Carlo over 10,000 reshuffles of the same trades:
Median return +61%
Median max drawdown -24%
75th percentile DD -29%
95th percentile DD -38%
99th percentile DD -46%
Worst simulated DD -57%
Probability of DD > 30% about 22%
The strategy has not changed. The historical -18% was
a favourable draw, and planning around it would have
underestimated the risk by roughly half.Resampling methods
- Trade shuffling
- Reorder the historical trades randomly. Preserves the exact set of outcomes, changes only the sequence. The simplest and most common method.
- Bootstrap with replacement
- Draw trades randomly with replacement, so some appear multiple times and others not at all. Produces a wider distribution and reflects that your sample is itself a draw.
- Block bootstrap
- Resample blocks of consecutive trades rather than individual ones. Preserves clustering and serial correlation, which matters for most real strategies.
- Daily return resampling
- Resample daily strategy returns rather than trades. Useful for strategies with overlapping positions where trades are not cleanly separable.
- Parametric simulation
- Fit a distribution to trade outcomes and draw from it. Convenient but imposes a distributional assumption that financial returns usually violate.
- Randomised entry timing
- Shift entry dates by a few bars to test whether results depend on precise timing. A different question, but a valuable robustness check.
Running a simulation correctly
- 1
Express trades in R or in percentage terms
Using currency amounts confuses position sizing changes with strategy performance. R multiples make the analysis clean.
- 2
Apply your actual position sizing rule
Compound the equity path using fixed fractional sizing, so position sizes shrink after losses exactly as they would live. This materially changes the drawdown distribution.
- 3
Run at least 10,000 iterations
Fewer produces unstable tail estimates, which is precisely the part you care about.
- 4
Use block resampling if trades cluster
If your strategy opens several correlated positions at once, or if losses cluster in specific conditions, independent shuffling understates risk substantially.
- 5
Record the full distribution
Median, 75th, 95th, and 99th percentile drawdowns; the probability of exceeding your tolerance; and the distribution of time underwater.
- 6
Re-run at different position sizes
Find the risk per trade at which the 95th percentile drawdown matches your tolerance. That is your sizing answer.
What Monte Carlo cannot tell you
- It assumes the future resembles the sample. If the edge decays or the regime changes, the simulated distribution describes a world that no longer exists.
- Simple shuffling assumes independence. Real trades cluster: losses arrive together in adverse conditions. Block resampling partially addresses this; nothing fully does.
- It cannot fix a biased backtest. If the underlying trades came from an overfitted or look-ahead-contaminated test, the simulation propagates that error faithfully.
- It ignores unseen tail events. If your sample contains no crisis, the simulation will not invent one. Add a stress scenario manually.
- It says nothing about whether the edge is real. It characterises variance given the trades, not whether those trades reflect a genuine effect.
- Results depend on the sample size. With 50 trades, the resampled distribution is extremely wide and only tells you that you do not have enough data.
Frequently asked questions
How many Monte Carlo iterations do I need?
At least 10,000 for stable tail estimates. The percentiles you care about, the 95th and 99th, depend on the extreme outcomes, which require many samples to estimate reliably. Running 1,000 iterations gives an unstable picture of exactly the part that matters most.
Should I use shuffling or bootstrapping with replacement?
Shuffling preserves your exact set of trades and asks only how ordering affects the path. Bootstrapping with replacement also accounts for the fact that your historical sample is itself one draw, producing a wider and generally more honest distribution. Running both and comparing is informative.
What if my simulated drawdowns are unacceptable?
Reduce position size, which scales drawdowns roughly proportionally. Halving risk per trade approximately halves the drawdown at the cost of approximately halving the return. The alternative, accepting a drawdown you will not tolerate, means abandoning the strategy at the worst possible moment.
Does Monte Carlo prove my strategy works?
No. It characterises the variability of outcomes given your historical trades. If those trades came from an overfitted backtest, the simulation describes the variability of a fitted result. Monte Carlo is a risk tool, not a validation tool; validation comes from out-of-sample and walk-forward testing.
Why is my simulated drawdown worse than my backtest?
Because your backtest is a single path and history happened to deliver a relatively favourable ordering. The median simulated drawdown is typically 20 to 50 percent worse than the historical one, and the 95th percentile can be twice as bad. That gap is the point of running the simulation.
Test this idea before you trade it
Describe the rules in plain language and AlgoTrader AI turns them into a structured strategy blueprint with a configurable historical backtest, cost assumptions, and exportable code.
Build a backtestKeep reading
- BacktestingBacktesting Guide: How to Test a Strategy Honestly
- RiskDrawdown Explained: The Number That Decides If You Quit
- RiskRisk of Ruin: The Mathematics of Not Blowing Up
- RiskPosition Sizing Guide: How Many Shares or Contracts to Trade
- BacktestingWalk-Forward Analysis: Testing How a Strategy Would Have Been Run
- BacktestingTrading Performance Metrics: What Each One Hides
Referenced by
Educational use only. This guide explains how a strategy works. It is not investment advice, not a recommendation, and no result described here is a forecast. Test any approach on historical and out-of-sample data, size positions conservatively, and never risk money you cannot afford to lose.