Common Monte Carlo Mistakes

Direct Answer

Monte Carlo simulation appears simple: generate random scenarios, compute statistics, report percentiles. But the most common implementations contain subtle errors that produce systematically biased results, usually optimistic biases that make the strategy look better than it is. The errors cluster into five categories: ignoring autocorrelation in returns (causing drawdown underestimation), using wrong tail assumptions (understating tail risk), misinterpreting what percentile outcomes mean, over-smoothing or averaging the results (hiding the variance), and not fixing or reporting random seeds (producing non-reproducible analysis).

Each error can independently lead to poor deployment decisions, undercapitalized positions, inadequate drawdown reserves, premature live deployment of over-fit strategies. Recognizing these mistakes before running Monte Carlo analysis is far more efficient than diagnosing unexpected live underperformance after deployment.

Key Takeaways

  • Standard bootstrap on daily returns is almost always wrong: Financial daily returns have GARCH autocorrelation; standard bootstrap destroys this, producing optimistic drawdown distributions. Use block bootstrap.
  • Normal distribution for returns understates tail risk: Equity returns consistently have fat tails (kurtosis > 3); fitting a normal distribution and simulating from it produces too few extreme return events in the synthetic series.
  • The 5th percentile outcome is not the worst possible outcome: It is the level that 95% of simulated paths exceeded, within the simulation's model. Real-world tail risk can extend beyond the simulation's historical anchor.
  • Averaging equity paths eliminates variance: The average of many equity paths converges to the mean path, which has no drawdowns. Report individual path percentile distributions, not the average of all paths.
  • Not fixing the seed makes analysis non-reproducible: A Monte Carlo result without a documented seed cannot be verified, audited, or compared across runs.
  • Monte Carlo cannot fix overfitting: Resampling from historically overfitted data produces a distribution of overfitted results. The method tests path robustness, not parameter overfitting.
  • The backtest percentile rank should be reported: Where the historical backtest result falls in the Monte Carlo distribution tells you whether the historical run was typical or fortunate.
  • Misinterpreting "worst case" as "impossible" is dangerous: Traders often interpret the worst simulated path as a safe outer bound. It is not. It is a lower bound on the simulation model, not a lower bound on reality.

Core Concepts

Mistake 1: Ignoring Autocorrelation (Using Standard Bootstrap on Daily Returns)

Applying standard (i.i.d.) bootstrap to daily strategy returns is the most common technical error in Monte Carlo backtesting. Standard bootstrap selects return observations independently and randomly, treating each day's return as uncorrelated with the previous day. For financial returns, this assumption is flatly wrong. The squared daily returns of virtually every liquid market instrument exhibit significant positive autocorrelation, high-volatility days tend to follow high-volatility days, and calm periods cluster together. This is the GARCH effect: volatility clustering.

When standard bootstrap breaks up volatility clustering, the synthetic return series have uniformly distributed volatility across time, no volatile periods, no calm periods. The result is that large negative returns never cluster consecutively in the synthetic series, because the bootstrap scatters them randomly. This produces drawdown distributions that are systematically too optimistic: the 5th percentile max drawdown from standard bootstrap might be −22%, while block bootstrap on the same data produces −34%. The standard bootstrap result creates a false sense of security about tail drawdown risk.

The diagnostic: compute the Ljung-Box test for autocorrelation in the squared daily returns. If the test rejects the null of no autocorrelation (it almost always will for equity daily returns), standard bootstrap is inappropriate. Use moving block bootstrap (MBB) with a block length of 10-20 trading days, or stationary bootstrap (Politis and Romano, 1994) with the same block length as the geometric distribution mean. The fix requires only a minor change to the implementation, block selection instead of individual observation selection, but has a material effect on drawdown estimation.

Mistake 2: Using Normal Distribution for Return Simulation

Parametric Monte Carlo that fits a normal distribution to historical returns and samples synthetic returns from that distribution has a fundamental problem: financial returns are not normally distributed. They have fat tails, the probability of a −5% one-day return is much higher in real markets than a normal distribution calibrated to the same mean and standard deviation would predict. For U.S. equity indices, the empirical kurtosis of daily returns typically ranges from 4 to 8, compared to 3 for the normal distribution. The excess kurtosis represents real additional tail probability that a normal simulation omits.

The practical consequence: a strategy with a historical worst daily return of −3.8% (about 3.5 standard deviations for a typical equity volatility of 1.1% daily) would, under normality, have a probability of only 0.023% for any given day. Under the empirical distribution, the probability might be 10-20× higher, because fat tails mean 3.5σ events are common in practice. A Monte Carlo simulation that underestimates the probability of large daily losses will underestimate maximum drawdown, ruin probability, and tail risk across all metrics.

The solutions are two: use non-parametric bootstrap (which inherits the empirical distribution exactly, fat tails and all), or fit a Student-t distribution to the returns (which has a shape parameter that can accommodate fat tails). For most strategy evaluation purposes, bootstrap is preferred because it requires no distributional assumption. If parametric simulation is needed (for analytical tractability or for generating scenarios outside the historical range), a Student-t fit with degrees of freedom estimated from the empirical kurtosis provides a better tail model than normality. A Student-t with ν = 4-6 degrees of freedom typically fits equity daily return kurtosis better than normality.

Mistake 3: Misinterpreting Percentile Outcomes

Several misinterpretations of Monte Carlo percentile results recur in practice. The first: treating the 5th percentile outcome as the worst possible outcome. It is not. The 5th percentile is the level that 95% of simulated paths exceeded. It is based on the historical data sample used for simulation, which may not include the worst market conditions the strategy could encounter. Real drawdowns can be worse than the 5th percentile Monte Carlo estimate, especially in market regimes not represented in the historical data.

The second common misinterpretation: treating the mean of all Monte Carlo equity paths as the "expected" equity path. For compound returns, the mean path has no drawdowns, averaging many stochastic paths produces a smooth compound growth curve that looks nothing like any individual path the strategy will actually experience. The mean is a mathematical artifact of averaging; no single realization of the strategy will look like it. Report the median path (50th percentile) as the "typical" realization, alongside the 10th and 90th percentile paths as the range band. The 50th percentile path will have drawdowns; the mean path will not, and the 50th percentile is what a trader actually experiences on average.

The third misinterpretation: reporting the best-case (90th or 95th percentile) Monte Carlo outcome as the "potential upside" and not mentioning the downside. Monte Carlo is primarily a risk tool. The distribution is symmetric in information value, the 5th percentile downside is as important as the 95th percentile upside. Any presentation that shows only the favorable tail of the distribution is selective and misleading.

Mistake 4: Over-Smoothing, Averaging, or Aggregating Paths Incorrectly

A subtle but consequential mistake is computing statistics from a smoothed or averaged version of the Monte Carlo paths. This arises in several forms. One form: computing the "average equity path" by taking the element-wise mean of all paths at each time step, then computing max drawdown from this average path. The average path has dramatically lower volatility than any individual path, because the averaging process cancels out idiosyncratic fluctuations across paths. The resulting max drawdown will be much smaller than the median path's actual max drawdown.

Another form: applying a rolling average or exponential moving average to each equity path before computing drawdown metrics. Smoothing eliminates intra-period volatility from each path, producing paths that look less volatile than the underlying return series actually is. Max drawdown computed from a smoothed path is an underestimate, the original unsmoothed path would have had deeper intraperiod declines that the smoothing conceals.

The correct approach: compute all performance metrics (CAGR, Sharpe, max drawdown) from the individual, unsmoothed, actual equity curve for each bootstrap path, not from any aggregated or smoothed version. Then collect the 5,000 individual metric estimates and report their distribution. The distribution is where the statistical summary belongs; the aggregation should not happen at the path level.

Worked Scenario: Spotting Errors in a Flawed Monte Carlo Report

  1. Scenario: A colleague presents Monte Carlo results for a trend-following strategy: "Historical max drawdown −13.2%. Monte Carlo 5th percentile max drawdown: −15.4%. Monte Carlo median max drawdown: −12.8%. Seed not specified. 200 paths."
  2. Error 1, Too few paths: 200 paths at the 5th percentile means only 10 effective observations. The 5th percentile estimate has very high sampling variance, easily ±5% absolute. The estimate of −15.4% is not reliably precise.
  3. Error 2, Median below historical: The historical max drawdown (−13.2%) is worse than the Monte Carlo median (−12.8%). This is suspicious: the historical result should typically be near or somewhat worse than the median (since Monte Carlo often reveals the historical result was near the median). This may indicate the simulation is not preserving the correct statistical properties of the strategy returns, possibly standard bootstrap being applied to serially correlated returns, producing an optimistically narrow drawdown distribution.
  4. Error 3, No seed reported: Without a seed, these results cannot be reproduced. The "5th percentile of −15.4%" cannot be verified, running the same code again will produce a different number.
  5. Error 4, Implied complacency: The 5th percentile of −15.4% is only slightly worse than the historical max drawdown of −13.2%. In a correct block bootstrap analysis, the 5th percentile typically exceeds the historical max drawdown by a meaningful margin (30-80% worse in relative terms). Results this close suggest either (a) standard bootstrap was used (destroys volatility clustering, produces optimistic drawdown), (b) the simulation was run on the smoothed equity path rather than daily returns, or (c) the 5th percentile is based on 10 paths (200 × 0.05) and is extremely noisy.
  6. Correct approach: Run block bootstrap with l = 15, 5,000 paths, seed = 42. Expected corrected 5th percentile max drawdown: likely −25% to −35% given the strategy type. The difference is material for capital planning.

Measurement Framework

MeasurementQuestion to Answer
Ljung-Box test p-value on squared daily returnsIs autocorrelation present? (p < 0.05 means standard bootstrap is inappropriate)
Kurtosis of historical daily returns vs. 3.0Are returns fat-tailed? (Kurtosis > 4 means normality understates tail risk)
Historical max drawdown vs. Monte Carlo medianIs the historical result near the median (representative) or in the top 20% (suspicious)?
5th percentile drawdown from block vs. standard bootstrapHow much does autocorrelation preservation affect the tail drawdown estimate?
Path count sufficient for 5th percentile precision?Is N ≥ 5,000 for this percentile estimate?
Seed documented alongside results?Is the analysis reproducible?
Median path vs. average path max drawdownIs the report summarizing results correctly (median) or incorrectly (average)?

Common Failure Modes

Standard Bootstrap on Period Returns (The Most Common Error)

As discussed extensively above, applying standard bootstrap to daily (or weekly) period returns without testing for autocorrelation is the most common implementation error. The resulting drawdown distributions are too optimistic, typically by a factor of 1.5-2× on the 5th percentile drawdown depth. Block bootstrap is the minimal correction. Always test for autocorrelation before choosing the resampling method.

Conflating Simulation Noise With Strategy Risk

When the path count is too low, the variation in percentile estimates across different seeds is substantial. A practitioner running the simulation with 200 paths might observe that the 5th percentile drawdown estimate varies between −12% and −22% across different seeds. The temptation is to interpret this variation as reflecting genuine uncertainty about the strategy's drawdown risk, which it partially does, but it also includes substantial simulation noise. Increase path count to 5,000+ to separate the genuine strategy variability from the simulation's own sampling error.

Using Monte Carlo to "Prove" the Strategy Is Good

Monte Carlo is sometimes used after the fact to "validate" a strategy decision already made, with the implicit goal of finding settings (path count, method, seed) that produce favorable-looking results. This reversal of the scientific process, using the simulation to confirm a pre-existing conclusion rather than to test an open question, is a form of selection bias that produces unreliable risk estimates. Monte Carlo should be run once, with pre-specified method parameters, before the deployment decision, not iteratively until the results look favorable.

Not Reporting Where the Historical Backtest Falls in the Distribution

A Monte Carlo report that shows the distribution of outcomes without reporting where the historical backtest result falls within that distribution omits a key diagnostic. If the historical backtest CAGR of 18% sits at the 85th percentile of Monte Carlo outcomes. That is a warning sign: the historical run was more favorable than most alternative histories. If it sits at the 50th percentile, the historical result is representative. Always include the historical result's percentile rank in the Monte Carlo summary.

The Errors All Point the Same Way

The pattern worth noticing across these errors is directional. Nearly all of them make results look better than they are. Ignoring dependence understates variability. Assuming a well-behaved distribution understates extremes. Reading a favourable percentile as an expectation understates the downside. These are not scattered randomly around the truth, which is why an unchecked simulation should be assumed optimistic.

stock market business finance Common Monte Carlo errors all
Photo by Alexandra_Koch via Pixabay

The most economical safeguard is stating each assumption explicitly before running anything, then checking afterwards whether the simulated output resembles the input series in the respects that matter. A set of paths visibly tamer than the history it came from has lost something along the way.

A second safeguard is arithmetic discipline about percentiles. A tail estimate needs enough paths to be stable, and a figure that shifts noticeably between runs is a number the simulation has not yet resolved.

None of these corrections make a simulation predictive. A well-built one describes the range implied by its assumptions, and the assumptions remain the weakest part of the exercise.

Frequently Asked Questions

What is the single most common Monte Carlo mistake in trading strategy analysis?

The single most common mistake is applying standard (i.i.d.) bootstrap to daily return series without checking for autocorrelation. Financial returns have volatility clustering (GARCH effects) that standard bootstrap destroys, producing drawdown distributions that are systematically too optimistic. The fix is block bootstrap, which preserves the autocorrelation structure within each block.

What does 'over-smoothing' mean in Monte Carlo output?

Over-smoothing refers to applying a moving average or kernel smoothing to the Monte Carlo equity paths before computing statistics, which artificially reduces the measured volatility and maximum drawdown of each path. A real equity curve with 1.2% daily volatility will show deeper drawdowns than a smoothed version. Using smoothed paths for risk metric estimation systematically understates drawdown risk.

How do I know if my return distribution assumption is producing wrong tail estimates?

Compare the empirical distribution of your historical returns (histogram) against the fitted parametric distribution (normal, Student-t) over the full return range, paying special attention to returns beyond ±3 standard deviations. If the empirical distribution has substantially more observations in the tails than the fitted distribution predicts (excess kurtosis), parametric simulation based on that distribution will underestimate tail risk. Use a QQ plot: if the empirical data points curve away from the fitted distribution line in the tails, the fitted distribution understates tail risk.

Can I use Monte Carlo simulation as a substitute for out-of-sample testing?

No. Monte Carlo simulation tests within-sample robustness, how sensitive your backtest results are to the specific sequence of historical observations. Out-of-sample testing tests generalization to genuinely unseen data from a different time period. Monte Carlo cannot detect overfitting to the historical period because it only resamples from that same historical period. Out-of-sample testing and walk-forward validation address overfitting; Monte Carlo does not.

Is using the mean of Monte Carlo outcomes a valid summary statistic?

For compound return metrics (CAGR, terminal wealth), the mean of Monte Carlo paths is not a valid summary statistic because it is pulled above the median by a small number of very good paths. In log-normal compound return distributions, the mean exceeds the median significantly. Report the median outcome as the 'typical' result, along with the 10th and 90th percentile for the plausible range.

What is the 'peso problem' and how does it affect Monte Carlo analysis?

The peso problem refers to a tail event that is known to be possible but has not yet occurred in the historical sample used for the simulation. Monte Carlo can only generate scenarios anchored to the historical sample; it cannot generate events outside that sample's experience. Always check whether critical tail events that could affect the strategy occurred within the historical test window.

What is the difference between simulation noise and genuine strategy variability?

Simulation noise is the variation in Monte Carlo results caused by insufficient path count, running the same simulation with a different seed produces different estimates. Genuine strategy variability is the actual distribution of outcomes the strategy produces across different historical paths. To distinguish them: check if key percentile estimates change substantially when you double the path count. If they do, you are seeing simulation noise.

How does survivorship bias in the historical data affect Monte Carlo results?

If the historical return data used for Monte Carlo contains survivorship bias, backtesting on stocks that survived to the present without including delisted stocks, then the resampled return distribution is positively biased. Monte Carlo resampling from this data will produce an overly optimistic distribution of outcomes. Fix survivorship bias in the underlying data before applying Monte Carlo; the simulation cannot correct for data biases it does not know about.

Should the simulation reuse the cost assumptions from the backtest it is based on?

It should, and quietly dropping them is a common way simulated results drift optimistic. If the input series is net of commissions, spread and slippage, every resampled path inherits those costs. If the input is gross, the whole distribution is gross, and percentile figures quoted from it describe an account that pays nothing to trade. Stating whether the inputs were net or gross belongs next to the output, because the two cannot be distinguished from the numbers alone.

References

  • Lopez de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Chapters 11-14 discuss common backtesting pitfalls including path dependency, multiple testing, and overfitting in simulation contexts.
  • Sullivan, R., Timmermann, A., & White, H. (1999). "Data-Snooping, Technical Trading Rule Performance, and the Bootstrap." The Journal of Finance, 54(5), 1647-1691. Covers bootstrap methods for trading rule evaluation and pitfalls from data snooping.
  • Efron, B., & Hastie, T. (2016). Computer Age Statistical Inference. Cambridge University Press. Chapter 10 discusses bootstrap assumptions and when bootstrap fails.
  • Politis, D. N., & Romano, J. P. (1994). "The Stationary Bootstrap." Journal of the American Statistical Association, 89(428), 1303-1313. Addresses the autocorrelation problem that standard bootstrap fails to handle.
  • Aronson, D. (2007). Evidence-Based Technical Analysis. Wiley. Chapters 6-8 cover statistical testing of trading rules and common analytical errors in technical strategy evaluation.

Educational Disclaimer

This guide is for educational and informational purposes only. Understanding Monte Carlo simulation errors helps improve the quality of strategy analysis, it does not guarantee successful trading outcomes. Trading involves risk, including the possible loss of principal. Consult a qualified financial professional before making trading or investment decisions.