Monte Carlo Simulation for Trading: Drawdown, Streak, and Ruin Ranges
How a trading Monte Carlo simulation turns a trade record into drawdown, losing-streak, and ruin-threshold ranges, which model to use, and the assumptions that make its output wrong.
A Monte Carlo simulation for trading generates thousands of possible trade sequences from a trade record or a stated outcome model, then measures each sequence’s maximum drawdown, longest losing streak, and whether equity touched a chosen loss threshold. The result is a range, not a single number. In the illustrative example later in this article, 95% of simulated 250-trade paths had a deepest drawdown below about 20% at 1% risk per trade. That figure belongs to that example’s record and assumptions; it is not a general Monte Carlo benchmark. The range is not a forecast. It shows how much variation your assumptions allow, and it is only as good as those assumptions: the trade record, the edge estimate, whether outcomes are independent, and the sizing rule.
This article covers how to build and read that range before a period of trading, so risk per trade and drawdown limits are set against a distribution rather than a single remembered equity curve. The account, session, and trade limits that the simulation informs belong to trading risk management. Deciding whether a drawdown you are already in is statistically unusual is a separate, after-the-fact check, covered in telling normal drawdown variance from execution deterioration.
How do you run a Monte Carlo simulation on a trading record?
- Choose the input. A clean record of realized outcomes in R (multiples of the amount risked) under one rule version, or a stated model of win rate and payoff.
- Choose the model. Shuffle the existing trades, resample them with replacement, resample them in blocks, or draw from a parametric model. Each answers a different question (see the table below).
- Fix the horizon and sizing rule. For example, 250 trades at a fixed percentage of current equity risked per 1R.
- Define the thresholds before running. A drawdown-from-peak level, a loss-from-start level, and any external account floor.
- Generate enough paths for the statistic you need. Medians stabilize with relatively few paths; 95th and 99th percentiles and threshold events near 1% need substantially more. Rerun with a different random seed to check.
- Read percentiles, not the average path. Report the median, 90th, 95th, and 99th percentile of maximum drawdown and longest losing streak, plus how often each threshold is touched.
- Stress the edge assumption. Rerun with a smaller expectancy than the record shows, and with block resampling if outcomes cluster.
- Write down the assumptions next to the result. A percentile without its input, model, horizon, and sizing rule cannot be reviewed later.
What does a trading Monte Carlo simulation actually estimate?
A single equity curve is one ordering of one set of outcomes. The same trades in a different order would have produced a different deepest drawdown and a different longest losing streak, even though the win rate and average outcome are unchanged. A Monte Carlo simulation replaces that one path with many plausible paths and reports the distribution of the statistics you care about.
The technique predates its use in trading. Metropolis and Ulam’s 1949 paper introduced the Monte Carlo method as a statistical approach to problems in mathematical physics.1 In trading, the quantities that usually matter are:
- Maximum drawdown: the largest peak-to-trough decline on each simulated path, in R or as a percentage of equity.
- Longest losing streak: the most consecutive losing trades on each path.
- Threshold touch rate: the share of paths on which equity touches a level you defined in advance, such as 20% below the starting balance. In this article, risk of ruin means the simulated probability of touching a predefined loss threshold within the stated trade horizon. The threshold here is a loss level that would force you to stop, not literal bankruptcy or zero capital. The same figure changes if you move the threshold or lengthen the horizon, and a threshold measured from starting equity is different from a drawdown measured from the running peak.
- Ending result: the range of final equity after the horizon. This is the least useful output for setting limits, because the path matters as much as the ending result.
The simulation does not estimate whether the strategy has an edge. It takes the edge as an input. Whether a record is large and stable enough to supply that input is the question trading data statistical reliability covers.
Which simulation model answers which question?
Search results and calculators use “Monte Carlo” for several different procedures. They are not interchangeable.
| Model | What it does | Question it answers | Main limitation |
|---|---|---|---|
| Trade-order shuffle | Reorders the same trades without replacement | How bad could the path have been with exactly these outcomes? | Ending result never changes; says nothing about a future sample |
| Bootstrap resampling | Draws trades from the record with replacement to build new sequences | What range of paths is plausible if future trades look like this record? | Treats trades as independent and the record as representative |
| Block bootstrap | Draws runs of consecutive trades rather than single trades | Same, while keeping short-run clustering in the record | Needs a choice of block length; still assumes the record is representative |
| Parametric model | Draws wins and losses from a stated win rate and payoff | What range follows from these summary numbers? | Discards the actual payoff shape unless you model it explicitly |
The bootstrap comes from Efron’s 1979 paper, which introduced it as a general method for estimating the sampling distribution of a statistic from the observed data alone.2 Resampling trades is an application of that idea to a trade record. It inherits the same requirement: the record has to stand in for the population of future trades.
A shuffle keeps the ending result fixed and varies only the order. That makes it a useful reality check on the one equity curve you remember. It is not a tool for the next period, because the next period will not contain exactly the same trades.
Worked example: one 100-trade record, 250 simulated trades
The figures below come from a seeded simulation of an illustrative record, not from any real trader or strategy. The record has 100 trades with a 45% win rate. Winners are 10 trades at +1R, 10 at +1.5R, 15 at +2R, and 10 at +3R. Losers are 50 trades at −1R, 3 at −1.5R (slippage past the stop), and 2 at −2R. Expectancy is +0.265R per trade. Each scenario uses 20,000 simulated paths of 250 trades, with a fixed percentage of current equity risked per 1R.
Bootstrap resampling, 250 trades, by risk per trade:
| Risk per 1R | Median max drawdown | 95th percentile | 99th percentile | Paths touching −20% from start |
|---|---|---|---|---|
| 0.5% of equity | 6.1% | 10.6% | 13.4% | 0.0% |
| 1% of equity | 11.9% | 20.3% | 25.5% | 0.7% |
| 2% of equity | 22.8% | 37.0% | 44.8% | 7.9% |
Three points in this table are easy to miss:
- The drawdown in R does not depend on risk per trade. Across all three rows, the median deepest decline was 12.5R and the 95th percentile was 22R. Risk per trade converts that R distribution into percentage terms. Doubling risk roughly doubles the percentage drawdown, and compounding makes it slightly less than double.
- A threshold touch is not the same as a drawdown from peak. At 2% risk, the 95th-percentile drawdown from peak is 37%, but only 7.9% of paths touched 20% below the starting balance. Most deep drawdowns in this example started from a raised peak. An account rule measured from the starting balance and one that trails the peak are different thresholds, so simulate the one that applies.
- The shuffle understates the future. Shuffling the original 100 trades at 1% risk gave a 95th-percentile drawdown of 13.7%. The resampled 250-trade horizon gave 20.3%. Longer horizons give more opportunities for a deep decline, and resampling allows orderings and combinations of the recorded outcomes that the original sequence never contained.
Magdon-Ismail and colleagues showed that for an idealized process with positive drift, the expected maximum drawdown keeps growing with the time horizon, logarithmically, rather than settling at a fixed value.3 A trade record is not that idealized process, but the practical consequence carries over: a drawdown statistic always needs its horizon attached.
How long can a losing streak run?
In this example, the median longest losing streak over 250 trades was 8 losses in a row, and the 95th percentile was 12. At a 55% loss rate that is expected, not alarming. Schilling’s analysis of the longest run in coin-tossing sequences shows the typical longest run grows with the logarithm of the number of trials: roughly log base 1/p of (n × q), where p is the probability of the outcome that forms the run and q = 1 − p.4 With p = 0.55 (loss) and n = 250, that gives about 7.9, which matches the simulated median.
The practical use is to set expectations before the streak happens. Shuffling the 100-trade record gave a median longest streak of 6. A trader who remembers six as their worst run can be surprised by eight in the next 250 trades, yet the simulation says eight is the typical case. Streak length depends mainly on the loss rate and the number of trades, not on payoff size. Drawdown depth depends on both.
Why a win-rate-and-payoff calculator can understate the tail
A parametric calculator with a 45% win rate, +1.8R wins, and −1R losses has almost the same expectancy as the example record (+0.26R). At 1% risk, its 95th-percentile drawdown over 250 trades was 17.8%, compared with 20.3% for resampling the actual record. Using the record’s average win (+1.89R) and average loss (−1.06R) gave 19.0%.
The gap comes from what the calculator drops. The actual record includes −1.5R and −2R losses and a spread of winning sizes. Averaging them away narrows the distribution. If a calculator only asks for win rate and reward-to-risk ratio, treat its drawdown output as a lower estimate for a record with slippage or variable winners.
The assumption that matters most: the edge estimate
Every scenario above assumes future trades look like the 100 in the record. That is the weakest link. Resampling the record’s own average 20,000 times gave a 90% range for expectancy of roughly +0.01R to +0.53R per trade, and 4.5% of resamples had an average at or below zero. One hundred trades cannot pin down an edge of this size.
So run the simulation again with a smaller edge. The table subtracts a fixed amount from every trade, keeping 1% risk and 250 trades:
| Expectancy assumed | 95th-percentile max drawdown | Paths touching −20% from start | Paths ending below start |
|---|---|---|---|
| +0.265R (the record) | 20.3% | 0.7% | 0.4% |
| +0.10R | 31.6% | 11.4% | 17.8% |
| 0R (no edge) | 42.1% | 38.9% | 54.6% |
The risk decision changes a lot across these rows. A risk level that looks comfortable at the record’s own expectancy can touch a 20% loss threshold on roughly one path in nine if the true edge is closer to +0.10R. The haircut is not a prediction that the edge is smaller. It shows how much the chosen risk level depends on the edge being as large as it looked. Backtested records often warrant stronger sensitivity testing and a more conservative edge assumption, especially when parameters or the strategy itself were selected, or tested repeatedly, on the same historical data. A live sample is not automatically representative either; it can be short or come from one market regime. Backtest vs. forward test covers how evidence should carry between those stages.
When trades cluster, independent resampling understates drawdowns
Plain bootstrap resampling assumes any trade could appear anywhere in a sequence. If losses tend to follow losses because of volatility regimes, a setup that stops working for a few weeks, or a session where behavior deteriorates, that assumption hides the clustering. It also makes the simulated drawdowns too shallow.
Block methods address this by resampling runs of consecutive trades. Künsch extended the bootstrap to stationary dependent observations by selecting blocks of consecutive observations at random with replacement.5 Politis and Romano’s stationary bootstrap uses blocks of random length drawn from a geometric distribution, so the resampled series is itself stationary.6
In the example, the same 100 trades were reordered so that the win/loss sequence had a lag-one autocorrelation of about 0.3: a loss was more likely to be followed by another loss. At 1% risk over 250 trades:
| Resampling method | 95th-percentile max drawdown | 95th-percentile longest losing streak | Paths touching −20% from start |
|---|---|---|---|
| Independent (single trades) | 20.2% | 12 | 0.5% |
| Blocks of 5 consecutive trades | 25.1% | 18 | 1.9% |
| Blocks of 10 consecutive trades | 26.2% | 20 | 2.4% |
| Stationary bootstrap (mean block 10) | 23.7% | 18 | 1.4% |
The ending results were almost the same across methods. The tails were not. If a record shows clustering, report the block result alongside the independent one and use the more conservative one for limits. Block length is a judgment call, so run more than one. The independent rows in this table and the earlier table differ slightly (20.2% vs. 20.3%, 0.5% vs. 0.7%) only because of simulation noise, which is a reminder that rare-event percentages need many paths to be stable.
Common ways a trading simulation misleads
- Mixing rule versions. Trades taken under an old stop rule or a different setup definition describe a different strategy. Simulate each rule version separately, or the distribution describes neither.
- Leaving costs out. Use realized outcomes after commissions, fees, and slippage. A record of planned R multiples overstates the edge.
- Using an overfit backtest as the input. Resampling faithfully reproduces whatever bias the record contains. It cannot correct it.
- Expecting resampling to invent unseen losses. Historical resampling only reuses outcomes that are in the record. If the record never contained a gap loss, extreme slippage, an unusually large loss, or a regime failure, simple resampling cannot generate one. Its tail estimates are conditional on the observed record and may understate real tail risk when important adverse outcomes are missing from the sample. Model those risks as separate stress scenarios, for example by adding a defined large loss to the record and rerunning.
- Ignoring the sizing rule. Fixed-dollar risk and fixed-percentage-of-equity risk produce different percentage drawdowns from the same R sequence. Simulate the rule you will actually use.
- Reading the median path as the plan. The median is the outcome you are least likely to need a limit for. Limits exist for the tail.
- Treating the 95th percentile as a ceiling. Under the simulated model, about 5% of paths fall beyond the estimated 95th-percentile drawdown, and the 99th percentile was worse again in every scenario above. That is a property of the model, not a known probability for real future trading.
- Assuming behavior stays constant. The simulation holds size and trade selection fixed through a drawdown. In practice, risk escalation or hesitation after a losing streak changes the sequence. A simulated limit only describes a trader who keeps following the sizing rule.
Turning the output into a written risk decision
A simulation is useful when it changes a limit before trading starts. A practical sequence:
- Pick the tolerance first. Decide the drawdown you could sit through without changing the method or breaking an external account rule, before looking at the output.
- Compare it with the stressed result, not the record’s result. Choose the risk per trade whose 95th- or 99th-percentile drawdown fits that tolerance under a haircut edge and, if relevant, block resampling. The general per-trade arithmetic is in position sizing in trading.
- Write down the expected streak and drawdown ranges. For example: “Over the next 250 trades, 8 to 12 consecutive losses and a 12% to 20% drawdown are within the simulated range at this risk level.” Writing it down in advance gives the trader something to check against in the middle of a drawdown.
- Define the review trigger. If a live drawdown goes beyond the stressed 95th percentile, that starts a review. It is not a verdict. The review checks both variance and execution, as in behavioral drawdown measurement.
- Rerun when the input changes. A new rule version, a new market, a different sizing rule, or a much larger record means the old distribution no longer applies.
Where Costante fits
Costante does not run Monte Carlo simulations, backtest strategies, calculate position size, estimate risk of ruin, connect to brokers, or determine whether a strategy has an edge. A simulation of this kind is done in a spreadsheet or a statistical tool.
Costante supports the behavioral side of the same process. It covers session planning, self-defined behavioral guardrails, pre-trade and in-session checks, low-friction logging, and structured review. A record logged against a stated plan makes it easier to see which trades belong to which rule version and whether size followed the plan. It also shows whether a drawdown came with execution drift. Those are the inputs and review questions that decide whether a simulated range means anything. The trader remains responsible for the model, the risk decision, and every order.
Frequently asked questions
How many simulated paths do I need?
There is no universal number. It depends on the statistic and how precisely you need it. A good check is whether the figures you use stop moving when you rerun with a different random seed. Medians settle quickly. The 95th and 99th percentiles and threshold events with a frequency near 1% need substantially more paths. The worked example used 20,000 paths as its setting, not as a minimum, and its independent-resampling results still differed by a few tenths of a percentage point between runs.
How many trades does the input record need?
There is no fixed minimum. A small record tends to reproduce its own quirks, and it leaves the edge estimate so uncertain that the haircut scenarios matter more than the base case. In the example, 100 trades left expectancy anywhere from about zero to twice the observed value. More trades under a single, unchanged rule version help more than more trades pooled across rule changes.
Is Monte Carlo simulation the same as risk of ruin?
No. As this article uses the term, risk of ruin is one output: the simulated probability of touching a predefined loss threshold within the stated trade horizon. A simulation also produces drawdown and streak distributions. The risk-of-ruin figure depends on where the threshold is set, how long the horizon is, and whether the threshold is measured from the starting balance or from the running peak. For a closed-form estimate of the same probability and how each input moves it, see risk of ruin in trading.
Can I use a simulation to check whether my current drawdown is normal?
A resampled distribution can serve as the comparison, but that is a different job with its own rules, such as fixing the comparison window before looking. Behavioral drawdown measurement covers it. This article covers using the distribution to set limits in advance.
Sources
Costante provides educational workflow tools, not financial advice. Trading involves risk.
Footnotes
-
Metropolis, N., & Ulam, S. (1949). The Monte Carlo Method. Journal of the American Statistical Association, 44(247), 335–341. Cited only for the origin of the method as a statistical approach; the paper concerns mathematical physics, not trading. ↩
-
Efron, B. (1979). Bootstrap Methods: Another Look at the Jackknife. The Annals of Statistics, 7(1), 1–26. Introduces the bootstrap as a general method for estimating the sampling distribution of a statistic from observed data. The application to trade records is this article’s, not the paper’s. ↩
-
Magdon-Ismail, M., Atiya, A. F., Pratap, A., & Abu-Mostafa, Y. S. (2004). On the Maximum Drawdown of a Brownian Motion. Journal of Applied Probability, 41(1), 147–161. Shows the expected maximum drawdown grows logarithmically with time for positive drift. The result concerns an idealized process, not any trading record. ↩
-
Schilling, M. F. (1990). The Longest Run of Heads. The College Mathematics Journal, 21(3), 196–207. Gives the log n law for the longest run in independent trials, including the biased-coin form log base 1/p of (nq). Applies to independent outcomes; clustered trades produce longer runs. ↩
-
Künsch, H. R. (1989). The Jackknife and the Bootstrap for General Stationary Observations. The Annals of Statistics, 17(3), 1217–1241. Extends the bootstrap to dependent stationary sequences by resampling blocks of consecutive observations. ↩
-
Politis, D. N., & Romano, J. P. (1994). The Stationary Bootstrap. Journal of the American Statistical Association, 89(428), 1303–1313. Introduces resampling blocks of random, geometrically distributed length for weakly dependent stationary data. ↩