Originally published on YuRa Trading.
A number that was too low
We ran our free risk of ruin calculator on the Asian Range Breakout, a strategy we backtested and now forward test at 1%
risk per trade. We gave it the strategy's real averages from the backtest. It said the chance of the account ever falling 20% below where it started, over four years of trading, was about 2%.
Then we ran the same question on the strategy's real trades. The answer was about 11%.
The calculator was not broken. It did exactly what it was built to do. The
problem is a simplifying assumption that almost every risk of ruin calculator makes, and it matters for a lot of real strategies. This post explains how the calculator works, how we checked it, and when you should not trust it.
What risk of ruin means
Risk of ruin is the chance that a run of bad luck drags your account down to a level where you would give up, before your edge has time to pay off.
"Ruin" here does not mean zero. Almost nobody keeps trading a strategy after it has cut their account in half. So you pick the drawdown you could not live with, for example 40% below your starting balance, and the calculator tells you how often the account touches that line.
A strategy can make money on average and still have a high risk of ruin. The average only shows up over many trades. In the short run you get losing streaks, and if your trades are too big, a bad streak early on can do enough damage that you stop.
How the calculator works
You give it five numbers: your win rate, how much a win pays compared with a loss (reward to risk), how much of your account you risk per trade, the
drawdown you count as ruin, and how many trades to look ahead.
It then plays out 8,000 possible futures. In each one:
- The account starts at 1.0.
- For every trade, it rolls a random number. Below your win rate, the trade wins and the account grows by your risk times your reward to risk. Otherwise it shrinks by your risk.
- Your stake is always a share of the account as it is now, not of where it started. After a loss you bet a little less, after a win a little more. This is called fixed-fractional sizing, and it is how most traders size.
- If the account touches the ruin line at any point, that future counts as ruined.
The share of the 8,000 futures that got ruined is your risk of ruin.
The random numbers come from a fixed seed. That means the same inputs always give the same answer, so anyone can check our numbers exactly.
How we checked it
Monte Carlo gives an estimate, not an exact answer. So we checked it a second way that uses no random numbers at all.
With fixed-fractional sizing, the account after any number of trades depends only on how many of them won and how many lost. That makes it possible to walk through every possible sequence of wins and losses, keep track of which ones hit the ruin line, and add up the exact probability.
Here is what the calculator says next to the exact answer for a few setups:
| Setup | Calculator | Exact |
|---|---|---|
| 42% wins, 1.5 reward to risk, 2% risk, ruin at 40% down, 400 trades | 14.7% | 14.4% |
| Same, but 5% risk per trade | 61.6% | 60.0% |
| Same as the first, but 100 trades | 1.5% | 1.6% |
| Same as the first, but 1,000 trades | 23.4% | 23.4% |
| 45% wins, 1 to 1, 2% risk, ruin at 50% down, 500 trades | 87.8% | 87.9% |
| 55% wins, 2 to 1, 1% risk, ruin at 25% down, 500 trades | 0.0% | 0.0% |
Every row is within normal Monte Carlo noise of the exact answer. The 5% row is the furthest off. Run with 200,000 futures instead of 8,000, it lands between 60.0% and 60.2%. So for the question it asks, the calculator is right.
Both methods are open source, with these cases as tests, so you can check
them yourself: trading-risk-math on GitHub.
Two things in that table are worth a second look. Going from 2% to 5% risk
per trade, with the exact same strategy, takes the chance of ruin from about 1 in 7 to more than half. And the longer you trade, the higher it gets, even with a positive edge, because a bad streak has more chances to turn up.
Where it goes wrong
The calculator, like nearly every risk of ruin calculator, assumes that
every win is the same size and every loss is the same size.
Real strategies are not like that. The Asian Range Breakout is a good example. Over 1,012 trades in our out-of-sample test (2022 to 2025, after costs):
- 45.75% of trades won.
- The average win was +1.04% of the account, and the average loss -0.75%. The loss is below the 1% risk because many trades close at the end of the session before they reach the stop.
- But the typical win was much smaller than the average: the median win was only +0.68%.
- A few big days did a lot of the work. The best single trade made +8.5%, and the top tenth of winning trades brought in 36% of all the money the wins made.
Feed the calculator the averages and it builds a strategy that wins +1.04%
or loses -0.75%, every single time. That strategy is much smoother than the real one. Trade by trade, the real results swing about 36% more. Bigger swings mean deeper dips, and deeper dips mean more ruin.
What the real trades say
Instead of averages, we took the 1,012 real trade results and drew them at
random, over and over, to build tens of thousands of possible futures. A
trade could be drawn more than once. This keeps the true mix of small wins, big wins and losses.
At the strategy's real size of 1% risk per trade:
| Question | Calculator (same size wins and losses) | Real trades, resampled |
|---|---|---|
| Ever 20% down within 1 year (about 250 trades) | 1% | 6% |
| Ever 20% down within 4 years (about 1,000 trades) | 2% | 11% |
| Ever 30% down within 4 years | 0.2% | 3% |
We ran the resampling twice with different random seeds, and the answers
matched to within half a percentage point.
The conclusion about this strategy does not change. At 1% risk it is still a reasonable bet. But "about 1 in 9 chance of a 20% hole over four years" is a very different thing to plan for than "about 1 in 50".
Update, 22 October 2026. Arnold pointed out that closed trades leave out what happens while a trade is open: the account can dip further than where a trade finally closes. We re-ran the resampling with each trade's worst open loss included, measured from one-minute data with the same 1% sizing. The four-year chance of a 20% drop moves from 11.6% to 11.8-12.0%, and the one-year chance from 5.7% to 6.1-6.3%. The effect is small here because the 1% stop caps how deep an open trade can go. It would be much larger for a strategy without a hard stop, or one that holds several trades at once.
Try it in code
The calculator's maths is open source as a small TypeScript library with no dependencies: trading-risk-math.
The exact check is a short dynamic program. The state is just "how many
trades so far, how many of them lost", and any path that touches the ruin line is taken out of play:
// alive[k] = chance of k losses so far without ever touching the ruin line
for (let i = 1; i <= n; i++) {
next.fill(0);
for (let k = 0; k < i; k++) {
const pr = alive[k];
if (!pr) continue;
// a win keeps k losses, a loss moves to k + 1
if (up ** (i - k) * dn ** k <= ruinLevel) ruined += pr * p;
else next[k] += pr * p;
if (up ** (i - k - 1) * dn ** (k + 1) <= ruinLevel) ruined += pr * (1 - p);
else next[k + 1] += pr * (1 - p);
}
[alive, next] = [next, alive];
}
Using it:
import { runRiskOfRuin, exactRiskOfRuin, runMonteCarlo, parsePnl } from "trading-risk-math";
const params = { winRate: 42, rr: 1.5, riskPct: 2, ruinPct: 40, trades: 400 };
runRiskOfRuin(params, 8000).riskOfRuin; // 0.147, seeded so it is reproducible
exactRiskOfRuin(params).riskOfRuin; // 0.1435, no simulation
// for a strategy with lumpy wins, resample the real trade list instead
const mc = runMonteCarlo(parsePnl(myClosedTradePnls), 10000);
mc.bootstrap.probOfLoss;
Which number to use
- If your wins and losses are fairly even in size, for example a strategy with a fixed take profit and a fixed stop, the calculator is a good guide.
- If your profit comes from a few big winners, which is common for breakouts and trend following, the calculator will understate your risk. Treat its answer as a floor, not a forecast.
- If you have a real trade list, use it. Paste your closed trades into our Monte Carlo simulator. It resamples your actual results, so the uneven sizes are kept.
And whichever number you use, it still assumes your trades are independent
and your edge stays the same. Real losing streaks tend to bunch up when
market conditions change, so the true risk can be higher than either method shows.
The simple lesson holds either way: your edge decides whether you make money, and your position size decides whether you are still trading when it pays off.
Top comments (2)
Your resampling preserves the uneven payoff sizes, but closed trades still leave out the path inside each trade. Two runs can have the same closed P/L list while only one touches the ruin line through an open loss. A useful extra check would be to compare those closed-trade estimates with the maximum adverse equity excursion while each trade was open, using the same sizing and ruin threshold.
Good point, and you're right that closed trades hide the path. I ran the check you describe on the same 1,012 out-of-sample trades and have updated the post :)