Monte Carlo simulation is a technique that uses random sampling to explore the range of possible outcomes from a system. Named after the famous casino (because it involves repeated random trials), it's one of the most powerful tools for understanding risk.
In trading, a Monte Carlo simulation takes your actual trade results and reshuffles them many times-usually thousands or tens of thousands-to see what different sequences would have produced.
Why does sequence matter? Because even with identical trades, different orderings produce wildly different equity curves.
- Consider a simple example: You have 10 trades: 5 winners at +$200 each and 5 losers at -$100 each.
Sequence A: W, W, W, W, W, L, L, L, L, L
Your account goes: +200, +400, +600, +800, +1000, +900, +800, +700, +600, +500
Sequence B: L, L, L, L, L, W, W, W, W, W
Your account goes: -100, -200, -300, -400, -500, -300, -100, +100, +300, +500
Both sequences end at the same place (+$500), but the journeys are completely different. Sequence A has no drawdown until the end. Sequence B starts with a 50% drawdown that might have caused you to quit.
Monte Carlo shows you all possible sequences-and crucially, how often the scary ones occur.
Traditional backtesting shows you what happened. Monte Carlo shows you what could happen. This distinction matters enormously.
Your backtest gives you one path through history. But that path was just one realization of many possible paths. If you could rewind and let the market play out again with the same trades but different timing and sequencing, you'd get a different equity curve.
Monte Carlo simulates thousands of these alternative paths, revealing:
- The range of possible final equity values
- The distribution of maximum drawdowns
- The probability of hitting specific profit targets
- The likelihood of catastrophic scenarios
Most traders dramatically underestimate potential drawdowns. Your backtest might show a maximum drawdown of 15%, and you think "I can handle 15%." But that's just one path.
Monte Carlo might reveal that with your trades, the 95th percentile drawdown is 35%. That means there's a 5% chance you'll experience a 35% drawdown-not "once in a lifetime" rare, but "probably within a few years" likely.
If you can't handle 35%, you need to reduce position size.
A great backtest might reflect genuine edge or lucky sequencing. Monte Carlo helps distinguish:
- If most simulated paths are profitable, your edge is robust
- If only a minority of paths are profitable, your backtest might have benefited from favorable trade ordering
- If the variance between paths is enormous, your system is highly sensitive to sequence
| Scenario |
What Monte Carlo Reveals |
| Strong edge |
Most paths profitable, tight distribution |
| Weak edge |
Many paths unprofitable, wide distribution |
| Lucky backtest |
Original path is an outlier |
| Robust system |
Results consistent across sequences |
Let's get into the mechanics. Understanding how Monte Carlo works helps you interpret and trust the results.
You start with a list of your historical trade results-ideally expressed as R-multiples (return per unit of risk) to normalize across different position sizes.
Example trade data (in R-multiples):
+2.5R, -1.0R, +1.2R, +0.8R, -1.0R, -1.0R, +3.1R, +0.5R, -1.0R, +1.8R
The simulation randomly samples from your trades with replacement. "With replacement" means each trade can be selected multiple times (simulating that similar setups might repeat).
One random sequence might produce:
-1.0R, +1.8R, +1.2R, -1.0R, +2.5R, -1.0R, +0.8R, +3.1R, -1.0R, +0.5R
Starting from your initial capital, walk through the sequence calculating running equity:
| Trade |
Result |
Running Equity |
| 1 |
-1.0R |
-1.0R |
| 2 |
+1.8R |
+0.8R |
| 3 |
+1.2R |
+2.0R |
| 4 |
-1.0R |
+1.0R |
| 5 |
+2.5R |
+3.5R |
| ... |
... |
... |
Record key metrics: ending equity, maximum drawdown, largest winning streak, largest losing streak.
Run this process 10,000 times (or more). Each run produces a different random sequence, a different equity curve, and different metrics.
Now you have 10,000 different outcomes. You can analyze:
- Mean and median ending equity
- 5th, 25th, 75th, 95th percentiles
- Distribution of maximum drawdowns
- Probability of various outcomes
The distribution tells you what to expect-not just the average, but the full range.
Let's walk through a practical Monte Carlo analysis step by step.
Pull your complete trade history with R-multiples. You need at least 30 trades for meaningful analysis, ideally 100+.
If you don't have R-multiples, calculate them:
R-multiple = Actual P&L / Initial Risk
| Trade |
P&L |
Risk |
R-Multiple |
| 1 |
+$450 |
$200 |
+2.25R |
| 2 |
-$200 |
$200 |
-1.00R |
| 3 |
+$180 |
$180 |
+1.00R |
| 4 |
-$150 |
$150 |
-1.00R |
Here's how to perform a basic Monte Carlo (can be done in Excel, Python, or specialized tools):
Parameters:
- Number of simulations: 10,000
- Trades per simulation: 100 (projecting forward)
- Starting capital: $10,000
- Risk per trade: 1% ($100 = 1R)
For each simulation:
- Randomly select 100 trades from your historical results (with replacement)
- Calculate equity after each trade
- Record: final equity, maximum drawdown, longest losing streak
After all simulations:
- Sort results and find percentiles
- Calculate mean and standard deviation
- Analyze distribution shape
Equity Distribution:
- Median final equity: Your "expected" outcome if things go normally
- 5th percentile: Bad luck scenario (1 in 20 chance of worse)
- 95th percentile: Good luck scenario (1 in 20 chance of better)
- Spread between 5th and 95th: How much variance you should expect
Drawdown Distribution:
- Median maximum drawdown: What you'll probably experience
- 95th percentile drawdown: What you should be prepared for
- Maximum observed drawdown: Absolute worst case in simulations
Example Results:
| Metric |
5th %ile |
Median |
95th %ile |
| Final Equity |
$8,200 |
$12,400 |
$18,100 |
| Max Drawdown |
-8% |
-15% |
-28% |
| Max Losing Streak |
4 trades |
7 trades |
12 trades |
These results tell you: expect to end around $12,400, but you might end as low as $8,200 or as high as $18,100. Plan for drawdowns up to 28% and losing streaks up to 12 trades.
Raw Monte Carlo output is just numbers. The value comes from interpretation and action.
A robust system shows:
- Most simulated paths are profitable
- Tight clustering around median outcomes
- Manageable worst-case scenarios
- Original backtest not an outlier
A fragile system shows:
- Many paths end in losses
- Huge spread between best and worst outcomes
- Catastrophic worst-case scenarios
- Original backtest in the lucky minority
- The most important question Monte Carlo answers: Can I survive the worst realistic outcomes?
Look at the 95th percentile drawdown. Ask yourself:
- Could I financially survive this drawdown?
- Could I psychologically survive this drawdown?
- Would I still be trading when it ended?
If the answer to any is "no," you're trading too large. Reduce position size until the 95th percentile drawdown is survivable.
Compare your actual backtest to the Monte Carlo distribution:
- If your backtest is near the median: Results look legitimate
- If your backtest is at the 90th percentile: You might have gotten lucky
- If your backtest is at the 10th percentile: You might have gotten unlucky (or made errors)
A backtest that produced exceptional results should be viewed skeptically if Monte Carlo shows it's an outlier.
- Monte Carlo prevents unrealistic expectations by showing the full range: Instead of: "My system makes 24% per year"
Think: "My system makes between 8% and 45% per year (5th to 95th percentile), with a median of 24%"
This probabilistic framing keeps you grounded when results inevitably vary from expectations.
One of the most practical applications of Monte Carlo is determining appropriate position size.
Set a "ruin threshold"-the drawdown level that would force you to stop trading, either financially or psychologically. For many traders, this is 30-50%.
Run Monte Carlo simulations at different position sizes and find the size where the 95th (or 99th) percentile drawdown just hits your ruin threshold.
Example Analysis:
| Position Size |
Median Drawdown |
95th %ile Drawdown |
Acceptable? |
| 3% risk/trade |
-18% |
-42% |
No |
| 2% risk/trade |
-12% |
-28% |
Borderline |
| 1.5% risk/trade |
-9% |
-21% |
Yes |
| 1% risk/trade |
-6% |
-14% |
Yes |
If your ruin threshold is 25%, position sizing at 2% or below keeps you safe from 95th percentile scenarios.
The Kelly Criterion gives a mathematically optimal position size based on edge and variance:
Kelly % = (Win Rate × Avg Win / Avg Loss - Loss Rate) / (Avg Win / Avg Loss)
But full Kelly produces extreme volatility that most traders can't stomach. Monte Carlo helps calibrate:
- Calculate full Kelly
- Run Monte Carlo at full Kelly and observe drawdown distribution
- Reduce to fractional Kelly (usually
25-50%) until drawdowns are acceptable
With limited trade history, Monte Carlo results are uncertain. Be conservative:
| Trade Sample |
Confidence Level |
Kelly Fraction |
| 30-50 trades |
Low |
10-20% Kelly |
| 50-100 trades |
Medium |
20-35% Kelly |
| 100-200 trades |
Good |
35-50% Kelly |
| 200+ trades |
High |
50%+ Kelly |
As you accumulate data and Monte Carlo results stabilize, you can increase position size.
When choosing between trading systems, Monte Carlo provides better comparison than simple backtest metrics.
- Two systems with identical average returns might have very different risk profiles: System A:
- Mean return: 25%
- Median return: 24%
- 95th percentile drawdown: 15%
System B:
- Mean return: 25%
- Median return: 18%
- 95th percentile drawdown: 35%
System A is clearly superior. Its median is closer to its mean (less skew), and its worst-case is much better. System B's high mean is driven by occasional huge wins, but most paths underperform.
Use Monte Carlo to calculate risk-adjusted metrics:
Monte Carlo Sharpe Ratio = Median Return / Standard Deviation of Returns Monte Carlo Sortino Ratio = Median Return / Downside Deviation
These capture both expected return and the variability of that return across different paths.
Drawdown characteristics matter as much as returns:
| Metric |
System A |
System B |
| Median Max Drawdown |
-12% |
-18% |
| 95th %ile Drawdown |
-22% |
-38% |
| Avg Recovery Time |
14 trades |
31 trades |
| Longest Drawdown |
42 trades |
87 trades |
System A has both smaller and shorter drawdowns, making it easier to trade psychologically even if raw returns are similar.
Monte Carlo is powerful but can be misused. Avoid these errors.
Running only 100 or 1,000 simulations provides unreliable results. Percentile estimates, especially in the tails, need large samples to stabilize.
Minimum: 10,000 simulations
Better: 50,000+ simulations
More simulations just take more computer time-there's no downside.
Standard Monte Carlo assumes trades are independent-that the outcome of trade 1 doesn't affect trade 2. In reality, market conditions create dependencies:
- After a big move, subsequent moves might be smaller (mean reversion)
- During trending periods, directional trades might cluster
- Your psychology affects trades sequentially
For more accuracy, use block resampling (keeping consecutive trades together) or regime-aware simulation.
If your trade sample excludes periods where you stopped trading (because of drawdowns), you're feeding Monte Carlo biased data. Include your worst periods, not just the good ones.
Monte Carlo works best for moderate projection periods. Projecting 100 trades forward is reasonable. Projecting 1,000 trades assumes your edge persists unchanged, which may not hold.
Markets evolve. Edges decay. Use Monte Carlo for near-to-medium term scenarios, not long-term forecasts.
Monte Carlo produces distributions, not point estimates. Don't reduce rich output to a single number:
Wrong: "Monte Carlo says I'll make 28%"
Right: "Monte Carlo shows a distribution from 12% to 48%, with median 28% and significant variance"
The distribution is the information. Reducing it loses the value.
You don't need to build Monte Carlo from scratch. Several approaches are available.
For basic Monte Carlo, Excel or Google Sheets works:
- List your R-multiples in a column
- Use INDEX/MATCH with RANDBETWEEN to randomly select trades
- Calculate cumulative equity
- Create a Data Table to run many scenarios
- Use percentile functions on results
- Limitations: Slow with many simulations, manual setup required.
Python with Num Py makes Monte Carlo fast and flexible:
import numpy as np
## Your trade results in R-multiples
trades = np.array([2.5, -1.0, 1.2, 0.8, -1.0, -1.0, 3.1, 0.5, -1.0, 1.8])
## Monte Carlo parameters
n_simulations = 10000
n_trades = 100
## Run simulations
results = []
for _ in range(n_simulations):
sequence = np.random.choice(trades, size=n_trades, replace=True)
equity_curve = np.cumsum(sequence)
final_equity = equity_curve[-1]
max_drawdown = np.min(equity_curve - np.maximum.accumulate(equity_curve))
results.append((final_equity, max_drawdown))
## Analyze results
final_equities = [r[0] for r in results]
print(f"Median: {np.percentile(final_equities, 50):.2f}R")
print(f"5th percentile: {np.percentile(final_equities, 5):.2f}R")
print(f"95th percentile: {np.percentile(final_equities, 95):.2f}R")
Several platforms offer built-in Monte Carlo:
- Trade journal software with analytics
- Strategy backtesting platforms
- Quantitative research tools
The advantage of dedicated tools: automated data connection, visualization, and pre-built analysis.
Monte Carlo produces lots of data. Visualization helps:
- Equity curve fans (showing many paths)
- Drawdown distributions (histograms)
- Percentile bands around median path
- Probability density functions
Good visualization makes Monte Carlo output actionable rather than abstract.
At minimum, 10,000. For stable percentile estimates, especially in the tails, 50,000 or more is better. More simulations just take more computation time; there's no statistical downside.
Monte Carlo tells you the range of outcomes your system might produce given its historical trades. If most simulated paths are unprofitable, your system probably doesn't have edge. But Monte Carlo can't distinguish edge from luck-it can only show what your historical trades might produce.
Compare your actual backtest results to the Monte Carlo distribution. If your backtest is at or above the 90th percentile of simulated outcomes, you may have experienced favorable trade sequencing. Be skeptical and expect regression toward the median.
No. Monte Carlo shows what could happen if future trades are similar to historical trades. It cannot account for changes in market conditions, edge decay, or regime shifts. Use it for risk assessment, not prediction.
Backtesting shows what happened with a specific sequence of events. Monte Carlo shows what could happen with many possible sequences derived from the same underlying trades. Backtesting is one path; Monte Carlo is many paths.
Absolutely. Monte Carlo shows potential drawdowns, and position size should be set so that even worst-case drawdowns are survivable. This is one of the most practical applications of Monte Carlo analysis.
Most traders live in a world of averages. Average win rate. Average return. Average drawdown. These averages feel safe and manageable.
But averages hide enormous variation. The average drawdown might be 12%, but the bad-luck drawdown is 28%. The average return might be 25%, but the bad-luck return is -5%. Knowing only averages leaves you unprepared for the non-average scenarios that will inevitably occur.
Monte Carlo simulation reveals the full picture. It shows you all the paths your trading might take-the good ones, the bad ones, and the catastrophic ones. It forces you to confront worst-case scenarios before they happen, so you can prepare accordingly.
The traders who survive long-term aren't the ones with the highest average returns. They're the ones who sized their risk so that even the worst realistic outcomes didn't destroy them.
Monte Carlo helps you become that trader.
Running Monte Carlo simulations requires data, tools, and expertise. Most traders never do it because the friction is too high. Thrive eliminates that friction.
✅ Automatic Monte Carlo Analysis - Import your trades and Thrive runs thousands of simulations instantly, showing you the full distribution of possible outcomes.
✅ Drawdown Probability Curves - See exactly what drawdowns you should prepare for at different confidence levels. No surprises.
✅ Position Size Recommendations - Based on your trade history and risk tolerance, Thrive recommends appropriate position sizing to survive worst-case scenarios.
✅ Visual Equity Curve Fans - See your potential paths visualized, from best-case to worst-case, all derived from your actual trading data.
✅ Strategy Comparison - Compare multiple strategies using Monte Carlo-derived risk-adjusted metrics, not just simple backtest returns.
✅ Weekly AI Coach - Get insights about what Monte Carlo reveals about your trading and specific recommendations for managing the risks it surfaces.
You wouldn't drive a car without knowing how fast it can stop. Why trade without knowing how bad your drawdowns could get?
Know your worst-case. Plan for it. Survive it.
→ Start Monte Carlo Analysis on Your Trades