The math, in one place
Two formulas drive everything. The FIRE number is lean annual spend divided by the safe withdrawal rate. The Coast number is the FIRE number discounted back by the real return over the years to retirement age: what you need invested today so growth alone finishes the job.
FIRE number = lean_annual_spend / swr
Coast number = FIRE number / (1 + real_return) ^ years_to_retirement
How it is built
- A single-row
fire.assumptionstable holds birth date, retirement age, safe withdrawal rate, real return, lean annual spend, and planned monthly contribution. Edit it with SQL; the dashboards follow. - Accounts are classified as invested or not by a default rule with a per-account override table.
fire.net_worth_snapshotsis upserted by every hourly sync, so history survives later edits or deletions inside the budgeting app.- Views for status, trailing cashflow, projection, milestone dates, sensitivity, and milestones feed Metabase cards that are themselves created by an idempotent SQL file.
What it taught me
Everything is expressed in today's dollars. Using a real return instead of a nominal one removed an entire class of arguments about inflation from the household review.