Computed Historical Data
Technical documentation on how we derive values from Shiller's raw data.
Inflation
Shiller provides the Consumer Price Index (CPI) for each month in his dataset. We derive annual inflation using:
Example: 1990 Inflation
CPI January 1990: 127.40
CPI January 1991: 134.60
inflation = (134.60 / 127.40) - 1 = 1.0565 - 1 = 5.65%
Note: Inflation for 1871 (the first year) is set to 0% as there is no prior year for comparison.
Stock Returns
Stock returns are calculated from the S&P 500 price data (labeled "S&P Comp. (P)" in Shiller's spreadsheet) plus dividends.
Capital Appreciation
Dividend Yield
Total Return (Nominal)
Real Return (Inflation-Adjusted)
Example: 2019 Stock Return
S&P 500 Jan 2019: 2,607
S&P 500 Jan 2020: 3,278
Dividend yield: ~1.9%
Inflation: 2.3%
capitalAppreciation = (3278 / 2607) - 1 = 25.7%
totalReturn = 25.7% + 1.9% = 27.6%
realReturn = (1.276 / 1.023) - 1 = 24.7%
CAPE Ratio (P/E10)
The Cyclically Adjusted Price-to-Earnings ratio uses 10 years of inflation-adjusted earnings to smooth out business cycle effects.
CAPE-Adjusted Withdrawal Rate
We use CAPE to adjust the safe withdrawal rate dynamically:
Example: Current Market (CAPE ~33)
Base rate: 4%
Median CAPE: 16.5
Current CAPE: 33
Adjustment factor: 0.5
adjustedRate = 4% × (16.5 / 33)0.5
adjustedRate = 4% × (0.5)0.5
adjustedRate = 4% × 0.707 = 2.83%
Housing Returns
Housing returns are calculated from Shiller's Home Price Index, similar to stock returns.
Nominal Return
Real Return
Long-Term Housing Reality
Over 135 years (1890-2024), housing has averaged:
- • Nominal return: ~3.3%/year
- • Real return: ~0.4%/year (barely beats inflation)
Housing is often mistaken for a great investment, but the data shows it mainly keeps pace with inflation over the long term.
Bond Returns
Shiller's dataset includes 10-year Treasury bond rates. We use these rates directly to calculate bond returns in backtesting simulations.
Historical Bond Rates
Portfolio Return
For a mixed portfolio (e.g., 70% stocks, 30% bonds), we calculate the weighted return:
Example: 70/30 Portfolio in 2019
Stock return: 27.6%
Bond return: 8.1%
Allocation: 70% stocks, 30% bonds
portfolioReturn = (0.70 × 27.6%) + (0.30 × 8.1%)
portfolioReturn = 19.32% + 2.43% = 21.75%
Data Update Schedule
Shiller typically updates his dataset monthly. We update our embedded data annually, usually in Q2 of each year once the previous year's data is finalized. The current dataset includes data through 2024.