Historical Stock Market Returns — Averages, Volatility, and Backtests

Educational only — not investment advice Past performance does not guarantee future results. Index prices come from Yahoo Finance (S&P 500, FTSE 100, MSCI World). Inflation and 10-year Treasury yields come from FRED. Price indexes do not include dividends. Figures ignore taxes, fees, and your personal situation.

What “average return” actually means

People search for the S&P 500 average return and land on a single number — often “about 10%.” That is a compounded average over many decades. It is useful for setting a baseline. It is a poor description of any one decade you will actually live through, especially around a crash.

A compound interest calculator that assumes a constant 8% every year draws a smooth curve. Real historical stock market returns are jagged. The tools below apply actual calendar-year returns so you can see the difference, compare indexes, and replay dollar-cost averaging versus a lump sum through crashes.

Loading historical returns…

Long-run compounded averages

Each cell is the compounded annual growth rate (CAGR) for the most recent complete window of that length. Inflation is the geometric average of CPI, not an asset return.

Horizon S&P 500 FTSE 100 MSCI World 10y bonds Inflation
Loading…

Why the average misleads: rolling 20-year S&P 500 returns

If every 20-year stretch paid the long-run average, this chart would be a flat line. It is not. 20-year rolling returns for the S&P 500 have ranged from painful (starting in the late 1920s or late 1990s) to exceptional (starting in the early 1980s). Diversification into bonds changes the path; it does not remove the range.

Market crashes (calendar year −20% or worse)

We flag a crash when that index lost 20% or more in a single calendar year. That is a simple screen, not a recession dating committee. Hover the backtest chart after you run it — crash years are in the underlying returns.

DCA vs lump sum through a crash

Same $12,000, two ways: all in on the first month of the crash year, or $1,000 a month for 12 months. Both are then held to the start of the year five years later. In falling markets, spreading purchases often buys more shares — it is not a guarantee, and in steadily rising markets the lump sum usually wins.

Lump sum

Dollar-cost averaging

Backtesting engine

Enter the same kind of inputs the calculator uses. We add a year’s contributions, then apply that year’s actual return — matching the calculator’s year-by-year loop, not a live price feed. The smooth line is a constant 8% path on the same cash flows.

Index comparison

Same dollars and years as the backtest above. Overlaying the S&P 500, FTSE 100, MSCI World, and 10-year Treasuries is the simplest way to see why diversification and geography change outcomes. MSCI World (URTH) only starts in the 2010s — if your start year is earlier, that line will be missing.

Index Ending value CAGR Max drawdown
Run the backtest to fill this table.

How to read historical stock market returns

Long-tail questions like “what is a realistic 20-year stock return?” or “how often does the S&P 500 lose money in a calendar year?” are better answered with a distribution than with a slogan. The rolling chart above is that distribution for 20-year windows. The backtest is what a lump sum plus monthly contributions would have done on one path.

Three cautions worth repeating:

If you want a constant-rate projection for planning, use the investment calculator. Then come back here and replay the same deposits through history so the volatility is not a surprise.

Sources

Index prices: Yahoo Finance (^GSPC, ^FTSE, URTH). Inflation: FRED CPIAUCSL. 10-year yields: FRED DGS10. Crash comparisons use monthly closes from the same Yahoo series. We rebuild historical_data.json with fetch_historical_data.py.

Compare a smooth 8% plan to history

Model your deposits on the calculator, then replay them here with real year-by-year returns.

Open the calculator