Stock Returns vs Earnings Yield and Two Spreads

Model description: Continuing research from the previous post on earnings growth and bond spreads, consider the annual December data 1927-2024. We have Standard & Poor returns  Q(t) in four versions:

  • total returns (including dividends) vs price returns (excluding dividends);
  • nominal returns (not inflation-adjusted) vs real returns (inflation-adjusted).

We have the following three factors, known at end of year  t:

  • Earnings Yield: annual earnings / end-of-year price  E(t)/P(t)
  • Bond spread BAA-AAA (both are rates by Moody’s)  S_1(t)
  • Bond spread BAA-10YTR (Moody’s BAA rate minus 10-year Treasury rate)  S_2(t)

Also, we add annual realized volatility  V(t) which we add both additively to the linear regression, as a factor, and multiplicatively, to the innovations (residuals). We have the following model:

 Q(t) = a + b_0\frac{E(t-1)}{P(t-1)} + b_1S_1(t-1) + b_2S_2(t-1) + cV(t) + V(t)Z(t)

Summary of results: Instead of giving large tables, we simply provide a short summary and refer an interested reader to the Python code.

  • Regression residuals pass Shapiro-Wilk and Jarque-Bera normality test with flying colors. This matches quantile-quantile plots versus the Gaussian distribution.
  • The autocorrelation function plots for  Z(t) and for  |Z(t)| show that white noise conjecture is reasonable. Although, similarly to this post, we have strange large value at lag 4.
  • Applying L1 norm for the autocorrelation function and comparing with this simulation, we get values which lie between 0.4 and 0.5 for  Z(r) and between 0.6 and 0.7 for  |Z(t) , which are within the 99% interval. Thus we fail to reject the white noise hypothesis.
  • Regression factors have large p-values according to the Student T-test. Thus we fail to reject the hypothesis that  b_0 = 0 or  b_1 = 0 or  b_2 = 0. We did not test the joint hypothesis when all these three parameters are zero. But we reject  c = 0 because  p < 0.2\%.
  • Point estimates in all four cases are  b_0 > 0, b_1 > 0, b_2 > 0, c < 0.

A modification: Instead of earnings yield  E(t)/P(t) (which is always positive) take its logarithm: Results are almost the same as described above. Although for nominal total returns the L1 norm for  |Z(t)| is 0.706.

See the code and data at https://github.com/asarantsev/growth-spread

Published by


Response

  1. Earnings Yield, 3 Bond Spreads, Annual Returns – My Finance

    […] Stock Returns vs Earnings Yield and Two Spreads […]

    Like

Leave a reply to Earnings Yield, 3 Bond Spreads, Annual Returns – My Finance Cancel reply