Projection Engine

How the deterministic year-by-year retirement projection is computed — the annual loop, withdrawal sourcing, and what “plan fully funded” actually means.

The year-by-year loop

The core of SmartRetireCalc is a year-by-year simulation engine. Starting from your current portfolio, it steps through each year of retirement and computes how your balance changes based on growth, withdrawals, taxes, and inflation.

Each year follows this sequence:

  1. Starting balance — the portfolio value carried forward from the previous year.
  2. Investment return applied — the balance grows (or shrinks) by the blended stock/bond return rate.
  3. Withdrawals for spending — inflation-adjusted living expenses are subtracted from the portfolio.
  4. Taxes estimated — federal income taxes on taxable withdrawals are calculated and deducted (see Taxes).
  5. RMD compliance — for pre-tax accounts after age 73, required minimum distributions are applied if they exceed the planned withdrawal.
  6. Ending balance carried forward — this becomes next year’s starting balance.
EndingBalance = (StartingBalance − Withdrawal) × (1 + ReturnRate)

The return rate is a blended rate based on your stock/bond allocation per account. If you have 70% stocks at 7% and 30% bonds at 3%, the blended rate is (0.70 × 7%) + (0.30 × 3%) = 5.8%. Each account type is tracked separately so withdrawal sourcing and tax treatment remain correct.

Withdrawal sourcing order

Withdrawals are sourced in tax-efficiency order:

  1. Savings / HYSA — cash, no tax on withdrawal.
  2. Taxable brokerage — after-tax dollars (capital gains treatment simplified).
  3. Non-Deductible Traditional IRA — only the gain portion (above basis) is taxable.
  4. Pre-tax accounts (401k, Traditional IRA) — fully taxable as ordinary income.
  5. Roth — tax-free; preserved as long as possible.

Funding shortfall vs. portfolio depletion

The Spending figure shown for each year is your planned(requested) living spending; modeled loan payments are a separate part of the annual cash need. If your modeled income and accounts cannot cover that planned living spending plus loan payments, the unfunded remainder is reported for that year as a funding gap (the model does not fabricate a withdrawal to close it). Federal income tax and IRMAA are treated as an additional plan cost; the tax liability shown is always the amount owed, and it is funded first from any guaranteed-income surplus for the year, then from a pre-tax withdrawal, then from Roth. Any portion none of those could fund is reported separately as an unfunded tax/IRMAA obligation — it is never blended into the spending gap. A large guaranteed-income surplus therefore cannot, by itself, create a funding gap.

Portfolio depletion is not the same as a funding gap. A portfolio balance reaching zero only means there are no investable assets left; if Social Security, a pension, or an annuity still covers the planned cash need, the plan is fully funded. The result reports a deterministic “plan fully funded” status for the modeled base projection based on whether any year has a funding gap — this is a yes/no outcome for the modeled assumptions, not a probability of success.

The engine is deterministic and reproducible: the same inputs always produce the same year-by-year output. It is not a Monte Carlo simulation and does not produce a “percent chance of success” figure. The three built-in return scenarios (see Assumptions) are how the model stress-tests a plan.

Where account-specific detail lives

Non-deductible IRA basis tracking, annuity income, real assets, and loans each interact with the engine in specific ways. That detail currently lives in the Account Types & Net Worth Modeling section on the Methodology overview and will move to its own topic page in a later update.

Related guides: Retirement Planning Guide