Monte Carlo Analysis for Trading Systems
A backtest hands you one equity curve, but that curve is only one ordering of the trades — a single shuffle of the deck. Monte Carlo analysis re-deals that deck thousands of times, rebuilding the equity curve with the trade order randomized or the trades resampled, and turns one historical result into a distribution of plausible paths. The sections below explain how the method works, why trade sequence changes drawdown so much, how to read the percentile outputs, and the hard limits of what a simulation built from past trades can say.
Key takeaways
- Monte Carlo analysis re-runs a strategy's historical trades thousands of times with randomized order or resampling, producing a distribution of equity paths instead of one curve.
- Reshuffling the same fixed trades leaves total profit unchanged but changes drawdown completely — six $200 losses scattered over a year feel very different from six in a row.
- The useful outputs are distributions: the range of ending balances, the distribution of maximum drawdowns, and the probability of breaching a chosen loss threshold.
- Read percentiles, not single numbers — plan risk around an unfavorable percentile of drawdown (for example the 90th–95th), not the one drawdown the backtest happened to print.
- The simulation only rearranges what is already in the input: it assumes those statistics persist and cannot anticipate regime changes, unseen events or flaws baked into the backtest.
- Monte Carlo is a scenario and stress-testing tool, never a forecast of future performance.
A backtest equity curve is one shuffle of the deck
Monte Carlo analysistakes results a strategy has already produced — usually the list of closed trades from a backtest — and re-runs them thousands of times with the order randomized or the trades resampled. Each run rebuilds the equity curve from the same underlying statistics, and across all the runs the single historical line turns into a distribution of paths.
The reason this matters is that trade sequencedrives drawdown. The total profit of a fixed list of trades does not depend on their order, but the journey does: six $200 losses scattered across a year are six shallow dips, while the same six losses in a row are a single $1,200 drawdown — same trades, same total, very different experience and very different margin pressure along the way.
What one simulation run actually does
A run is mechanical: take the trade results, randomize them, replay them one by one, and record the path. Repeat until the statistics stabilize — typically 1,000 to 10,000 runs — then aggregate.
Trade list
closed trades from a backtest or history
Randomize
shuffle the order or resample with replacement
Rebuild curve
replay the trades, record the path
Repeat
thousands of independent runs
Aggregate
percentiles of endings and drawdowns
The randomization method matters. A pure shufflere-orders the exact historical trades, so every run ends at the same final profit and only the path varies — the cleanest way to isolate sequence risk. Resampling with replacement draws trades at random from the list, repeating some and skipping others, so both the path and the ending vary. That asks a broader question: what if the future is statistically like the past without literally repeating it? Percentage-based position sizing also spreads the endings, because the same trades compound differently depending on when they land.
The distributions it produces
The output of a Monte Carlo pass is not a verdict but three families of numbers, each answering a different question about the same strategy:
Ending balance range
Where the account could plausibly finish. With resampling, the spread between the 5th and 95th percentile endings shows how much of the backtest's result was sampling luck.
Max drawdown distribution
The worst peak-to-trough fall in each run, collected across all runs. This is usually the headline output, because the backtest shows only one of these values.
Loss-threshold probability
The share of runs that breached a chosen line — for example, how many of 5,000 paths ever fell 25% below a peak, or below the starting balance.
The last of these connects directly to risk of ruin: instead of a formula built on assumptions, the simulation simply counts how often the replayed history crossed the level you could not tolerate.
Reading percentiles instead of single numbers
A single number — “max drawdown 9%” — invites false precision. The simulated distribution is read in percentiles: the median is the typical case, and the 90th or 95th percentile is the plausible bad case the same statistics could have produced.
Interpreting a Monte Carlo output
- Input: 400-trade backtest, 52% winners, avg win $120, avg loss $100, start 10,000.
- 5,000 resampled runs produce the following:
- Ending balance — 5th pct: 12,100 · median: 15,800 · 95th pct: 19,400.
- Max drawdown — median: 11% · 95th pct: 19%.
- Runs ever breaching a 25% drawdown: ~2%.
- The backtest's own max drawdown was 9% — below the simulated median.
- Reading: a drawdown near 19% is consistent with these statistics; sizing should survive that, not just the 9% the backtest printed.
The practical shift is in what you plan around. If only the most favorable orderings keep the account above your pain threshold, the strategy is not robust — it was lucky. You can run these numbers on your own inputs with the free Monte Carlo Trading Simulator.
Stress-testing a single backtest curve
This is the method’s real job. A backtest report presents one path as if it were the strategy, but that path is one draw from a distribution the report never shows. Monte Carlo asks how fragile the conclusion is: if reshuffling the same trades routinely produces drawdowns twice as deep as the reported one, the smooth reported curve was partly an accident of ordering.
It pairs naturally with the other checks covered in why backtests can be misleading: out-of-sample testing probes whether the statistics are real, while Monte Carlo probes how much pain those statistics can deliver even if they are. A strategy can pass the first test and still fail the second — positive expectancy with a 95th-percentile drawdown no realistic account size survives.
What Monte Carlo cannot tell you
Every simulated path is assembled from trades that already happened. The method rearranges history; it does not imagine anything outside it:
- It assumes the input statistics persist— the same win rate, average win and average loss going forward. A regime change invalidates every percentile.
- It cannot conjure unseen risks: a loss larger than any in the sample, a spread blowout, a weekend gap or a liquidity event leaves no trace in the input and therefore none in the output.
- It inherits the backtest’s flaws. Overfit parameters, optimistic costs or bad data flow straight through into a precise-looking distribution.
- Independent resampling ignores correlation between trades— losing streaks caused by a persistent market condition can be longer than random ordering suggests.
Frequently asked
How many Monte Carlo runs are enough?
Most implementations use somewhere between 1,000 and 10,000 runs. More runs make the percentile estimates smoother and the tails more stable, but they cannot improve the quality of the input — a million reshuffles of an overfit backtest are still describing an overfit backtest.
Does Monte Carlo predict my future drawdown?
No. It shows the range of drawdowns the strategy's historical trade statistics could have produced under different orderings. If the future behaves differently from the input data — different volatility, costs or market regime — the real drawdown can fall outside every simulated path.
What is the difference between shuffling and resampling with replacement?
Shuffling re-orders the exact historical trades, so every run ends at the same total profit and only the path differs — useful for isolating sequence risk. Resampling with replacement draws trades at random, repeating some and dropping others, so both the path and the ending vary, which usually gives a wider and more realistic spread.
Can Monte Carlo analysis fix a bad or overfit backtest?
No. The simulation inherits every bias in its input. If the backtest is curve-fit, used unrealistic costs or relied on poor data, the Monte Carlo output is a precise-looking distribution built on those same flaws. It stress-tests sequence risk; it does not validate the strategy.
Related guides
Why Backtests Can Be Misleading
Curve fitting, optimistic cost assumptions and bad data — the main reasons a great backtest fails on a live account.
What Is Risk of Ruin?
Why losing streaks compound, and how risk per trade turns the same edge into very different ruin odds.
Trading Expectancy Explained
The average result per trade, R-multiples, and why win rate alone cannot tell you whether a strategy made money.
Related free tools
Free, no login required.
Related NuvoraSync features
Sources & further reading
- NIST/SEMATECH e-Handbook of Statistical Methods — reference handbook covering the statistical concepts behind simulation and resampling.
- MQL5 Articles library — practitioner articles on testing and analyzing MetaTrader strategies, including Monte Carlo methods.
Want to analyze your own MetaTrader account data automatically?
NuvoraSync is a read-only MetaTrader journal and analytics workspace. Connect MT4 or MT5 once and your trades, drawdown and performance update on their own — no manual entry, no signals, just your own data.
This article is for educational purposes only. It does not provide trading signals, investment advice, financial recommendations, broker recommendations or trade execution. Backtest results are historical simulations and do not predict future performance. Calculations are based on user inputs and are estimates only.