Safe Withdrawal Rate
The single fixed-rate, fixed-return, fixed-inflation year-by-year model behind the “4% rule” — the withdrawal order, the rate comparison, the seven deterministic stress scenarios, and what it deliberately leaves out.
Overview
The Safe Withdrawal Rate Calculator answers a narrower question than the main Projection Engine: given one fixed withdrawal rate, one fixed nominal return, and one fixed inflation rate, how long does a portfolio last? It trades the full model’s completeness for speed and transparency. All of its math runs server-side in RetireCalc.Engine.
What the calculator models — and does not
Models: a starting portfolio, a withdrawal that grows with inflation each year, a fixed annual investment return, and a hard stop when the balance hits zero.
Does not model: taxes, Social Security, pensions, annuities or any other income, account types, fees, variable year-to-year returns, sequence-of-returns risk, or a probability of success. For those, use the Retirement Paycheck Calculator or the full retirement calculator. The model is U.S.-focused by design.
Inputs
| Input | Range | Role in the model |
|---|---|---|
| Retirement portfolio value | Any amount above $0 | The starting balance. One number — no account types or tax buckets. |
| Annual withdrawal rate | 3.0% – 5.5% (0.5% steps) | Applied to the starting portfolio to set the first-year withdrawal. |
| Expected annual return | 4% – 8% | Nominal (before inflation). One fixed rate for every year. |
| Inflation rate | 2% – 5% | One fixed rate; escalates the withdrawal from year 2 onward. |
| Retirement age | 50 – 80 | The age the simulation starts. |
| Project-through age | 70 – 110 | The last age simulated. Must be greater than the retirement age. |
Request validation rejects a non-positive portfolio or rate, a negative return or inflation rate, and a retirement age that is not strictly below the project-through age.
How the year-by-year simulation works
The first year’s withdrawal is exactly portfolio × rate. From the second year on, the withdrawal is escalated by the inflation rate. Each year the withdrawal is capped at whatever balance remains, then investment growth is applied to the balance after the withdrawal is taken — a withdrawal-then-growth, beginning-of-year order.
Withdrawaly = min(Withdrawaly−1 × (1 + Inflation), Balancey−1)
Growthy = (Balancey−1 − Withdrawaly) × Return
Balancey = Balancey−1 − Withdrawaly + Growthy
Balances are kept at full precision through the loop; only the display rounds to whole dollars. The calendar-year column in the table is the current year (UTC) plus the row offset — it is a label, not an input to the math.
“Survives” vs. “depleted”
- Depleted — the first year the balance reaches $0 or below (an exact zero counts). The simulation stops immediately at that age; no growth or withdrawals are modeled for any later year.
- Survives — the balance stays above $0 through the full final simulated year (a complete year, not a partial one).
- A year is flagged low balance when the ending balance drops below three times the first-year withdrawal — a visual warning only, not a separate rule.
Approximate real return
The “approximate real return” shown on the status card uses the Fisher equation, not a naive subtraction of inflation from the nominal return:
Example: a 6% nominal return with 3% inflation is ≈ 2.91% real, not 3%. See Assumptions for how nominal and real dollars are treated across the site.
Rate comparison
Alongside your result the calculator re-runs the identical simulation at six fixed withdrawal rates — 3.0%, 3.5%, 4.0%, 4.5%, 5.0%, and 5.5% — against your own return, inflation, and ages. Only the withdrawal rate changes between rows, so the grid isolates the effect of the rate alone.
Stress scenarios
The calculator also runs seven scenarios: your baseline plus six single-assumption stresses. Each re-runs the same simulation with exactly one input changed by a fixed amount.
| Scenario | What changes |
|---|---|
| Your current assumptions | Baseline — nothing changed |
| Lower returns | Expected return −1 percentage point |
| Higher inflation | Inflation +1 percentage point |
| High inflation | Inflation raised to 5% (or +1 point if already ≥ 5%) |
| Longer retirement | Project-through age extended to at least 100 |
| Higher spending | Initial withdrawal +10% |
| Lower spending | Initial withdrawal −10% |
What you see in the results
- Annual and monthly withdrawal, the age the portfolio lasts until (or “never runs out”), and the number of years of withdrawals funded.
- A plain-language status sentence, the approximate real return, and a fixed “this is a projection, not a guarantee” line.
- A balance-by-age chart, the six-rate comparison grid, the seven stress scenarios, and the full year-by-year table (age, calendar year, withdrawal, growth, ending balance).
How this differs from the main projection
The Projection Engine models separate account buckets, Social Security, federal taxes, RMDs, Roth conversions, and three return scenarios. The Safe Withdrawal Rate model has none of that: one pool of money, one rate, one return, one inflation figure. Use it for a quick sanity check on a withdrawal rate, then use the full calculator for a plan.
The Retirement Age Calculator uses the same heuristic
The Retirement Age Calculator applies this withdrawal-rate heuristic in reverse: instead of asking “how long does a portfolio last?” it asks “when does a portfolio first cover my spending?” Spending and Social Security are entered in today’s dollars. The base target is the spending gap over the safe withdrawal rate:
Targetn = Target0 × (1 + Inflation)n
Portfolion = (Portfolion−1 + Annual contribution) × (1 + Nominal return)
The max(0, …) guard means that when guaranteed income already covers spending, the base target is $0 and the earliest retirement age is the current age. SWR is entered as a percent (e.g. 4), so the division is by SWR ÷ 100.
Each future year’s nominal portfolio is compared against that year’s inflation-adjusted target; the earliest retirement age is the first year the portfolio meets or exceeds it (or “not reached” by age 70). If current savings already meet Target0, the answer is the current age. Contributions are a flat nominal amount — no raises or contribution escalation — and Social Security is held constant relative to spending (both inflate together inside the target). Like the calculator above, it is deterministic and models no taxes, RMDs, sequence-of-returns risk, or Social Security claiming-age optimization; the withdrawal rate is a planning heuristic, not a guarantee.
Limitations
- Fixed annual return — no market variability and no sequence-of-returns risk. Use the Sequence of Returns Risk Calculator for that.
- No historical market data — use Portfolio Lab for backtesting against real returns.
- No taxes, no other income sources, no fees. The withdrawal is treated as fully spendable.
- The result is a single deterministic outcome, not a confidence level. A rate that “survives” here is not guaranteed to survive a real sequence of returns.
Background
- Bengen (1994), “Determining Withdrawal Rates Using Historical Data” — origin of the 4% withdrawal-rate research
- Cooley, Hubbard & Walz (1998) — the “Trinity Study” — the follow-on portfolio-survival analysis the 4% rule is associated with
SmartRetireCalc’s model is a simplified deterministic illustration of that idea — it does not reproduce Bengen’s or the Trinity Study’s historical-sequence method.
Related calculators
Related guides: Safe Withdrawal Rate Guide · Sequence of Returns Risk Guide