Shiller CAPE Is Currently Pricing in One Great Recession Every Decade

Note to Self: Spent the Berkeley Econ faculty lunch talking to Yuriy Gorodnichenko, Pierre-Olivier Gourinchas, St. Matthew the Greater, Dmitriy Sergeyev, and a couple of others about a very wide range of topics, ending with r-star (which Yuriy has to discuss Saturday at the Clausen Center Conference). I left the conversation desperate to figure out how Shiller’s stock-market CAPE index which currently suggests substantial stock market valuation even with a low fundamental safe real interest rate r-star is affected by the low earnings of the crisis years 2008-2011…

Yes, it makes a significant difference:

2017 11 15 Shiller Alternative CAPE

Replacing actual earnings from 2007 on with just flat real earnings until actual earnings catch up knocks the Alternative CAPE index down by 5, from higher than any time save during the High Dot-Com Bubble to lower than during the 1995-2007 part of the Great Moderation era. Taking Shiller CAPE at face value means that your idea of stock market fundamentals is currently pricing in one Great Recession every decade. If you do not believe that, you should not take Shiller CAPE at face value…

2017 11 15 Long Run Shiller Alternative CAPE

Data: http://delong.typepad.com/2017-11-15_shiller_cape_alternative.csv
Notebook: https://www.dropbox.com/s/9vhwu0d26wobpg8/2017-11-15%20Shiller%20Alternative%20CAPE.ipynb


# set up function to import data as a pandas time series dataframe object 

import pandas as pd
import os
from urllib.request import urlretrieve

URL = "http://delong.typepad.com/2017-11-15_shiller_cape_alternative.csv"
FILENAME = "2017-11-15_shiller_cape_alternative.csv"

def get_stocks_data(filename, url, force_download = False):
    if force_download or not os.path.exists(filename):
        urlretrieve(url, filename)
    data = pd.read_csv(filename, index_col = 0)
    return data

# import shiller data as a pandas time series dataframe object
# read it in from web if necessary

stocks_data = get_stocks_data(URL, FILENAME)
stocks_data.rename(columns = {'CAPE’':'Alternative CAPE'}, inplace = True)

stocks_data['Alternative CAPE'].plot()
stocks_data['CAPE'].plot()

plt.title("Stock Market Value as a Multiple of a 10-Year 

Lagged Moving Average of Earnings”,
size=20)
plt.ylabel(“Multiple of 10-Yr Average of Lagged Earnings”)
plt.xlabel(“Year”)
plt.xlim(1970, )
plt.legend()

stocks_data['Alternative CAPE'].plot()
stocks_data['CAPE'].plot()
plt.title("Stock Market Value as a Multiple of a 10-Year 

Lagged Moving Average of Earnings”,
size=20)
plt.ylabel(“Multiple of 10-Yr Average of Lagged Earnings”)
plt.xlabel(“Year”)
plt.legend()