How the plan is simulated

The plan runs a thousand market scenarios, month by month, from today to the primary member's horizon age. This page is the arithmetic behind them: every formula, with a number worked through it, so you can check the answer rather than take it on trust.

For what each input on the screen means, Households and the plan is the tour. For where the starting balances come from, How your portfolio is valued. For the things this model deliberately doesn't do, What the model leaves out.

What's random, and what isn't

Only the market return is random, and every rule is fixed. What the household needs in a given year — spending, goals, health insurance, minus Social Security, pensions, other streams and contributions — comes out of the calendar and your inputs, and it is identical on all thousand paths.

What follows from that need is not. Taxes and required distributions are computed per path, because they depend on money a path actually has: a year's required distribution is that path's tax-deferred balance divided by the divisor, and what a withdrawal costs in tax depends on which bucket is still standing to fund it. Same rules everywhere, different amounts.

That split is the reason the answer means something. Across a thousand paths the only input that varies is the sequence of returns, so "8 in 10 scenarios never run out" is a statement about market luck, not about a spread of guesses.

Returns, in today's dollars

Every figure the plan reports — bands, balances, the year-by-year table — is in today's dollars. Rather than inflating six hundred monthly cash flows forward and deflating the answer back, the plan deflates the return, once:

real return = blended return − inflation

Your assumptions are per asset class, and the blend uses your current allocation. Take a portfolio that's 60% US stocks, 40% bonds, on the default assumptions (US 7% return / 15% volatility, bonds 4% / 6%) and 2.5% inflation:

Step Arithmetic Result
Blended return 0.6 × 7% + 0.4 × 4% 5.8%
Blended volatility 0.6 × 15% + 0.4 × 6% 11.4%
Real return 5.8% − 2.5% 3.3%
Volatility actually simulated 11.4% × 1.05 11.97%

The 1.05 is a deliberate margin. Averaging volatilities in a straight line is the number you'd get if every asset you hold fell on the same days — it gives diversification no credit at all, so it runs higher than the risk a real portfolio carries in a calm market. That is close to the right number in a crash, which is when a retirement is actually at risk, so the plan keeps it and adds 5% on top for the extreme months a bell curve doesn't produce often enough.

Those annual figures become monthly ones the usual way:

monthly mean = real return ÷ 12   ·   monthly volatility = simulated volatility ÷ √12

For the 60/40 portfolio above: a mean of 3.3 ÷ 12 = 0.275% a month, and a standard deviation of 11.97 ÷ √12 = 3.46% a month. Each month's return is drawn from a normal distribution with those two parameters.

A wholly US-stock portfolio, for comparison, simulates at 7% − 2.5% = 4.5% real: 0.375% a month, with a monthly standard deviation of 15 × 1.05 ÷ √12 = 4.55%.

One month

Every path is the same one-line recurrence, once a month for as long as the plan runs (a fifty-year plan is six hundred of them):

balance = balance × (1 + r) + cashflow

The return comes before the flow. A contribution doesn't earn anything in the month it arrives; a withdrawal is taken after that month's growth. On a $1,000,000 balance in a month returning 0.375%, with $4,500 going in:

1,000,000 × 1.00375 = 1,003,750, then + 4,500 = $1,008,250

Because it compounds monthly, an annual real return of 4.5% grows an untouched balance by 4.594% over twelve months.

A year's cash flow is spread evenly across its twelve months — the year is the unit a household thinks in (a tuition bill, a claiming age), the month is the unit a portfolio compounds in.

The order of operations inside a year

Each month, in this order:

  1. Every bucket compounds at that month's return. (Cash set aside from a required distribution earns nothing — see below.)
  2. Once a year, in January — or, for the year you're in now, in the first month simulated: required minimum distributions are taken, per owner; then a Roth conversion runs, if the plan has one and the year is inside its window.
  3. The month's need is settled — a twelfth of the year's figure. Money going in is split across your buckets; money coming out is drawn from them.
  4. In December (or in the final month simulated), any distribution cash left unspent sweeps into the taxable bucket.

What a year needs

need = income + saving − spending − goals − health insurance

A positive number is money going into the portfolio; a negative one is what the portfolio has to fund. Each term:

  • Income is Social Security, pensions and other streams. A benefit is your figure at full retirement age scaled by when you claim (70% at 62, 100% at 67, 124% at 70); in the full tax model the check is credited at 92%, a flat stand-in for benefits being partly taxable. A pension with no cost-of-living adjustment is deflated back into today's dollars — the check stays the same and buys less.
  • Saving is 12 × the monthly contribution of each adult whose retirement year is still ahead. It's a step function: when one of you stops, their share stops.
  • Spending is your baseline monthly figure × 12, bent by two multipliers, and it's zero until the last adult retires.
  • Goals are every enabled goal landing in that year — including years before you retire.
  • Health insurance is per adult, from the year their coverage starts until they turn 65 at the pre-Medicare figure and after it at the Medicare one, compounded by medical inflation above CPI.

The two spending multipliers: each child who has reached their independence age takes the plan's per-child step-down off the baseline (all of them together can't take it below 40%), and the retirement smile switches phase on the primary member's age — one percentage before 75, a second from 75, a third from 85. The ages are fixed; the three percentages are yours to set, and start at 100 / 85 / 78.

Worked example

A household spending $9,000 a month, one child already independent at an 8% step-down, retiring in 2041 with neither adult claiming Social Security yet, and one adult buying $1,100/month of pre-Medicare cover from a 2038 retirement. In 2041, fifteen years from the plan's start year:

Term Arithmetic Result
Spending $9,000 × 12, less the 8% step-down for one independent child $99,360
Health insurance $1,100 × 12, compounded 15 years at 1.5% medical inflation $16,503
Income nobody has claimed yet $0
Saving both adults retired $0
Need 0 + 0 − 99,360 − 0 − 16,503 −$115,863

That $115,863 is the net figure — what the household actually spends. What leaves the portfolio is more.

Paying the tax on a withdrawal

A dollar spent costs more than a dollar withdrawn, so every draw is grossed up:

gross = net ÷ (1 − rate)

The rate is the bucket's, not the year's. In the full model, Roth is 0%, tax-deferred is 14%, and a taxable account is 5% (a stand-in for capital gains on part of the withdrawal). To spend $10,000:

From Arithmetic Withdrawn Tax
Roth untaxed $10,000 $0
Taxable 10,000 ÷ 0.95 $10,526 $526
Tax-deferred 10,000 ÷ 0.86 $11,628 $1,628

That table is the full model. In simple mode the single effective rate you type replaces both the 14% and the 5%, and Roth stays untaxed — a rate you've described as your whole situation shouldn't be applied to money that was already taxed.

Buckets are drawn in your chosen order — taxable first (taxable, then tax-deferred, then Roth; within tax-deferred, owners already past 59½ before the rest), or proportionally, each bucket contributing in proportion to what it currently holds. Whatever a drained bucket can't cover falls through to the next.

Under 59½, a tax-deferred draw owes the 10% early-distribution tax on top, which changes the gross-up rather than being added to it. That boundary is the one age the plan tracks by month rather than by calendar year — it lifts in July of the year the owner turns 59, being a 1 January birthday plus fifty-nine and a half years:

10,000 ÷ (1 − 0.24) = $13,158 withdrawn — $1,842 of income tax and $1,316 of penalty, $3,158 in total

Continuing the worked year above: $115,863 of need, drawn taxable-first at 5%, is 115,863 ÷ 0.95 = $121,961 out of the portfolio, of which $6,098 is tax.

Required minimum distributions

Tax-deferred money is forced out from its owner's own start age — 73 for someone born between 1951 and 1959, 75 from 1960 on (SECURE 2.0; 72 for anyone born earlier), by whichever adult owns the account. The amount is the IRS Uniform Lifetime Table's:

required = balance ÷ divisor(age)

At 75 the divisor is 24.6. On a $500,000 tax-deferred balance:

Step Arithmetic Result
Forced out 500,000 ÷ 24.6 $20,325
Tax at 14% 20,325 × 0.14 $2,846
Left to spend $17,480

It's taken in the first month of the year, after that month's growth, and it's never penalized — nobody subject to a required distribution is under 59½. The after-tax remainder funds that year's need before any other bucket is touched; whatever's still unspent in December sweeps into the taxable bucket. While it waits, it earns nothing.

Roth conversions

A conversion is simulated as the transfer it is, with both its cost and its benefit. Each year inside the window, the smaller of your annual figure and your total tax-deferred balance moves to Roth — taken from owners in proportion to what each holds, taxed at the tax-deferred rate, with the tax paid out of the taxable bucket first and out of the conversion itself if taxable can't cover it.

The window opens the year the household retires and closes at the earlier of the first adult's required-distribution year and the first Social Security claim — once either arrives, the low-bracket room the conversion was using is gone. A plan that collects no Social Security has no claim year to close on, so its window runs to the first distribution year instead.

In the worked year above, a $40,000 conversion adds 40,000 × 0.14 = $5,600 of tax. That's why the row's Taxes figure is $6,098 + $5,600 = $11,698, and its Net flow is −$127,561: the $115,863 the household spends, plus every dollar of tax the year's money movement cost.

The bands, and the success number

Each path is sampled once a year — the portfolio's total at the start of each calendar year — giving a thousand values per year. The bands are exact percentiles over those thousand values, not a curve fitted to them: sort them ascending and take the one at position round(p ÷ 100 × 999). The median is the 501st value, the 10th percentile the 101st, the 90th the 900th. Every point on every band is a value some scenario actually reached.

The first point is the same on all thousand paths — today's total — so the fan starts as a single point and widens.

Projected success is as simple as it sounds:

success = paths that were never depleted ÷ 1,000, rounded to a whole percent

Ruin is absorbing. A path that hits zero has failed, permanently, even if a later pension or a good decade would have refilled it. The alternative — asking only whether the ending balance is positive — quietly forgives a household that ran dry at 70 and inherited at 80.

Two numbers, two seeds

The simulation draws its randomness from a seeded generator, and two callers seed it differently:

  • The server always runs seed 42. That covers your saved plan's score — the figure on the Base plan chip and on the dashboard's plan card — and any what-if scored through the API. Those are reproducible: same plan, same portfolio, same number.
  • The app, recomputing while you type, uses a fresh random seed every run. That's the big percentage above the chart, and it's why it can move by a point when you change something and change it back. It's sampling noise, not your plan.

A scenario's chip carries an app number, not a server one. Saving a scenario freezes the score that was on screen at that moment, random seed and all, so a scenario chip and the Base plan chip can differ by a point or two even on identical plans. That difference is the seed. It's also why a scenario stores its score rather than re-deriving it: a stored answer that wobbles on every render would be worse than one that's a point off.

One honest caveat on "same plan, same number": the plan is scored against your real accounts and their current valuations, which are re-read each time. A score that moves after a price backfill moved because the portfolio did.

The year-by-year table: check it yourself

Year by year is not the median of the simulation. It's a separate run with the volatility set to zero — every month earns exactly the mean monthly real return — and that's deliberate: a percentile is a different scenario at every point in time, so its year-over-year differences don't reconcile with any actual cash flow. This one does.

Every row satisfies:

net = income + saving − spending − goals − health − tax

and every balance is the previous one, compounded month by month, plus that year's net flow. The worked year above is one such row:

Column Figure
Income $0
Saving $0
Spending −$99,360
Health −$16,503
Goals $0
Taxes −$11,698
Net flow −$127,561

Take a calculator to it: 99,360 + 16,503 + 11,698 = 127,561. Click the Taxes figure and the row opens to show where it came from — $121,961 drawn from taxable, $40,000 moved to Roth — in exact dollars. The columns themselves are rounded for width ($1.2M, $840k), so a hand-check reconciles to the rounding you can see.

The table always covers whole calendar years, starting in January of the current year even if you're reading it in November — a row mixing a full year's spending with four months of withdrawals would reconcile with nothing. The thousand random paths do start from the current month, because you only live the months that are left.