← Back to FIRE Calculator

About the FIRE model

How the projections, stress tests, and Coast FIRE numbers on /fire are computed.

What this tool does

The FIRE (Financial Independence / Retire Early) page bundles four tools that share the same watchlist and preferences:

  • Summary — single-path projection using a flat annual return + dividend growth rate, producing years-to-FIRE and a coverage ratio from your watchlist's projected dividend income.
  • Stress Test — block-bootstrap Monte Carlo over historical S&P 500 returns. Outputs a success probability and terminal percentile bands (P10 / P50 / P90).
  • Coast — solves for the “coast number”: the portfolio today that compounds into your target by retirement age if you stop contributing entirely.
  • Budget — categorised expenses, each with its own inflation rate. Blends into a single effective inflation figure that can optionally drive stress-test withdrawals.

Assumptions

  • Dividend growth rate (DGR). Per-holding DGR is multiplied by a confidence factor derived from this app'sDividendScorer — streak, payout ratio, and coverage factors in the scorer breakdown damp down growth when data looks fragile.
  • Safe withdrawal rate (SWR). Default 4%. Adjustable in the Stress Test tab. This is applied as a constant fraction of the starting portfolio (nominal dollars) unless a budget profile is attached.
  • Monte Carlo engine. Block bootstrap with block length sampled uniformly from [3, 5] years. Each trial concatenates blocks until the horizon is filled. Withdrawals happen at the start of each year; the remainder then earns the sampled return. Portfolios are clamped at zero once depleted.
  • Historical return source. S&P 500 annual total returns 1928-2024 (Damodaran NYU Stern public dataset, CC-BY). Shipped as a static JSON underservices/scoring-api/app/services/fire/data/sp500_annual_returns.jsonso the numbers are reproducible between deploys.
  • Coast FIRE solver. Assumes the expected-return input is a real return (net of inflation). The solver finds the present value that compounds at that rate to meet the target by retirement age.

Limitations

  • No tax modelling. Withdrawals are treated as gross nominal dollars. Roth / traditional / brokerage tax treatment, ACA / IRMAA cliffs, and RMDs are all out of scope.
  • Summary tab is nominal. The Summary projection does not inflation-adjust expenses or income. Use the Budget tab and Stress Test for real-dollar scenarios.
  • No sequence-of-returns in Summary. The Summary tab uses flat compounding — by design, it's the “quick look”. Sequence risk is only modeled in the Stress Test via block bootstrap.
  • Single-country returns. Historical series is US S&P 500 only. No international, bond, or multi-asset diversification is modeled.
  • Static dividend scoring. The DGR confidence multiplier uses the most recent scorer run; it does not forecast future scoring regime changes.

Data sources

  • Historical returns. Aswath Damodaran (NYU Stern) — S&P 500 annual total returns, CC-BY. Shiller's Yale dataset is also compatible and is used cross-checked on updates.
  • Per-holding dividend data. From this repo's provider pipeline (Financial Modeling Prep primary, Alpha Vantage fallback), persisted to the scoring database and read via the/fire/calculator endpoint.
  • Dividend confidence factors. Computed by this repo's nine-methodology scoring pipeline — seeservices/scoring-api/app/scoring/dividend.py.

Investment disclaimer: The information provided by FIRE Stock Screener is for educational and informational purposes only. It should not be considered as financial advice or a recommendation to buy or sell any security. Past performance is not indicative of future results. Always conduct your own research and consult with a qualified financial advisor before making investment decisions.