Back to your dashboard

The Fire Calculator — Calculation Methodology

All projections are in real terms (today's £). Inflation 2.5% is used only to deflate nominal mortgage flows into today's £. All other figures are real.

1. FIRE Number

The FIRE Number is the pot you need at retirement to fund your chosen retirement spend for a finite horizon and leave a chosen legacy. It is the present value of two streams discounted at your expected real drawdown return r (default 4%):

N            = lifeExpectancy − targetRetirementAge
spendPV      = nonMortgageAnnualSpend × (1 − (1 + r)^−N) / r
legacyPV     = legacyFloor / (1 + r)^N
FIRE Number  = spendPV + legacyPV

The mortgage is not added as a lump in the target. It is funded through the monthly drawdown in retirementCashOutflow until payoff — including it here as well would double-count.

If you wanted to leave your entire pot untouched and live off 4% returns forever, you'd need roughly 25× your annual non-mortgage spend (nonMortgageAnnualSpend / 0.04). We don't plan that way by default because most people don't want to leave their entire pot untouched.

2. Per-account growth (accumulation)

For each enabled account, with real return r and annual contribution C (employee + employer combined):

balance_{y+1} = balance_y × (1 + r) + C × (1 + r)^0.5

The (1 + r)^0.5 term approximates monthly contributions earning, on average, half a year of growth — a closer match to reality than assuming all contributions arrive at year-end.

C is hiked annually by annualHikePct (real, above-inflation pay rise) to model contribution growth.

Scenario nudges adjust every account's r by ±1% (conservative / base / optimistic).

3. Drawdown (retirement years)

From the target retirement age onwards, contributions stop and the engine withdraws actual cash outflow each year:

cashOutflow(y) = nonMortgageAnnualSpend
                 + monthlyPayment × 12   (only while mortgage > 0)

Withdrawals are proportional across eligible accounts. Pensions (SIPP, workplace pension) are locked until pensionAccessAge (default 57). Before that age, only ISA / LISA / GIA / Cash are eligible. After it, the full pot is drawn down.

Balances are floored at zero for display, but any unfunded shortfall during the locked-pension years is captured (see Bridge Gap below).

4. Freedom Day

For each year y* where age ≥ targetRetirementAge, the engine projects the pension forward to access age and adds the accessible pot today:

pensionAtAccess = pensionBalance × (1 + r_pen)^bridgeYears
totalPV         = accessibleBalance + pensionAtAccess

Freedom Day = the first y* where totalPV ≥ FIRE Number.

Whether the accessible pot actually lasts through the bridge years before pensions unlock is a separate check — see Bridge Gap below. It is a warning, not a gate on Freedom Day.

5. Bridge Gap warning

If during projection the accessible pot runs dry before pensionAccessAge (i.e. the year's withdrawal cannot be funded from non-pension accounts), the engine records the age at which this happens (bridgeGapAge) and surfaces a loud warning on the dashboard. Balances are not silently floored at zero in the calculation — only in display.

6. Savings rate

Numerator: employee contributions only — the money the user is actively redirecting. Employer pension contributions are excluded because they are not a saving the user chooses each month; they grow the pot but are not part of the household's discretionary saving decision.

Denominator: household net (take-home) monthly income, including partner take-home in couple mode and any other monthly income.

savingsRate = employeeMonthlyContribution / householdNetMonthly

7. Real-return assumptions

Defaults (annual, real / after-inflation):

AccountDefault real returnSource
S&S ISA / SIPP / LISA / GIA5.5%Barclays Equity Gilt Study, UBS Global Returns Yearbook, Vanguard UK 10-yr
Workplace Pension4.5%Lifecycle blended fund with de-risking glide path
Cash / Premium Bonds0.5%Long-run cash real return

The same underlying asset class produces the same gross real return; tax wrappers (ISA / SIPP / LISA / GIA) change tax treatment, not market growth.

8. What we don't model (yet)

  • Home equity in net worth (no home-value input)
  • Tax on drawdown: SIPP 25% tax-free, marginal income tax
  • LISA 25% government bonus on contributions
  • State pension at age 67
  • Sequence-of-returns risk / Monte Carlo

GIA dividend tax and CGT are approximated as a 1% real-return haircut (5.5% → 4.5%). Cash interest tax is approximated as a 0.2% haircut (0.5% → 0.3%). These assume a higher-rate taxpayer. Actual tax depends on your marginal rate, dividend yield, allowances used, and disposal timing — override the per-account real return if your situation differs.