Methodology
How our retirement calculations work
This page explains what the planner actually does — in plain language — so you can see the math, the assumptions, and the limits. Educational what-if projections only; not advice.
1. Baseline projection
The core engine walks your plan one year at a time, from today through your planning age. Each year it builds income, figures how much the portfolio must supply, takes RMDs when due, withdraws in a fixed account-type order, adds contributions (while you are still contributing), then applies returns.
Within each year, the sequence is:
- Apply the year’s inflation factor to spending and inflation-linked income.
- Compute retirement spending (zero before your retirement age).
- Add Social Security, other income, pensions, and any retirement-era work income.
- Compute portfolio need (see Spending & income).
- Compute RMD on tax-deferred balances; use what is needed for spending; reinvest any excess into taxable.
- Withdraw any remaining need from account buckets in a fixed order.
- If need remains unmet, mark the path as failed for that age (the timeline still continues).
- Add contributions, then grow each bucket by its return for the year.
Account-specific returns: individual accounts roll up into buckets (money market, taxable brokerage, annuity, pension balance, tax-deferred employer, tax-deferred IRA, Roth employer, Roth IRA). Under your normal baseline, each bucket uses its own assumed return (balance-weighted from the accounts in that bucket). Market or What If return overrides can apply one shared return across buckets for that run.
Pre-retirement wages and day-to-day budgeting are for your own planning context; they do not change projected portfolio balances. Net-worth entries that are not part of the invested portfolio are also outside the projection engine.
2. Inflation / today’s dollars
Most plan inputs — retirement spending, Social Security benefit estimates, and other inflation-adjusted income — are entered in today’s dollars. The engine then grows them forward from the plan’s starting age so each future year is shown in nominal (then-year) dollars.
- General inflation grows retirement spending and most inflation-linked income from today forward.
- COLA grows Social Security from today forward as well (see Social Security): a benefit entered in today’s dollars is already COLA-adjusted by the time claiming begins, then continues to grow each year afterward.
Annual detail tables and printable reports are in future/nominal dollars unless a view explicitly says otherwise. Some stress-test charts can show balances deflated back to today’s dollars so paths are easier to compare.
3. Retirement spending and income
After retirement starts, the portfolio’s job is to cover whatever spending is left after non-portfolio income:
Portfolio need = max(0, Spending − Social Security − Other income − Retirement work income)
Spending can be a single annual target or the sum of itemized retirement budget categories, plus any year-range spending adjustments you add. Surplus income above spending does not automatically get saved into the portfolio.
This need is a pre-tax cash gap. The engine does not subtract income tax, capital gains tax, or tax on Social Security from the gap (see Taxes).
5. RMDs
The planner estimates RMDs by combining tax-deferred IRA and employer-plan balances and dividing that balance by the applicable Uniform Lifetime divisor. This is a planning approximation; actual RMD requirements can differ by account and employment status.
Estimated RMD = (Tax-deferred IRA + Tax-deferred employer balances) ÷ Uniform Lifetime divisor for that age
-
Divisors come from the app’s IRS Uniform Lifetime Table schedule
(
uniform_2022), ages 73–100. - Start-age guidance follows current SECURE Act rules of thumb by birth year (commonly 72 / 73 / 75). You can override the start age in My Data.
- RMD used for spending reduces portfolio need first; any RMD above need is treated as reinvested into the taxable bucket before growth.
Not modeled: the April 1 first-year delay, inherited IRAs, the still-working exception, QCDs, joint-life tables, prior December 31 balance timing, or separate per-plan RMD calculations. Roth balances are excluded from the RMD base.
6. Withdrawal order
After applying RMD toward spending, any remaining portfolio need is taken from buckets in this fixed order:
- Money market / cash
- Taxable brokerage
- Annuity
- Pension balance
- Tax-deferred employer (401k / 403b / 457)
- Tax-deferred IRA
- Roth employer
- Roth IRA
Withdrawals are by account type / bucket, not by individual account nickname. This order is a transparent heuristic — not a tax-optimized or customizable strategy engine.
7. Spending Capacity
Spending Capacity answers: roughly how much annual spending could this portfolio support over a chosen horizon?
The default method is a level real annuity (today’s-dollar spending) through the horizon you choose, using a blended portfolio return and optional end-balance target. Other modes include a nominal annuity and percent-of-portfolio rules.
This tool uses a simplified single-portfolio model. It does not replay the full bucket-by-bucket withdrawal order, RMD schedule, or year-by-year account mix of the baseline engine. Rules of thumb like “3% / 4% / 5%” come from research on variable markets; this panel’s annuity methods assume the return you set.
Separately, Monte Carlo can search for a spending scale that survives through plan end on failed paths — that is a stress-test diagnostic, not the Spending Capacity tab’s primary solver.
8. Money Longevity
Money Longevity asks: at this spending level, how long does the portfolio last?
It runs a monthly loop (up to 120 years). Each month the draw is spending minus income (scenario income when enabled, or a flat income override). Default spending is modeled in real terms (today’s-dollar spending rising with inflation).
Run-out age is when the portfolio hits your floor. If draws are covered by income, or the portfolio survives the full horizon, the result is treated as sustainable / indefinite for that setup.
Like Spending Capacity, this is a simplified portfolio-and-draw model — not the full baseline engine with bucket order and RMDs.
9. Monte Carlo
Monte Carlo reruns your plan many times with random market returns and inflation, using the same year-by-year engine as the baseline.
- Run counts: 50, 100, 500, or 5,000 (default 500).
- Traditional returns: normal distribution with mean 8% and standard deviation 15%. Return trigger thresholds: −30% and +40%. A normal draw that crosses either threshold is discarded and replaced by a uniform draw within ±5% of that threshold.
- Inflation draws: mean 2.5%, standard deviation 1.5%. Inflation trigger thresholds: −1% and +8%, using the same boundary-redraw method.
- Shared annual return: each year, one market draw is applied to the buckets marked stochastic. Money market is fixed at the plan return by default unless you include it.
- Success: a path succeeds if it does not run short of spending through your planning age.
Bootstrap modes can instead sample historical Damodaran years (independently or in blocks, typically length 3–5, default 4) instead of a normal distribution.
10. Historical testing
Historical testing replays actual past market sequences against your plan, again through the same baseline engine.
-
Equity returns default to Damodaran’s U.S. large-cap total-return series
(
adamodar_us_large_cap_tr); small-cap is optional. -
Inflation uses Damodaran’s U.S. CPI inflation series
(
adamodar_us_cpi_inflation) for the same calendar years. -
Optional cash series (
adamodar_us_tbill_3m) can drive the money-market bucket. - The tool builds every start year that has a full continuous window long enough for your plan length — overlapping rolling windows — or you can pin a single start year.
- Buckets you leave unchecked keep your plan’s assumed returns; checked buckets take that year’s historical return (and inflation applies to spending/income as in the engine).
Data is stored in the application database from Damodaran’s published historical return series (NYU Stern). Historical data currently loaded: 1928–2025.
11. Taxes
This is one of the most important honesty points on the site:
The projection engine does not currently model income taxes. It does not calculate ordinary income tax on withdrawals or RMDs, capital gains on taxable sales, taxation of Social Security benefits, state taxes, or tax brackets.
Portfolio need is therefore a cash gap before tax. Bucket withdrawal order is a transparent heuristic, not a tax-efficient optimizer. Any “taxes” line in personal budgeting is for your notes only and is not fed into the projection math.
Tax analytics and related features are on the product roadmap; until they ship, do not treat ending balances or spending capacity as after-tax results.
12. Sources and last updated
| Topic | Source / basis | Notes |
|---|---|---|
| RMD divisors |
IRS Uniform Lifetime Table (Table III) —
Publication 590-B
/ app schedule uniform_2022
|
Effective-year marker 2022; ages 73–100 in schedule. See also the IRS RMD overview. |
| RMD start ages | SECURE Act rules of thumb by birth year | UI suggestion; user-editable start age |
| Historical market returns | Aswath Damodaran, NYU Stern — historical returns | Default: U.S. large-cap total return series in app DB (1928–2025) |
| Historical inflation | Damodaran U.S. CPI inflation series (same dataset family) | Paired with equity years for each window |
| Baseline / What If engine | Retirement Planning Center projection engine | Year-by-year cash-flow model described above |
| Monte Carlo defaults | App defaults (8% / 15% returns; 2.5% / 1.5% inflation; 500 runs) | Configurable in the Monte Carlo tool |
Methodology page last reviewed: September 2026. When calculation behavior changes, this page should be updated to match.
4. Social Security
What is modeled today
What is not modeled
In short: the planner uses the benefit levels and ages you provide, then applies COLA from today — it does not replace a Social Security statement or SSA calculator.