Retirement

Scenario Lab.

Learning tool · not advice
Will the money last? A hands-on sandbox for retirement what-ifs, with made-up numbers.
Test a retirement in under a minute.
Enter round, made-up numbers on the left and see how often the money lasts — or load an example to watch it work, then edit from there. Everything runs in this browser and is stored only here.

Live snapshot

updates as you type
Money lasts
Nest egg
Money lasts to
Per child
What could be left at age · estate incl. home, today's dollars
How retirement spending is covered
What this means ▾
A scenario doesn't need 100%. Even professionals aim for ~80–90%, because real retirements adjust over time. A lower number isn't failure — it's a to-do list. Hover or tap any underlined result above to see what it means, how it is figured, and why it matters; the Suggestions further down rank the changes that help most. An educational illustration, not a prediction or advice.
Test the scenario
🌦️
Markets & taxes
The weather the money lives through — returns, swings, inflation, tax.
"How do market ups-and-downs and taxes affect whether my money lasts?"
💡 In plain terms: This sets the weather the money lives through — the assumed average return, how wildly it swings year to year, how fast prices rise, and the bite taxes take from withdrawals. The swings matter as much as the average: a run of bad years right after retirement begins is far more dangerous than the same years later.
Not sure of the tax rate? A simple guide: pick ~20–25% if most of the savings are in a 401(k)/traditional IRA (taxed when withdrawn), ~10–15% for a mix, or ~0–5% if mostly Roth or already-taxed accounts. When unsure, 18% is a reasonable middle.
🍽️
Spending strategy
Spending less — or flexing in bad years — is often the strongest fix.
💡 In plain terms: This is what the plan costs each year once retirement begins — the single biggest factor in whether the money lasts. Real retirees do not blindly spend the same amount into a crash — they ease off. Flexible spending is usually the single biggest realistic boost to success.
Stress tests
🌩️
Crisis timing verified history ✓
A crash early in retirement can be the difference between fine and broke.
Pick a real historical crash and slide when it lands in retirement. A crash early — while withdrawals are happening — is the most dangerous, because assets are sold at low prices to fund spending (sequence-of-returns risk). Baseline years use the scenario's average return; the crash years use that era's real market & inflation history.
No crashstrikes later in retirement →
— without the crash— with the crash▒ crash years
Stocks (S&P 500), bonds (10-yr US Treasury) and inflation (CPI) are the verified 1928–2023 record. Confirmed on the Self-check tab. Not advice.
🏥
Care costs
The big what-if — years of long-term care can drain a plan.
💡 In plain terms: Long-term care — an aide, assisted living, or a nursing home — is the big what-if that can drain a plan. The inputs set what a year of care would cost, when it might start, how long it lasts, and the odds of needing it.
Explore
📈
Balance over a lifetime
Savings build up, then get drawn down — see the whole arc across futures.
💡 In plain terms: Each imagined future is one path the money could take. The shaded band is the spread from unlucky to lucky; the line in the middle is the typical outcome. The band fanning out over time is the honest truth that the future is uncertain — the goal is to see whether even the unlucky paths hold up.
Range of outcomes (unlucky → lucky)Typical (middle) portfolioTypical estate incl. home equityRetire
AgeUnlucky (10th)MedianLucky (90th)
👵👴
Couples & survivors advanced
The money must last for whoever lives longer — usually the harder test.
💡 In plain terms: Planning as a couple means the money must last until the second person passes — usually the harder test. While both are alive there are two Social Security checks and lower married tax rates; when one passes, the smaller check stops, taxes rise to single rates, and spending drops a bit. That widow's penalty is a real risk worth seeing.
The survivor transition (lost check, single brackets, lower spending) needs lifespan uncertainty on. This overrides the simple Married toggle.
🏠
Home & mortgage advanced
Home equity counts toward what's left behind — not spent unless you downsize.
💡 In plain terms: Your house affects the plan two ways: the mortgage is a bill that eventually ends (freeing up money), and the home itself is wealth that can only be tapped by downsizing. The tool finds when the loan is paid off and counts the home equity in what is left behind — but it will not spend the house on living costs unless a future sale is set.
Downsize / sell home later
At that age the home is sold, any remaining mortgage paid off, a cheaper home bought, and the freed cash (after selling costs) is added to the investments.
🏦
Detailed taxes & accounts pro
Where the money sits — 401(k) vs Roth vs regular — changes the taxes and forces RMDs.
💡 In plain terms: Where the money sits changes the taxes. A 401(k)/IRA is taxed at withdrawal and forces minimum withdrawals after 73; a Roth comes out tax-free; a regular account is in between. Turning this on makes the tool withdraw in the smart order and use real tax brackets.
The remainder is treated as a regular taxable account. Combined pre-tax + Roth shares are capped at 100%. Tax figures use 2025 federal brackets — verify them on the Self-check tab.
🔬
Make it more realistic optional
Occasional severe crashes, fees, getting safer with age, lifespan uncertainty.
💡 In plain terms: These options model real-world realism: occasional severe crashes, fees that quietly compound, getting safer with age, and the fact that no one knows exactly how long they will live.
Each is explained in plain language on the Method tab.

Suggestions — the biggest levers

💡 In plain terms: These are the specific changes that would move the success number the most, ranked by impact. A lower score is not failure — it is a to-do list. Usually a mix of spending a little less, working a bit longer, or turning on flexible spending closes the gap.

Share & export

Share this scenario as a file that opens in any browser — anyone can build their own free copy from it. Scenarios are saved only in this browser, so keep a copy in a folder.
Export the outcomes — every scenario's results (success, nest egg, year-by-year balances) as a CSV.
Backup everything — scenarios live only in this browser, so a cleared cache erases them. Keep a backup file somewhere safe; Restore brings it all back on any device.
Or auto-fill from a spreadsheet — download a blank template, fill it in Excel/Numbers, save as CSV, then import.

Your data & privacy

We don't store the scenarios. Your figures stay in your browser on this device (in local storage) — never sent to or saved by us. This is a learning sandbox, not a vault: use round, hypothetical numbers, not personal specifics, and you'll get the exact same insight. To keep a scenario, use Export/Print to download a copy; to wipe it, clear your browser or click below.
Scenario Lab · educational illustration tool · not investment, tax, or legal advice
Figures are hypothetical and generated from the numbers you enter.

Scenario Snapshot

A clear, illustrated summary of the active scenario — the bottom line, what drives it, and how it compares. An educational illustration of fictional numbers, not advice. Every outcome is clickable for what it means, how it is figured, and the inputs that move it.

Outcomes

Hover or tap any number above for what it means, how it is figured, and a link to the input that changes it.

At a glance — income mix & confidence

The money over time

Range (unlucky → lucky)Typical portfolioTypical estate incl. home

Where the estate could land

Median estate at the plan age, with the unlucky-to-lucky spread across market futures.

What makes up the estate

The typical ending estate split into invested savings versus home equity.

How the money compounds

Compare scenarios

How to use this

Move the sliders on the left and watch the outcomes on the right change instantly. The whole idea is to play — try different choices until a future the scenario is comfortable with appears. Everything runs privately in the browser; nothing is sent anywhere.

What it shows

Whether the money is likely to last, how much might be left to the children, and which changes help most — shown as a probability, not a single guess.

1Pick a scenario

The Scenario menu (top-left) holds separate scenarios like "Base case" or "Retire at 62." Use + New or Load example to start. Each one saves on its own.

2Move the sliders

Set the age, savings, mortgage, spending, returns and goals. Every slider updates the results live — drag them around to see what actually moves the needle.

3Read the results

The big Money lasts (of sims) number is the headline. The chart shows the range of futures (unlucky → lucky). Hover the ? on any result for a plain-English explanation.

4Compare with snapshots

Create a scenario, tweak a slider, add another with + New. The Scenario Snapshots tab lines them up side by side, and Backup all data (file) keeps a durable copy.

Tips for honest numbers

Use a realistic after-tax return (≈5–6%, with 10–13% "bumpiness"), plan to a long life (90–95+), and treat the result as a range, not a promise.

Advanced realism

The Advanced card adds pro touches: flexible spending, market crashes, variable inflation, fees, a bond tent, and lifespan uncertainty. The Method tab explains each.

Your privacy

No login, no accounts, nothing stored on a server. Your numbers live only in this browser — it can run with wifi off.

Method — exactly how every number is calculated

This page is for both the curious beginner (read the plain description) and the financial analyst (read the Under the hood details). Nothing here is obscure: every formula, every fixed constant, and every data source is disclosed and can be re-verified on the Self-check tab. One framing note on "weighting": this is a structural year-by-year cash-flow simulation, not a weighted-factor score — each effect enters through its own formula, controlled by its own input (the "lever") plus a few fixed constants (all stated below). Where a constant could reasonably be a user lever, it's marked.

Monte Carlo simulation

Plays the scenario out thousands of times, each a full year-by-year projection with a different random run of returns. Many runs reveal the full range of outcomes, not one guess.

Under the hood: N independent paths (N = your "Simulation runs", 500–5,000). Each path loops age→horizon, applying that year's return, spending, taxes, income. A path "succeeds" if the portfolio never reaches $0.Lever / weighting: N is the only knob and changes precision, not the answer. No factor weights exist — effects compound structurally, not as a weighted sum.Verify: Self-check "no-spend never runs out", "reckless spend fails".Impact: turns a point estimate into a probability + range.Alternatives: historical "every start year" backtesting (cFIREsim), or static rules (4% rule). MC captures more variability but assumes a return distribution.

Random returns & sequence risk

Each year draws its own return; a crash in your first retirement years hurts far more than the same crash later, because you sell from a shrunken balance.

Under the hood: yearly return r = avg − fees + σ·z, where z is a standard-normal draw (or Student-t if crashes are on). Applied to the start-of-year balance.Lever / weighting: "Average return" sets the mean; "How bumpy" sets σ. Both are the inputs — full control.Verify: inputs are visible; determinism test on Self-check.Impact: the order of returns can swing success by 20+ points at the same average.Alternatives: block-bootstrapping real history (captures clustering better) or regime models. The Storm tab uses real sequences for exactly this reason.

Probability of success (± range)

The share of runs where the money never hits zero, shown with a confidence range so you know how solid the number is.

Under the hood: success% = survivors / N; 95% confidence interval = ±1.96·√(p(1−p)/N).Lever / weighting: raise N to shrink the ±. No weighting.Verify: Self-check "confidence interval tightens with more runs".Impact: the headline metric; the ± stops you over-reading small differences.Alternatives: "funded ratio" or magnitude/age-of-failure metrics — success% is binary and doesn't show how badly failures fail.

Detailed account-type taxes + RMDs

Splits savings into pre-tax (401k/IRA), Roth, and taxable, withdraws tax-efficiently, applies real brackets, and forces RMDs at 73+.

Under the hood: buckets grow at the year's return. Withdrawals fund need in order taxable→pre-tax→Roth. Ordinary income = pre-tax withdrawals + RMD + taxable SS; tax = progressive 2025 brackets on (income − standard deduction). RMD = pre-tax ÷ IRS divisor (e.g. 24.6 at 75). Iterates ≤5× so withdrawals cover their own tax. Roth/taxable withdrawals are tax-free at withdrawal.Lever / weighting: % pre-tax, % Roth, married toggle. Brackets, $15k/$30k standard deduction, and the RMD table are fixed 2025 data (TAXDATA/RMDTAB) — swap yearly.Verify: Self-check RMD $40,650, tax $11,828 (MFJ $100k), $5,914 (single $50k), Roth>Traditional.Impact: large — all-Roth vs all-pre-tax moved a sample from 30%→10%.Alternatives (more valid, not yet added): capital-gains basis tracking on the taxable bucket (we treat it tax-free at withdrawal), Roth-conversion modeling, state tax, IRMAA Medicare surcharges.

Simple flat tax (default)

When the detailed engine is off, a single rate approximates taxes — better than ignoring them.

Under the hood: each retirement net withdrawal W is grossed up: tax = W·(rate/(1−rate)), so after-tax cash = the spending need.Lever / weighting: "Tax rate on withdrawals" slider.Verify: Self-check "$60k net @20% = $75k gross".Impact: ignoring taxes overstates sustainable spending ~15–25%.Alternatives: the detailed bucket engine above — strictly more accurate.

Social Security & its taxation

Benefits start at the chosen age, grow with inflation, and are partly taxed by the IRS provisional-income rule.

Under the hood: provisional = other taxable + 0.5·SS; below $25k/$32k (single/MFJ) none is taxed, then up to 50%, then up to 85% above $34k/$44k.Lever / weighting: SS amount & start age. Thresholds are fixed in law (not inflation-indexed) — we replicate that.Verify: Self-check "SS taxation caps at 85%".Impact: raises effective retirement tax, especially with large pre-tax withdrawals.Alternatives: none materially better — this mirrors the actual rule.

Mortgage & home equity

Amortizes the loan properly, stops the payment at payoff, and counts the house as illiquid equity.

Under the hood: interest = bal·rate; principal = pay − interest; loan ends when bal ≤ 0 (payoff year shown). Payment hits the portfolio only in retirement. estate = max(portfolio,0) + max(home − mortgage, 0).Lever / weighting: balance, annual payment, rate, downsize age/value/cost.Verify: Self-check "payoff matches closed-form".Impact: fixes the "pay the mortgage forever" error and the gross-vs-net-equity error.Alternatives: reverse mortgage / HELOC to tap equity without selling — not modeled.

Pay off vs. invest

Tells you whether keeping the mortgage (cash invested) or paying it off helps more — for the numbers.

Under the hood: Suggestions runs the scenario two ways — keep loan + invest, vs pay off (assets − principal, no payment) — and compares the share of simulated futures where the money lasts.Lever / weighting: driven by your mortgage rate vs return/volatility; no separate knob.Verify: reproduce by toggling "Already own outright".Impact: payoff has a certain, known effect — it saves exactly your mortgage rate and cuts sequence risk; investing may beat it but isn't guaranteed.Alternatives: partial prepayment / recast schedules — not modeled.

Long-term care shock

A possible multi-year care event — a top cause of plan failure — modeled as a tail risk.

Under the hood: per path, probability p of an event starting at onset age for D years; cost grows at healthcare inflation (1+hcInf)^years (default 5%, separate from general inflation). Insurance covers ~80% for an annual premium.Lever / weighting: cost, onset age, duration, lifetime probability, insurance toggle, premium, healthcare inflation — all inputs.Verify: raise care inflation 5%→8% and watch success fall (≈88%→77% in testing).Impact: the difference between a plan that holds and one that doesn't late in life.Alternatives: age-rising probability curves and policy elimination periods/benefit caps — simplified here.

Flexible "guardrail" spending

Models how real retirees ease off in crashes and loosen up in recoveries (Guyton-Klinger).

Under the hood: track withdrawal rate vs the rate at retirement. If WR > initial·(1+band) → cut spending by cut%; if WR < initial·(1−band) → raise by raise%. Spending multiplier floored at 0.6, capped at 1.25 (disclosed constants).Lever / weighting: band, cut, raise — all exposed inputs. The 0.6/1.25 bounds are fixed.Verify: toggle it and watch success jump on a stressed plan.Impact: usually the single biggest realistic improvement (e.g. 57%→95% on a sample).Alternatives: Vanguard "ceiling/floor", RMD-based, or constant-percentage rules.

Variable, correlated inflation

Inflation varies year to year and tends to spike when markets fall — the dangerous 2022-style case.

Under the hood: inf = avg + infVol·(corr·z_mkt + √(1−corr²)·z), floored at −2%. Spending, SS, care and home values compound along this realized path.Lever / weighting: inflation, "inflation swings" (infVol, default 1.5%), "inflation vs markets" (corr, default −0.35) — all exposed.Verify: 2022 inflation 6.5% on Self-check; correlation makes crashes + inflation co-occur.Impact: surfaces the stocks-down-while-prices-up risk a fixed model misses.Alternatives: explicit inflation regime models; ours is a one-factor correlation.

Fat-tailed returns (crashes)

Makes severe crashes occur about as often as in real life, not the too-gentle bell curve.

Under the hood: Student-t draw z·√(df/χ²_df)·√((df−2)/df) with df = 5 (fixed constant), normalized to unit variance.Lever / weighting: on/off toggle. df=5 is fixed — could be exposed as a "tail fatness" lever if desired.Verify: compare success with the toggle on vs off.Impact: modestly lowers success by making early crashes more frequent.Alternatives: jump-diffusion, or simply the historical Storm sequences, which carry real tails.

Glide path & bond tent

Two optional ways to manage risk over time — gradual de-risking, or extra safety right at retirement.

Under the hood: glide path: rr·(1−0.30·t), vol·(1−0.50·t), t over retirement→plan. Bond tent: rr·(0.7+0.3·t), vol·(0.55+0.45·t), t over the first 12 years (defensive early, re-risk later; Pfau & Kitces). Constants 0.30/0.50, 0.7/0.55, 12-yr are fixed.Lever / weighting: on/off toggles. The de-risking depths are fixed constants — candidates to expose as levers.Verify: toggle each and compare.Impact: small and situational — lower vol helps, lower return hurts; test for the case at hand.Alternatives: explicit stock/bond allocation paths with real asset returns.

Fees & advisory costs

A certain, compounding drag most simple calculators ignore.

Under the hood: fees subtracted from every year's return: r = avg − fees + σ·z.Lever / weighting: "Yearly fees" input (default 0.5%).Verify: raise fees and watch success fall steadily.Impact: 0.5–1%/yr compounds into a meaningful success drop over decades.Alternatives: tiered/asset-based fee schedules — ours is a flat annual rate.

Lifespan uncertainty & couples

Models not knowing how long you'll live — and, for couples, lasting to the second death with the widow's penalty.

Under the hood: death age = round(lifeExp + spread·z), clamped [retire+1, 110]. Couples draw two ages; horizon = the later death, first death = earlier. After the first death: SS = max(the two checks) (smaller is lost), spending × survivor share (default 0.75), tax filing → single (the "widow's penalty").Lever / weighting: life expectancy, spread, couple toggle, partner age/SS/expectancy, survivor share — all inputs.Verify: Self-check "two SS checks help", "second-death horizon longer", "survivor income drops".Impact: couples need money to last longer (to ~second death) and face higher tax after the first death.Alternatives: actuarial mortality tables (we use a normal draw); the tool doesn't yet model age-correlated couple mortality.

Data sources & verification

Where every number comes from, and how you confirm it's right.

Market data: S&P 500 total return, 10-yr US Treasury total return, and CPI inflation, 1928–2023 — derived from the public Federal Reserve / Treasury / BLS record. Verified by the compounding test (a 1928 stock $1 → ~$9,500, ~10%/yr; bonds ~4.6%; inflation ~3%) and famous-year spot checks.Tax data: 2025 IRS brackets, standard deduction, RMD Uniform Lifetime Table — dated, swap each year.Everything else is a value you enter — no hidden assumptions.Verify: open the Self-check tab — the tests re-run on every load and confirm the data and math haven't drifted.

What it still doesn't do

The honest remaining limits — so an analyst knows the boundaries.

Not modeled: capital-gains basis on the taxable bucket (treated tax-free at withdrawal), Roth conversions, state income tax, IRMAA Medicare surcharges, return autocorrelation / mean-reversion (returns are drawn independently each year), and age-correlated couple mortality.Framing: outputs illustrate your inputs — this is an educational tool, not personalized fiduciary advice.Use it to find your levers and pressure-test decisions, then confirm anything you act on with a fiduciary advisor and a CPA.

Self-check — validation tests

These run automatically every time the tool loads, and any time you press Re-run. They are how you confirm — after any change or update — that the historical data and the math are still accurate and haven't drifted. All green = the numbers can be trusted.

Each check shows what it expected and what it got. Historical-data checks validate the dataset against published long-run benchmarks — a 1928 stock dollar must compound to the known total, inflation must average ~3%, and famous crash years (1931, 2008, 2022) must match the record. Engine checks confirm the simulation behaves correctly and gives identical results for identical inputs (no drift). If anything turns red after an edit, fix it before trusting the outputs.