Monte Carlo simulation for trading generates alternative equity paths from historical returns or a chosen statistical model. Instead of judging a strategy by one backtest, you examine a distribution of possible returns, drawdowns and capital shortfalls.
The practical question is not “What will this strategy earn?” It is “What outcomes does this model allow, and could the account withstand them?” That distinction matters. A simulation can produce very precise numbers without producing a reliable forecast.
Within statistical testing for trading strategies, Monte Carlo analysis helps assess how sensitive results are to trade order, sampled outcomes and modeling assumptions. It does not establish that a trading edge exists.
What a Trading Monte Carlo Simulation Actually Changes
A historical backtest records one sequence of events. Monte Carlo analysis creates alternative sequences through repeated random sampling, then calculates performance for each one.
What gets randomized determines what the exercise can answer. Shuffling completed trades tests alternative ordering. Sampling trades with replacement changes both their order and their frequency. Generating artificial market paths and rerunning the strategy tests its behavior within a chosen market model.
These are different experiments. Calling all three “Monte Carlo” does not make their results interchangeable. Before running anything, define the question, the simulation horizon and the assumptions that remain fixed.
Choose the Simulation Method Before Reading the Results
Trade Shuffling: Change the Order, Not the Outcomes
A shuffle rearranges the existing observations without replacement. Every recorded trade appears once in each simulated sequence.
This can reveal how differently losses might cluster. However, shuffling unchanged percentage returns does not change terminal compounded wealth when there are no cash flows, trading interruptions or other rules that depend on the path:
Ending equity = Starting equity × (1 + r1) × … × (1 + rN)
Multiplication gives the same result regardless of order. Drawdown does not, because it depends on the peaks and troughs along the way.
Consider a hypothetical $50,000 account with four account returns: +2%, +2%, −2% and −2%. Assume no deposits, withdrawals or other equity adjustments.
| Return sequence | Ending equity | Maximum drawdown |
|---|---|---|
| +2%, −2%, +2%, −2% | $49,960.01 | 2.04% |
| +2%, +2%, −2%, −2% | $49,960.01 | 3.96% |
The destination is identical; the ride is not. Shuffling fixed dollar profits and losses likewise preserves their total, assuming the account continues trading every observation. If position sizes change after losses, or trading stops at an equity threshold, those rules must be applied within each path.
Bootstrap Resampling: Allow Outcomes to Repeat
A basic bootstrap draws observations with replacement. A recorded loss might appear several times in one path and not appear at all in another. This changes the mixture of outcomes as well as their order, allowing terminal wealth to vary. The sampling mechanics are set out in the NIST explanation of bootstrap resampling.
For a hypothetical 300-trade horizon, draw 300 observations from the historical sample, calculate the equity path and repeat. The resulting distribution is conditional on treating that sample as representative of the modeled trading process.
An empirical bootstrap cannot draw an individual observation outside the original sample. It can create a worse cumulative drawdown by repeating or clustering recorded losses, but it does not invent an unseen gap loss. Repetition is not new evidence.
Block Resampling: Keep Some Dependence Intact
Sampling individual observations independently breaks their historical relationships through time. If consecutive outcomes are dependent, that assumption can distort the simulated paths.
A block bootstrap samples consecutive groups instead. A five-day block, for example, retains the order of returns within those five days. The stationary bootstrap uses randomly sized blocks. Both approaches, including the importance of block length, are covered in Politis and White’s research on dependent bootstrap methods.
Blocks preserve some local structure, not every feature of the original process. Short blocks may discard relationships that persist longer; long blocks leave fewer effectively distinct stretches to sample. Compare plausible lengths and disclose whether the risk estimates change materially.
Model-Based Simulation: Generate New Market Paths
Another approach generates market returns, volatility or other inputs from a fitted model. The strategy then trades those artificial paths using its original entry, exit and sizing rules.
This can examine behavior beyond the recorded trade list, but the assumptions carry more weight. A model that excludes jumps cannot test jump exposure. A model with constant trading costs cannot reveal what happens when execution becomes more expensive.
Resampling finished strategy returns asks about alternative outcomes for an assumed return process. Rerunning the strategy on simulated market data asks how its decisions behave within that market model.
Build Equity Paths That Match the Trading Rules
The simulation needs an explicit account update rule. If rt is the net account return during period t, equity evolves as:
Et = Et−1 × (1 + rt)
For sequential trades expressed in risk multiples, let Xt be the net outcome per unit of initial trade risk and f the fraction of current equity allocated to that risk:
Et = Et−1 × (1 + fXt)
Under this simplified rule, risking 0.5% of equity on a trade that loses 1R reduces equity by 0.5%. A 2R winner adds 1%. A loss can exceed 1R if execution passes the planned exit. The mechanics belong to fixed-fractional position sizing; the simulation must reproduce the actual rule rather than assume every loss lands neatly at the stop.
Do not multiply historical dollar profits by a changing equity balance unless those observations have been normalized appropriately. Dollar profit, account return and risk multiple are different units.
For overlapping positions, sequential trade sampling may misrepresent simultaneous exposure. Consider daily portfolio returns marked to market, retaining the same dates across instruments when resampling. Drawing each instrument independently would discard their observed relationships on those dates.
Include commissions, spread, financing and slippage where applicable, without subtracting costs twice. If costs or fills change with position size, recalculate them rather than assuming returns scale perfectly. Apply margin restrictions, minimum trade sizes and trading suspension rules inside each path.
Measure Drawdowns Across Entire Paths
Ending wealth alone can hide an unacceptable interim loss. An account may finish profitably after crossing a capital threshold that would have stopped trading in practice.
For each path, track the running equity high, including starting equity:
Ht = max(E0, E1, …, Et)
Then calculate drawdown as a positive loss fraction:
Dt = 1 − Et / Ht
The largest Dt on that path is its maximum peak-to-trough drawdown. Calculate this separately for every simulated path before summarizing the distribution.
A useful report includes median ending wealth, a lower percentile of ending wealth, median maximum drawdown, an upper percentile of maximum drawdown and the proportion of paths breaching a stated threshold. Report the horizon beside every result: a drawdown probability over 100 trades is not interchangeable with one over 1,000 trades.
Track time below the previous equity high too. If a path has not recovered by the simulation’s end, label that recovery as unfinished. Dropping unrecovered paths from a recovery-time average makes the result look better by excluding the cases that need most attention.
Trade-based simulations measure duration in trades unless time is modeled separately. Two hundred trades could represent weeks or years; annualized results require a defensible calendar.
Read Percentiles Without Turning Them Into Promises
Suppose the 95th percentile of simulated maximum drawdown is 24%. This means approximately 95% of modeled paths have maximum drawdowns at or below 24%, with the remainder above it, subject to the percentile convention used.
It does not mean the account has a verified 95% chance of avoiding a larger live drawdown. That interpretation would require confidence in the model, its inputs and its relevance to future conditions.
A central 90% range for ending wealth is also different from a confidence interval for an estimated mean. One describes variation across modeled outcomes; the other describes uncertainty in an estimate. Label the output accurately.
Equity fan charts need similar care. A line joining the fifth percentile at each date does not usually represent one continuous simulated account. Different paths can supply the percentile at different dates. Calculate maximum drawdowns from complete paths, not from the chart’s percentile boundary.
How Many Monte Carlo Runs Are Enough?
Choose the number of runs around the precision needed for the decision, rather than treating a round number as a quality standard. For independent simulated paths, the proportion breaching a threshold is a binomial proportion.
If p̂ is the observed breach proportion and M is the number of paths, its approximate Monte Carlo standard error is:
Standard error ≈ √[p̂ × (1 − p̂) / M]
The calculation uses the same sampling uncertainty addressed in NIST’s treatment of binomial proportion intervals. When breach counts are very small, use an appropriate interval rather than relying on a symmetric normal approximation.
For illustration, a 5% breach rate across 10,000 independent paths has an estimated standard error of about 0.22 percentage points. A rough 95% normal interval extends about 0.43 percentage points on either side.
That measures simulation noise under the fixed model, not uncertainty about whether the model is correct. More runs reduce numerical noise; they do not improve poor historical data. Zero observed breaches is not proof of zero risk either.
Record the random seed, repeat with other seeds and check whether the reported probabilities and percentiles remain stable enough for their intended use. Rare outcomes need particular caution because few simulated paths determine their estimates.
Stress the Assumptions, Not Just the Random Seed
Changing the seed tests a different random realization. Changing the assumptions tests whether the decision survives a different account of how trading might work.
Useful stress scenarios include higher execution costs, weaker average outcomes, larger adverse moves and longer runs of unfavorable conditions. Keep these separate from the baseline simulation. An assumed stress is not an observed historical fact.
Compare candidate position sizes using the same underlying sampled outcomes where practical, then recalculate each equity path. Do not assume halving trade risk exactly halves every drawdown percentile: compounding and account constraints can change the relationship.
Most importantly, resampling a selected backtest does not remove the selection bias that may already be embedded in its returns. Trying many strategy variations can select historical noise, and a simulated market model can itself omit relevant features. These problems are examined in The Probability of Backtest Overfitting.
Use the Results to Make a Defined Decision
Set the decision rule before inspecting the attractive charts. For example, a hypothetical assessment might reject a proposed position size if the modeled probability of crossing a 20% drawdown exceeds a predetermined tolerance over the next 250 trades. Those thresholds are examples, not universal risk limits.
Then ask whether that decision survives plausible changes to costs, sampling method, block length and assumed strategy performance. If a small modeling adjustment reverses it, the apparent precision deserves less weight.
Combine simulation with walk-forward testing and out-of-sample validation rather than using it as a substitute. Keep an audit record of the return sample, horizon, sizing rules, costs, resampling method, run count and failure thresholds.
The useful output is not a promise of profit or a supposedly safe drawdown number. It is a conditional assessment: which outcomes the model produces, which assumptions drive them, and whether the proposed trading rules remain tolerable when those assumptions become less comfortable.