When running a Monte Carlo simulation for trading drawdown, the core action is not "predicting the maximum drawdown." Instead, it is reshuffling your historical trade results, running thousands of iterations, and looking at the distribution of drawdowns. The drawdown number from a single backtest only represents one specific order of trades. Monte Carlo answers a different question: with the same strategy but a different arrangement of luck, how deep could the drawdown go?

A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
Here is a concrete reference point: analysis has shown that the drawdown from a single backtest can be significantly lower than the worst-case scenarios revealed by Monte Carlo. One strategy showed a backtest drawdown of -12%, but in the worst 5% of simulated scenarios, the drawdown reached -25% to -30%, more than double the backtest value. This gap is sequence risk, and it is exactly why stress testing matters.
First, Check What Data You Have
The prerequisite for running a simulation is at least one trade-by-trade record containing the profit/loss amount or return percentage for each trade, along with the trade direction. A trade list exported from backtesting software, a trading journal, or a broker statement all work. If you only have an equity curve without trade-by-trade data, you can still do an "equity curve reshuffle," but it is less precise than reshuffling individual trades.
The number of trades directly affects how reliable the results are. Some tutorials recommend at least 200–300 historical trades. Below about 100 trades, the simulation results become very noisy. If your strategy trades infrequently and has a small historical sample, the simulated drawdown distribution itself will be unstable. In that case, treat it only as a directional reference, not as a precise risk budget.
Which Reshuffling Method You Choose Determines Whether the Simulation Is Honest
This is the step where mistakes are most likely in practice. There are two common approaches:
IID random reshuffle (simple reordering): Randomly reorder the profit/loss of all trades, assuming each trade is independent of the others. This is the simplest to implement and works well for mean-reversion strategies because trades in such strategies have weak correlations. The problem is that it destroys any structure of consecutive losses or consecutive wins that may exist in your strategy, which can underestimate the probability of sustained drawdowns.
Block Bootstrap (block resampling): Treat a sequence of consecutive trades as a single "block" and sample these blocks as whole units, preserving the order within each block. The block size is typically around the square root of the number of trades. If your strategy has trend-following characteristics or losses tend to cluster together, the block method gives a more conservative drawdown distribution that is closer to reality. Comments in some code libraries explicitly note that for trend strategies, IID reshuffling underestimates the probability of sustained drawdowns.
My recommendation: If you are not sure which category your strategy falls into, run IID first, then run block bootstrap with a block size of √N. If the 95th percentile drawdowns from both methods are close, either one is fine. If the block method gives significantly deeper drawdowns, your trades have sequence dependence, and you should rely on the block results.
How Many Iterations to Run and What Metrics to Look At
At least 1,000 iterations are recommended. For stable tail metrics like the 5th percentile, running 5,000–10,000 iterations is more reliable. Computation is not a bottleneck on modern machines; a simple reshuffling simulation completes in seconds.
Do not only look at the average. The key cut points of the drawdown distribution:
- Median (50th percentile): The drawdown depth under typical conditions.
- 95th percentile (i.e., the worst 5% of scenarios): This is the basis for setting position sizes and stop-loss levels. If the 95th percentile drawdown is something you cannot tolerate, your current position size is too large.
- Maximum value: The deepest drawdown that appeared in the simulation, useful for understanding extreme tail risk.
One analysis offers a decision-making logic worth referencing: if a strategy has a 95th percentile drawdown close to -25% at 2% risk per trade, reducing risk to 1% may keep the 95th percentile drawdown within -25%. The trade-off is a lower median return, but the probability of survival improves significantly. This trade-off is more aligned with the purpose of stress testing than "pursuing the highest return."
One Important Condition Where the Simulation Can Fail
Monte Carlo simulation assumes that the historical trade profits and losses you are reshuffling can represent the future distribution of profits and losses. If the market structure has fundamentally changed, this assumption no longer holds. Events like the 2015 Swiss franc depegging or the 2020 COVID shock are not covered by the profit/loss distribution in historical data. Simulation results tell you "based on past data, how deep the drawdown could be." They do not tell you "the future will not produce a loss magnitude never seen in history."
Another limitation: if you adjust position sizes in the simulation, you need to make sure the position logic in every simulated path matches your live trading. Some forum discussions mention people mistakenly setting the position size to 100% equity in Monte Carlo when the actual backtest used 10%, causing the simulated drawdown to be far larger than the backtest drawdown and making comparison impossible. The simulation parameters must align with the strategy parameters you are evaluating. Otherwise, the numbers you produce are meaningless.
How to Actually Run It in Practice
If you do not want to write your own code, some backtesting platforms have built-in Monte Carlo modules. Wealth-Lab's Monte Carlo-Lab supports options like trade reshuffling and trade skipping probability. StrategyQuant also offers trade reordering and trade simulation with skipping. If you write it yourself in Python, use numpy.random for bootstrap resampling, loop to accumulate the equity curve, record the maximum drawdown for each path, and finally take the percentiles. The core loop takes no more than a few dozen lines.
Trade skipping is a variant worth adding: randomly drop a certain percentage of trades (e.g., 1%–5%) to simulate signals you might miss or orders that fail to fill in live trading. If your strategy's returns depend heavily on a few large winning trades, the skip test will make the drawdown noticeably worse, which is useful information in itself.

A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
References
- Switch Markets·Monte Carlo Simulation in Trading, 2026-07-01
- Docs.rs·MonteCarloMethod (IID Shuffle and Block Bootstrap documentation)
- GitHub·Learn-Quant Bootstrap documentation (IID vs Block Bootstrap), 2026-05-31
- Switch Markets (Spanish version)·Simulación Monte Carlo en Trading, 2026-08-26
- Wealth-Lab·Monte Carlo-Lab extension documentation
- Wealth-Lab·Monte-Carlo-Lab-Stress-Test discussion (trade skipping option), 2025-11-12
- Wealth-Lab·MetaStrategy drawdown vs Monte Carlo drawdown discussion (position size parameter mismatch issue), 2025-11-12
- StrategyQuant·Tests de Monte Carlo (trade reordering and skipping), 2025-08-28
- arXiv·Drawdown Risk Beyond Brownian Motion (Monte Carlo drawdown path generation method reference)


