← All posts
Tools & Methodology 6 min read

How FIRE Wealth OS Simulates 155 Years of Market History

Under the hood: how we run your FIRE plan against every historical starting point from 1871 to today, and why that gives a more honest answer than averages.

TL;DR

We take your savings rate, expenses, and allocation and run them against every overlapping historical period in the Shiller and Ken French datasets — typically 100+ starting cohorts. The output is a distribution of FI dates and survival rates, not a single number.

What the simulator actually does

Most FIRE calculators do one of two things: assume a fixed real return (e.g. 5%) and project forward, or run Monte Carlo simulations using assumed return and volatility parameters. Both are useful and both miss something important.

FIRE Wealth OS uses historical sequence testing: for each starting year in the data, we run your full plan — savings, growth, retirement, withdrawals — using the actual returns that occurred over the subsequent 50+ years. We do this for every possible starting point, then show you the distribution of outcomes.

If there are 100 overlapping 50-year windows in the data, we run 100 simulations of your plan. You see how it would have fared starting in 1929, in 1966, in 2000, and in every other year. The worst cohorts are the ones that matter for safety; the median tells you the typical outcome.

The data

Two main datasets:

Robert Shiller's monthly S&P composite series (1871–present). Reconstructed from Cowles Commission data for pre-1926, then published S&P 500 thereafter. Includes prices, dividends, earnings, and US CPI. Free, well-documented, used in essentially every long-run equity study.

Ken French Data Library (1926–present). The academic standard for factor returns. Provides monthly returns for the size (SMB), value (HML), profitability (RMW), investment (CMA) and momentum (UMD) factors back to 1926 US. International factor data extends back to 1990.

We combine these to model:

  • Total market return (Shiller)
  • Factor tilts (Ken French)
  • Inflation (Shiller CPI)
  • Real returns (computed from nominal + CPI)

What we model

Every projection includes:

  • Contributions during accumulation — your savings rate applied to income, with optional contribution caps for tax-advantaged accounts
  • Inflation-adjusted spending in retirement — your stated annual expenses, escalated each year by realised inflation
  • Withdrawal-rate flexibility — optional Guyton-Klinger guardrails for spending adjustments in down markets
  • Factor tilts — toggle between market-only, value tilt, multi-factor, and several other combinations
  • Global vs US — toggle whether to use US-only Shiller data or globally diversified MSCI-style returns

The full output for any plan: median FI date, distribution of FI dates (p10–p90), worst-case sequence, survival rate at retirement, and which historical periods would have broken the plan.

What we deliberately don't model

We don't include:

  • Single-stock returns. We assume diversified ETF-level exposure throughout.
  • Active management alpha. No "your fund manager will outperform" assumptions.
  • Tax optimisation. We model after-tax expenses; we don't try to predict your tax band trajectory.
  • Detailed account modelling. We don't separate ISA from SIPP from GIA in the simulation engine. The math is at the portfolio level.

These are deliberate. Including them would require predictions we can't honestly make and would create false precision.

Why historical, not Monte Carlo

Monte Carlo simulations are mathematically convenient but make an implicit assumption that's usually wrong: that returns are independent and identically distributed (IID). They aren't. Real markets have momentum (returns positively correlated over 3–12 months), mean reversion (negatively correlated over 3–7 years), and regime changes (1970s vs 1990s).

A Monte Carlo that ignores these can generate sequences that never actually happen — particularly very benign sequences that mislead optimistically. Historical sequence testing only uses sequences that did happen, so it's automatically constrained to realistic patterns.

The tradeoff: historical testing uses fewer than 100 distinct windows (overlapping), whereas Monte Carlo can generate 10,000+ independent paths. We accept the smaller sample because we trust the realism more than the volume.

For the deeper comparison, see our Monte Carlo vs historical sequence testing article.

What you should do with the output

Three principles:

  1. Look at the worst cohort, not the average. The 4% rule looks fine on average. It barely works against 1966. Your plan needs to survive the bad cases.
  2. Watch the survival rate, not just the median. A plan with a median FI date 2 years earlier but a survival rate 10 points lower is the worse plan.
  3. Re-run periodically. Markets, your income, and your expenses change. Re-run your simulation annually.

Open the simulator and try it. Most people are surprised by how much the distribution moves with small input changes — that's the actual insight.

Frequently asked questions

Why use Shiller data instead of a more recent index?
Length and consistency. Shiller is the only reliable monthly series stretching back over 150 years. Recent indexes (Russell 3000 etc.) only go back 30-40 years, which isn't enough to capture multiple recession regimes and stagflation periods.
How do you handle currency for non-US investors?
We model returns in real terms (inflation-adjusted) which abstracts away most of the currency issue. For UK investors, we use UK CPI as the inflation series so the math reflects UK purchasing power.
Can I export the raw simulation data?
Premium users can export per-cohort outputs as CSV. The simulator's UI shows distributions; the export gives you the underlying numbers if you want to do your own analysis.

Stress-test your own FIRE plan

FIRE Wealth OS runs your savings rate and expenses against every historical market starting point since 1871. Free to use, no card required.