Most retirement calculators give you one number. Save this much, retire at this age, withdraw this percent, you’re fine. The number is almost always wrong, and the calculator usually can’t tell you by how much.
A Monte Carlo retirement engine is the same calculation run ten thousand times. Each run is a slightly different version of your future. The output isn’t a date. It’s a probability that your money outlasts you.
I built one. Here is what it’s actually doing under the hood, why ten thousand and not a hundred, and where every calculator I know of (including some popular ones) cuts corners that matter.
What a single “scenario” actually is
One scenario is one possible future for your portfolio. The engine starts with your real numbers today: balances by account type, contributions per year, expected expenses in retirement, retirement age, longevity assumption. None of those are random. What gets randomized is everything that happens between now and when the portfolio is depleted (or you die).
The randomized inputs are usually three things:
- Returns. Each year of the simulation draws a return from a distribution shaped by your asset allocation. A 60/40 portfolio doesn’t return 7% every year. It returns something like 7% on average with substantial year-to-year variance, and the tails matter more than the mean.
- Inflation. Drawn separately, often correlated with returns. A retirement plan that ignores inflation isn’t a retirement plan, it’s a budget.
- Spending variability. Some engines treat spending as flat. Better ones model that real retirees spend more in early years (the “go-go” phase), less mid-retirement, and more again at the end (medical). Some allow user-defined lumpy expenses.
For each year, the engine subtracts spending, applies returns to what’s left, and moves on to the next year. After 30 or 40 or 50 years (depending on your longevity assumption), it records what happened. Did the portfolio survive? If not, what year did it run out?
Why ten thousand and not a hundred
Run a hundred scenarios and your success rate jumps around between runs. 87%, then 91%, then 84%. It’s noisy. The number you see depends on the specific seed you got that day.
Run ten thousand and the answer stabilizes. Run it twice, you get the same answer to within half a percent. That stability matters because the entire point of Monte Carlo is to give you a number you can act on. A number that swings 5% between runs is not actionable.
Ten thousand is also enough to expose the tails. If 50 of 10,000 scenarios end in your portfolio depleted by year 12, that’s a 0.5% chance of a catastrophic early failure. A hundred-run sim might not show that scenario at all, and you’d never know it existed.
The output isn’t a date. It’s a probability.
This is the part most people get wrong. A Monte Carlo engine doesn’t tell you when you can retire. It tells you the probability that, if you retired on a specific date with a specific plan, your money would outlast you.
A 90% success rate doesn’t mean you have a 90% chance of being fine each year. It means that across 10,000 simulated futures, in 9,000 of them your portfolio still had money when you died. In the other 1,000, it didn’t.
A 90% success rate isn’t comfort. It’s a one-in-ten chance of running out of money in old age.
That framing matters. Most people, told they have a 90% chance of success, hear “almost certain.” Told they have a one in ten chance of running out of money at age 82, they hear something very different. Same number.
What naive Monte Carlo gets wrong
Most free retirement calculators run a Monte Carlo of some kind. Most of them get the basic engine right. Where they fall short is everything around the engine.
1. They model one bucket, not three.
The math of withdrawing $80,000 a year is wildly different depending on whether the money comes from a Roth IRA (zero tax), a traditional 401(k) (ordinary income, plus Required Minimum Distributions starting at age 73 or 75 under SECURE 2.0), or a taxable brokerage (long-term capital gains, with cost-basis tracking that affects the rate). A real retirement engine tracks each bucket separately and applies the right tax rules to each withdrawal. Most free tools collapse it to one number.
2. They model one withdrawal strategy.
The 4% rule (Bengen, 1994) is the default. A real engine should let you compare. Guyton-Klinger guardrails change spending dynamically based on portfolio value. Variable Percentage Withdrawal (VPW) and dynamic-percentage strategies do the same differently. Floor-and-ceiling strategies pick a hard minimum and let the rest float. Each one has a different success rate, a different ruin probability, and a different psychology.
Thermal’s engine runs eight strategies and four withdrawal orderings (tax-efficient, traditional-first, Roth-first, pro-rata). The same plan, same assumptions, can have a 78% success rate under one strategy and 94% under another. That gap is the value of letting people compare.
3. They report success rate without spending floor.
“Success” usually means “portfolio > 0 at death.” That’s a low bar. A scenario where you cut spending from $100k to $30k for the last 15 years to avoid going broke counts as a success, even though you ate cat food for a decade and a half. A better engine tracks a separate metric: spending floor breach rate. How often did spending fall below your minimum? That’s the number that says whether your retirement is liveable.
What this means in practice
Run a Monte Carlo and you get a probability. Use that probability to decide whether to push your retirement date out by a year, lower your spending assumption, or shift your asset allocation. Run it again. Compare. The value isn’t the single number. It’s the ability to test changes against ten thousand futures and see what moves the needle.
The piece I haven’t covered here is sequence-of-returns risk: why two retirees with identical average returns can have wildly different outcomes based purely on the order those returns arrived. That’s the underlying reason any of this Monte Carlo machinery is necessary in the first place. Worth its own essay.