Retirement Monte Carlo

Will the portfolio outlast the plan?

Each simulated year draws real history (1928–2025) — stock, bond, and inflation together — and spends, then grows. Results are in today's dollars. Change one assumption and watch the probability of never running out move.

Probability of success
Money lasts the full
-year retirement
0%255075100%

Balance over time

Percentile bands across all simulations, in today's dollars.

10th–90th 25th–75th Median

Sequence-of-returns risk

How much of the failure risk is the order of returns — and when you're past the danger.

of failures are caused by the order of returns
How is this calculated?

Every simulated life produces a specific sequence of yearly returns. We run each one twice: once with the returns in their actual order (what the rest of the tool does), and once smoothed — every year replaced by that same path's geometric-mean return, so the total compound growth over the whole plan is identical and only the ordering is removed.

Each failing path is then sorted into one of two causes:

Sequence failure — fails in the real order but survives when smoothed. The returns were adequate; the bad order (a poor early stretch hitting the portfolio while you withdraw) is what sank it.
Magnitude failure — fails both ways. The returns were simply too low for the spending, so no reordering could have saved it.

The headline figure is sequence failures ÷ all failures, and the bar above shows the same split across every outcome (survives / magnitude / sequence). A few paths do the reverse — fail smoothed but survive in their real order because the ordering happened to help; those are set aside, not counted as failures.


When can you breathe easy? Success probability at each age in retirement, given your inflation-adjusted balance is still at or above .

Sensitivity sweep

Vary one assumption across a range; hold the rest constant.

Show data table

What moves the needle most

Each bar shows how far success swings if that one assumption is off by a plausible amount, everything else held fixed. Longest bar = your biggest lever.

How to read this

For each assumption I nudge it to a plausible worse and better value — dollars by ±15%, ages by a few years, allocation by ±15 points, tax/fees/floor by a small amount — and re-run the simulation, holding everything else at your current plan. The bar spans the two resulting success rates (the amber side is worse, the blue side better), split at your current "now" line. The small numbers at each end are the input values that produced them. Bars are sorted by swing, so the top row is what your plan is most sensitive to. Rankings depend on those assumed ± ranges — treat it as a guide to relative leverage, not exact magnitudes.

Success surface

Two assumptions at once. Each cell is the success probability; the amber line is your target frontier.

Method & assumptions

Historical bootstrap. Returns are not modeled with a formula. Each simulated year uses a real calendar year (1928–2025) — that year's S&P 500 total return, 10-year Treasury return, and CPI inflation together — so high-inflation years carry their actual effect on real bond returns and purchasing power.

Return sampling. Independent years draws each year at random (no memory). Blocks draws contiguous runs of the chosen length (a circular block bootstrap), preserving real sequences like the 1929–33 crash or 1973–74 stagflation. Blocks strengthen sequence-of-returns risk, so they give a more faithful read on glide paths, bond tents, and early-retirement fragility.

Real dollars. Nominal returns are converted to real using that year's inflation ((1+nominal)/(1+inflation) − 1). Base spending stays constant in today's dollars.

Income streams. Each stream reduces the net withdrawal while it's active (its year range). Inflation-adjusted streams (e.g. Social Security) hold constant real value. A non-adjusted stream (a typical fixed pension) is level in nominal terms, so its real value is divided by the inflation accumulated since it began — it quietly buys less each year.

Spending strategy. Fixed spends a constant real amount. Guardrails (Guyton–Klinger-style) reassess each year: if your withdrawal rate — base spending ÷ balance — rises a full band above the plan's initial rate you cut spending by the step (down to the floor); if it falls a band below, you raise it by the step (up to the ceiling). The "lean-year spend" stat shows the typical low point.

Allocation. Fixed holds one stock/bond mix. Glide path moves the equity share linearly from start to end across the horizon; a rising path (start < end) is the "bond tent."

Common random numbers. One fixed matrix of sampled year-sequences is reused across every run and every sweep point, so differences come from the assumption you changed, not from re-rolling the dice. Reshuffle to draw a new matrix.

Taxes. A single effective rate on portfolio withdrawals: when the portfolio must fund a shortfall, it withdraws shortfall ÷ (1 − rate) so the tax comes out of the portfolio too. Income streams are assumed after-tax and aren't taxed again. This is a deliberate simplification — it doesn't distinguish Taxable / Tax-deferred / Roth accounts, brackets, RMDs, or Social Security taxability. Use your own estimated effective rate (total tax ÷ total withdrawals); 0% if withdrawals are tax-free.

Caveats. U.S. history is one sample of possible futures, and this is an educational model — not personalized financial advice. Data: NYU Stern (Damodaran) for stock/bond returns; BLS CPI for inflation.