A retirement date you can check.
The FIRE goal, the retirement date and the general net worth forecast all run on the same handful of functions. This page documents the actual formulas, not a simplified explainer version. If a number on your dashboard looks wrong, you should be able to reproduce it from what's below.
Net worth basis: investable vs. total
Two ways to look at net worth. Total is everything, including property and vehicles. Investable strips those out, because a house can't fund a monthly withdrawal without selling it. Every forecast below runs on the investable figure unless stated otherwise.
investable net worth = Σ(liquid assets by type) − total liabilities where liquid excludes: property, vehicle
Turning an annual return into a monthly one
Contributions happen monthly, so the annual return assumption gets converted to an equivalent monthly rate by compounding. It isn't just divided by 12, which would understate the effect of compounding within the year.
monthly rate = (1 + annual return) ^ (1/12) − 1 e.g. 7% annual → 0.5654% monthly
Growing a balance forward
Each month, the balance compounds at the monthly rate and the contribution is added. Once a year, the contribution itself grows by your assumed contribution growth rate (e.g. a raise).
value ← value × (1 + monthly rate) + monthly contribution every 12 months: contribution ← contribution × (1 + growth rate)
Worked example: $50,000 start, $1,000/month contribution growing 3%/year, 7% expected annual return:
| Year | Balance |
|---|---|
| 0 | $50,000 |
| 1 | $65,880 |
| 2 | $83,244 |
| 3 | $102,205 |
| 5 | $145,424 |
| 10 | $291,253 |
How long until a target?
Same monthly loop as above, run until the balance clears the target (capped at 100 years). This is what answers "when do I hit $1M" or "when is my FIRE number reached."
Same example as above, target $1,000,000: reached in 265 months (22.1 years).
Coast FIRE
The earliest point where you could stop contributing entirely and still reach the target by your horizon, purely on compounding. Computed by checking, at each month, whether the current balance, left alone and compounded for the remaining time, would already clear the target.
The FIRE number (safe withdrawal rate)
Today's monthly spend is inflated forward to the year you plan to stop working, annualised, then divided by your safe withdrawal rate. A lower SWR means a bigger, more conservative nest egg for the same spend.
spend at horizon = spend today × (1 + inflation) ^ years nest egg = (spend at horizon × 12) ÷ safe withdrawal rate
Worked example: $4,000/month today, 3% inflation, 20 years out, 4% SWR:
spend at horizon ≈ $7,224/month nest egg needed ≈ $2,167,333
Retirement drawdown
After retirement, the first year's withdrawal is the corpus times the safe withdrawal rate. The corpus then grows at your real (inflation-adjusted) return and shrinks by that year's spend; the spend itself grows with inflation each year after. This is what draws the "does the money last" line on the retirement chart.
year-1 withdrawal = corpus × safe withdrawal rate value ← value × (1 + real return) − annual spend annual spend ← annual spend × (1 + inflation)
Uncertainty ranges (Monte Carlo)
A single projection line assumes one fixed return every year, which never actually happens. The range chart instead runs 600 simulated paths, each year drawing a random return around your expected return, and reports the 10th/25th/50th/75th/90th percentile outcomes at each year.
The spread of that randomness (volatility) comes from your actual asset mix. Each asset class carries an assumed annual volatility (stocks 18%, crypto 60%, deposits 2%, cash 1%, property 8%, vehicles 10%, pensions 12%, precious metals 15%, loans 0%, other 12%), combined by portfolio weight. This combination assumes each asset class moves independently of the others, which understates risk when your holdings are correlated (e.g. concentrated in one sector). That's a simplification we'd rather state plainly than hide. If your portfolio has real price history, we use its actual realised volatility instead of the class-mix estimate where that's available; a fixed 11.5% is the last-resort fallback. The combined figure is clamped between 5% and 50% either way, so a single wild data point can't produce a nonsensical range.
mixed volatility = √(Σ weight² × class volatility²) clamped to [5%, 50%]
Which assumption moves your date the most?
The sensitivity view recomputes "months to target" three times, nudging savings rate, expected return, and retirement spend up and down in turn, and shows which lever moves the date furthest. It's the same months to target function from above, just run six times with one input changed at a time.
What we fill in for you by default
Two numbers are pre-filled from your actual data rather than left at an arbitrary default. You can always override them:
- Monthly contribution defaults to your active salary inflows minus loan (EMI) outflows, weighted by your ownership share and converted to your display currency. This only applies when you have at least one active salary flow recorded.
- Retirement spend defaults to a cost-of-living benchmark for your country when one is available, converted to your currency. Again, this only kicks in once a salary flow exists, so the default reflects an actual working household rather than a guess for an empty account.