S&P 500 Average Annual Return: The Real Number (and Why It Misleads)

Three different “averages”, one volatility tax, and a century of years that almost never land anywhere near the mean.

+11.9%
Arithmetic mean, total return
≈ +9.8%
Compound (CAGR), dividends reinvested
8 / 99
Years within ±2% of the mean

The three numbers people mean by "average return"

Ask "what does the S&P 500 return per year?" and you can honestly answer with three different numbers. All three are computed from the 99 calendar years since 1928 in our dataset:

The ~2-point gap between the arithmetic mean and the CAGR is the volatility tax: losing 50% then gaining 50% averages 0% arithmetically but leaves you down 25%. The bigger the swings, the wider the gap.

"Average" is almost never the actual experience

Of 99 years, only 8 landed within ±2 percentage points of the +11.9% mean. The most common experiences are big up years and meaningful down years:

Recent years, for calibration

YearTotal return
2026+10.0%
2025+17.9%
2024+25.0%
2023+26.3%
2022−18.1%
2021+28.7%
2020+18.4%
2019+31.5%
2018−4.4%
2017+21.8%
2016+12.0%
2015+1.4%
2014+13.7%
2013+32.4%
2012+16.0%

Should you project the historical average forward?

Be careful. The historical record embeds falling interest rates (the 10-year Treasury went from ~15% in 1981 to ~0.5% in 2020), a doubling-plus of valuation multiples (Shiller CAPE now 40.7×, vs a long-run mean of 17.5×), and U.S. market dominance. Valuation-anchored models (CAPE, AIAE) currently imply below-average forward returns — see the live valuation read.

FAQ

What is the average annual return of the S&P 500?

About +11.9% per year on an arithmetic basis (total return, 1928–2026), or roughly +9.8% compounded (CAGR). Price-only, the index compounded at +6.3%.

How often does the S&P 500 have a down year?

26 of the last 99 calendar years were negative — roughly one year in four.

What was the S&P 500's best and worst year?

Best: 1954 at +52.6%. Worst: 1931 at −43.8% (total-return basis).

All numbers computed from /api/sp500/annual-tr.json and /api/sp500/century.json, refreshed each trading day.

Further reading