← 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's
DividendScorer— 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 under
services/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/calculatorendpoint. - Dividend confidence factors. Computed by this repo's nine-methodology scoring pipeline — see
services/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.