Methodology
FIRE Lab uses Monte Carlo simulation with Block Bootstrap resampling of historical market data. This page explains the core methods, data sources, and assumptions behind the simulator.
Block Bootstrap Resampling
Instead of assuming returns follow a specific distribution (e.g. normal), we draw directly from historical data. The Block Bootstrap preserves the autocorrelation and cross-asset correlations observed in real markets by sampling contiguous blocks of historical returns.
For each simulation path, the algorithm repeatedly draws a random block size (from a configurable range), picks a random starting year from the historical dataset, and copies that many consecutive years of returns. Indices wrap around circularly to avoid boundary bias. This process repeats until the full retirement horizon is filled.
In pooled multi-country mode, each block also randomly selects a country with equal probability (1/N), mixing return regimes across 16 developed economies within a single path.
Monte Carlo Simulation
The simulator runs thousands of independent retirement paths (default varies by server capacity). Each path represents one possible sequence of market returns over your retirement horizon.
For each year of each path: (1) portfolio grows by the sampled real return, (2) annual withdrawal is deducted, (3) custom cash flows (expenses, then income) are applied, (4) if the portfolio reaches zero, the path is marked as depleted. Results are aggregated into percentile bands (P5 through P95) to show the range of possible outcomes.
Success Rate
The percentage of simulation paths that delivered the whole plan. For fixed, declining and smile withdrawals this means every planned dollar was actually paid — including scheduled expense cash flows — so a year that could only fund part of its spending counts as a failure even if it is the last one. For dynamic and CAPE withdrawals, where spending follows the portfolio and there is no fixed plan to miss, it keeps the older meaning: the portfolio was never exhausted, with depletion in the final year counted as success. This metric answers: “What is the probability my plan is delivered?”
Funded Ratio
How much of the plan was funded. For fixed, declining and smile withdrawals this is dollars paid versus dollars planned, so a path that funded two and a half years of a three-year plan scores 0.83. For dynamic and CAPE it is the average fraction of the horizon reached, the older year-count measure. Unlike success rate, funded ratio captures partial outcomes — but the two bases are different units and should not be compared against each other.
Mortality Overlay & Lifetime Failure Metric
The Rich / Broke / Dead chart and the "chance of going broke while alive" metric weight the simulated solvency curve by survival probabilities. The mortality model is a Gompertz law fitted to the SSA 2021 period life table (modal age 85.0 / dispersion 10.4 for men, 88.8 / 9.7 for women; accurate to ~1pp over ages 65–100), with a cohort adjustment that scales the hazard down by 0.7% per future calendar year — the SSA Trustees' intermediate long-run mortality-improvement assumption. This shifts blended life expectancy at 45 from ~81.8 to ~84.2 and the chance of reaching 100 from ~3% to ~8%, making the lifetime failure metric appropriately more conservative.
The metric itself uses the identity that depletion and death are both absorbing states: the probability of ever being alive-and-broke equals the survival probability at the moment of first depletion, summed over the depletion-time distribution implied by the per-year solvency curve. It is only shown when the simulation horizon reaches age 100, because a shorter horizon truncates late depletions and understates the metric (measured: ≤0.15pp bias at age 100, but up to ~2pp at 90 and ~4pp at 85).
Caveats: the table is US population data — early retirees tend to be healthier and wealthier than average, so true survival (and hence the failure metric) is likely somewhat higher; the couple mode assumes a same-age male/female pair with independent mortality. Treat the metric as a lifetime-expectation complement to the fixed-horizon success rate, not a replacement.
Guardrail Withdrawal Strategy
FIRE Lab implements risk-based guardrails (as described by Derek Tharp and Justin Fitzpatrick on Kitces.com), which dynamically adjust withdrawals based on the current probability of portfolio survival. Unlike withdrawal-rate guardrails such as Guyton-Klinger, risk-based guardrails use Monte Carlo probability-of-success as the trigger, making them more robust to changing income needs and the retirement distribution hatchet.
Before simulation, a lookup table maps (withdrawal rate, remaining years) to survival probability. During simulation, the current success rate is checked each year. If it drops below the lower guardrail, spending is cut. If it rises above the upper guardrail, spending is increased. Between the bounds, no change is made.
This approach allows real-time spending adjustments that respond to market conditions while maintaining a target success probability throughout retirement.
Data Sources
Jordà-Schularick-Taylor (JST) Macrohistory Database — stock returns, bond returns, and inflation for 16 developed countries from 1871 to 2020. Years 2021-2025 are extended using IMF World Economic Outlook, OECD Main Economic Indicators, and Yahoo Finance data.
Bogleheads community Simba's Backtesting Spreadsheet — long-term US market data including S&P 500 (and predecessors), 10-Year US Treasury returns, and international equities from 1970 (vintage MSCI EAFE 1970–96; total-international fund returns net of fund costs and foreign withholding from 1997). The recommended U.S. preset uses this dataset from 1900 with a JST-derived international leg before 1970.
All returns used in simulation are real (inflation-adjusted). The simulator supports both single-country analysis and pooled multi-country sampling.
The cash asset class uses each country's historical short-term money-market rate (JST bill rate, the same series that anchors leverage borrowing costs) minus a configurable cash fee. Cash is sampled per path like every other asset, so it reflects real historical cash regimes — including deeply negative real returns in inflationary decades — rather than a constant assumed yield.
Covered Countries
Australia, Belgium, Denmark, Finland, France, Germany, Italy, Japan, Netherlands, Norway, Portugal, Spain, Sweden, Switzerland, United Kingdom, and United States.
See the per-country comparison table: real returns, inflation and worst 30-year windows for all 16 →
Limitations
Historical data is not a guarantee of future performance. The Block Bootstrap preserves historical return distributions but cannot predict structural changes in markets.
The simulator assumes a constant asset allocation (or a predetermined glide path) and does not model behavioral responses to market conditions beyond the guardrail rules.
Tax effects, currency risk for international investors, and transaction costs beyond expense ratios are not modeled. Results should be used for planning purposes, not as financial advice.