Correlation between Stock-Market-Returns, GDP Growth and PE Ratios

In an earlier article, we discussed the primary factors that drive long-term stock market returns. Namely:

  1. Earnings yield
  2. Real GDP growth
  3. Inflation

We also discussed ignoring fluctuations in the PE Ratio, because:

  1. PE ratios tend to be cyclic, and do not increase or decrease in perpetuity
    1. Over the long term, fluctuations in the PE ratio will cancel each other out
    2. Any remaining effects caused by PE ratio changes, will not play as major a role, compared to the above 3 factors
  2. Fluctuations in the PE ratio vary wildly, and can only be measured in hindsight
    1. It is nearly impossible to predict PE ratio fluctuations in the future
    2. We want our Projected Returns model to be useful for forward-looking predictions, which means it cannot rely on future PE ratio changes

It is tempting then to claim that actual stock market returns, over the long term, will simply be the sum of the above 3 factors. But how well does this prediction match up against actual stock market returns? And how stable is the relationship between predicted and actual stock market returns?


I have run the following simulations in order to investigate this further:

  1. Pick a StartYear and EndYear, that are sufficiently far enough apart
  2. Given a $1 portfolio, project what the portfolio value would be at EndYear
    1. For a given year X, project the portfolio to grow by the earnings yield
      1. The earnings yield is calculated as the average of the earnings yield at the start of year X, and the start of year X+1
      2. Earnings yield data is pulled from multpl.com
    2. For a given year X, project the portfolio to also grow by the nominal GDP growth rate. This would include both real GDP growth, and inflation
      1. GDP growth rate is calculated as the GDP in year X+1, divided by the GDP in year X
      2. GDP data is pulled from thebalance.com
    3. Repeat the above for all X in between StartYear and EndYear, in order to project the final portfolio value
  3. Calculate what the actual portfolio value would be at EndYear (assuming dividend reinvestment), using actual market data
    1. This data is pulled from dqydj.com
  4. Compute the yearly-returns, given the final portfolio value, and the number of years
    1. Eg: if the portfolio grew from $1 to $2 after 10 years, that gives us a yearly return of 7.2%, because 1 * 1.072^10 = 2
  5. Calculate the ratio between ActualYearlyReturns and ProjectedYearlyReturns
  6. Repeat above steps for many different combinations of StartYear and EndYear, in order to identify and avoid period-specific anomalies

All source code for the above simulations are completely open-sourced and can be found here.


Here are the results from the above:

Screen Shot 2018-10-27 at 11.47.50 AM

Legend:

  • The right column indicates the StartYear
  • The top row denotes the EndYear
  • The number in the table, indicates the ratio between the projected and actual annualized returns, for that combination of StartYear and EndYear

For example, if you look at the highlighted cell, it indicates that from 1970-2013, the actual returns are 76% of the projected returns. Ie, the ratio of actual/projected = 0.76.


Looking more broadly at the data yields the following observations:

  1. The ratios vary from a low of 0.63 to a high of 1.02
  2. Most of the ratios appear to lie within the 0.7 – 0.9 range
  3. Even over a 40+ year period, picking a bad EndYear will tank your actual returns
    1. For example, actual returns are surprisingly low in 2009, which is when the markets crashed
    2. Most likely this is because our model ignores fluctuations in PE ratios, which means that it will not be as successful for years that have a unusually high or low PE ratio

Here are some examples of how we could use the above correlation, in order to project future stock market returns.

The S&P 500 features the following characteristics:

Based on the above, and using a 0.75 correlation factor, we would expect real annual returns of:

(4.6 + 2) * 0.75 ~= 4.9%

As another example, let us consider the emerging markets index. It features:

Based on the above, and using a 0.75 correlation factor, we would expect real annual returns of:

(6.9 + 5) * 0.75 ~= 8.9%

The above calculations are flawed however, in that many companies in both indexes do business in multiple countries, both developed and emerging. Hence, they should be assuming a GDP growth rate that is a mix of both. In addition, the simulation had derived a correlation factor by factoring in inflation as well, whereas the above calculations are neglecting inflation. A more precise analysis would take both into account.


One unresolved question is the theoretical basis of the correlation factor that we calculated above. How can we explain the ~20% gap between actual and projected returns, even across a wide variety of time periods?

Perhaps a significant chunk of the earnings are being squandered through bad corporate governance and management. For example: investments in executives’ pet projects – investments that no unbiased investor or Venture Capitalist would put money into. Or perhaps corporate earnings aren’t well correlated with GDP growth, due to rising costs and shrinking profit margins. Or perhaps the projections are too optimistic because there is some other factor that isn’t being taken into account. I would love to hear others’ thoughts on what might be causing this discrepancy.


Related Links:
Source code can be found here. All pull requests are welcome.
Where do stock market returns come from

4 thoughts on “Correlation between Stock-Market-Returns, GDP Growth and PE Ratios

Thoughts?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s