S&P 500 Historical Return Calculator

Written by:
PK

On this page is a S&P 500 Historical Return Calculator. It shows the S&P 500's annualized rolling returns across common holding periods, plus any custom period you type in. You can toggle dividend reinvestment, adjust for inflation, and switch the chart between a returns-over-time view and a percentile distribution view.

The S&P 500 Historical Return Calculator

Using the S&P 500 Historical Return Calculator

The default view shows the S&P 500's annualized total returns (dividends reinvested, nominal), and everything updates in real time as you change a setting.

Here's what each control does:

  • Reinvest Dividends – on by default. The tool computes total return by reinvesting each month's dividend into more index shares at that month's price (see the S&P 500 Return Calculator for details). Toggle off for pure price-only returns.

    As a short note, dividends matter: over a century-plus, dividends make up roughly half of total S&P 500 returns.
  • Adjust for Inflation – when on, the tool restates every price in today's dollars using the latest CPI as the base. Real (after-inflation) returns are a more accurate measure of your buying power.
  • Custom holding period – type any number of years between 1 and 100. The summary table picks up a highlighted "Custom" row, and the chart re-renders to show that period.
  • Returns Over Time / Return Distribution – I have two chart views:
    • Returns Over Time plots the rolling N-year annualized return month by month. You can drag the brush chart at the bottom to zoom into any window.
    • Return Distribution plots one line per canonical holding period showing the spread of all rolling returns recorded in the data set.
  • Average / Median overlays – in the returns-over-time view, click these to overlay horizontal reference lines for the period's mean and median return (red and amber respectively).
  • Show columns – under the summary table, click any column pill to add or hide that statistic. Defaults to Worst, Median, Best, Average, and Most Recent. Add 25th, 75th, or 95th percentile, Standard Deviation, or Windows count as needed.
  • Copy / CSV – export whatever chart or table is visible. In the returns-over-time view, you get the summary table with currently-shown columns. In the distribution view, you get the full percentile-by-period matrix.

Historical S&P 500 rolling returns table

Below is a static reference table of S&P 500 rolling returns across the canonical holding periods. Both price return and total return (dividends reinvested) versions are shown. The numbers come from monthly-average S&P 500 closes going back to 1871.

📅 Data last updated: May 29, 2026
Holding PeriodWorstBestMedianAverageMost RecentWindows
1 Year-65.61%124.15%7.30%6.50%27.26%1853
3 Year-43.97%33.61%5.92%5.28%21.27%1829
5 Year-22.27%27.61%5.02%5.05%12.15%1805
10 Year-9.14%16.62%4.43%4.89%13.60%1745
20 Year-3.46%14.18%4.10%4.73%9.12%1625
30 Year-1.87%10.40%5.44%4.87%8.38%1505
1 Year-62.28%139.81%11.25%11.01%28.53%1853
3 Year-40.20%39.67%9.94%9.76%22.81%1829
5 Year-17.31%33.66%9.78%9.54%13.69%1805
10 Year-4.02%21.17%8.74%9.40%15.46%1745
20 Year2.05%17.95%8.16%9.26%11.17%1625
30 Year3.64%14.32%9.93%9.48%10.30%1505
S&P 500 monthly data, Jan 1871 – May 2026.

Methodology and sources

S&P 500 monthly prices, dividends, and CPI come from Robert Shiller's compiled dataset, which extends back to 1871 by splicing the modern S&P 500 onto its pre-1957 predecessor indexes. Each monthly price is the average of that month's daily closes (the standard Shiller convention). Because we use monthly averages, the numbers here will differ slightly from quoted Jan-open-to-Dec-close figures in volatile years. For those, see DQYDJ's year-specific S&P 500 return posts.

  • Dividend reinvestment uses the shares-purchased method. At each month, the dividend per share is multiplied by the current share count to get the dividend payment, which buys additional shares at that month's price.
  • The total return level is then shares × price.
  • Inflation adjustment scales every price by the ratio of latest CPI to that month's CPI.
  • The annualized monthly volatility shown in the chart footer is the standard deviation of month-over-month returns multiplied by √12, the standard finance-textbook annualization.

Rolling returns

A rolling return is the annualized return over a fixed-length holding period, calculated for every possible starting point in the dataset.

For example, a 10-year rolling return doesn't just give you one number... it gives one number for the 10 years ending in every single month, going back as far as the data allows. For this dataset, it's hundreds of overlapping 10-year windows, each annualized so they are comparable even for other rolling return periods.

The annualized return formula:

r_{\text{annualized}} = \left(\frac{V_{\text{end}}}{V_{\text{start}}}\right)^{12/N} - 1

Where Vstart and Vend are the index levels (or the dividend-reinvested totals) at the start and end of the window, and N is the number of months in the window.

Time heals all returns...

Flip to the Return Distribution chart view and you'll see the foundational case for long-term equity investing in one chart: as the holding period extends, the spread of returns compresses dramatically.

The 1-year line stretches from a worst case of around −62% (the year ending June 1932) to a best case above +139% (the snapback ending July 1933). Pretty volatile, indeed... but the 30-year rolling return line barely moves. Its worst case has been positive in every single 30-year window on record (+3.6%, even when the window ended in the depths of 1932), and its best case maxes out around +14% (the dot-com-peak run ending July 2000).

Time in the market dramatically narrowed the range of outcomes. Past performance doesn't guarantee future returns, but it might be suggestive – my personal bet is on time in the market.

Related calculators

      

PK

PK started DQYDJ in 2009 to research and discuss finance and investing and help answer financial questions. He's expanded DQYDJ to build visualizations, calculators, and interactive tools.

PK lives in New Hampshire with his wife, kids, and dog.

Don't Quit Your Day Job...

DQYDJ may be compensated by our partners if you make purchases through links. See our disclosures page. As an Amazon Associate we earn from qualifying purchases.
Sign Up For Emails
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram