Markets: A Rigorous Course

13.3 Return predictability and out-of-sample R2R^2

Core about 30 min

Motivation

Hundreds of papers report variables that "predict" the equity premium in sample. The relevant question for a trader is whether a forecaster standing at each date, using only data up to that date, would have beaten the historical average. The answer is mostly no, and the gains where they exist are small but not worthless.

Setup#

The predictive regression with a persistent predictor xtx_t (dividend yield, earnings yield, term spread) is

rt+1=α+βxt+ut+1,xt+1=θ+ρxt+vt+1,(13.7)r_{t+1} = \alpha + \beta x_t + u_{t+1}, \qquad x_{t+1} = \theta + \rho x_t + v_{t+1}, \tag{13.7}

with (ut,vt)(u_t, v_t) iid, mean zero, variances σu2,σv2\sigma_u^2, \sigma_v^2 and covariance σuv\sigma_{uv}. A recursive out-of-sample forecast at tt fits (13.7) on data 1..t1..t and predicts r^t+1=α^t+β^txt\hat r_{t+1} = \hat\alpha_t + \hat\beta_t x_t. The benchmark is the historical mean rˉt=t−1∑s≤trs\bar r_t = t^{-1}\sum_{s\le t} r_s.

Definitionout-of-sample R2R^2; Campbell and Thompson 2008

Over an evaluation period t=t0,…,T−1t = t_0, \dots, T-1,

ROS2=1−∑t(rt+1−r^t+1)2∑t(rt+1−rˉt)2.(13.8)R^2_{OS} = 1 - \frac{\sum_{t} (r_{t+1} - \hat r_{t+1})^2}{\sum_t (r_{t+1} - \bar r_t)^2}. \tag{13.8}

ROS2>0R^2_{OS} > 0 means the model beat the historical mean in squared error. Unlike in-sample R2R^2, it can be (and usually is) negative, because estimation error in β^t\hat\beta_t adds variance to the forecast.

Evidence

  • Welch and Goyal (2008, RFS 21(4):1455–1508) examined the predictors proposed in the literature and concluded that none would have helped a real-world investor outpredict the then-prevailing historical mean out of sample; the models were also unstable.
  • Campbell and Thompson (2008, RFS 21(4):1509–1531) replied that many predictors do beat the historical mean once weak restrictions are imposed (the slope must have the theoretically expected sign, and the forecast equity premium must be non-negative). They stated that the out-of-sample explanatory power is small but economically meaningful for mean-variance investors. Proposition 13.7 makes that claim precise.
  • Goyal, Welch and Zafirov (2024, RFS 37(11):3490–3557) revisited 29 later variables plus the original 17. They report that more than a third of the new variables no longer show in-sample significance, half of those that do perform poorly out of sample, and a small number perform reasonably in both.

How much is a small R2R^2 worth?#

Proposition 13.7value of predictability

Let the excess return be rt+1=μ+xt+εt+1r_{t+1} = \mu + x_t + \varepsilon_{t+1}, with xtx_t known at tt, Ext=0\mathbb E x_t = 0, Var⁡xt=σx2\operatorname{Var}x_t = \sigma_x^2, εt+1\varepsilon_{t+1} independent of xtx_t with variance σε2\sigma_\varepsilon^2. Define the predictive R2=σx2/(σx2+σε2)R^2 = \sigma_x^2/(\sigma_x^2+\sigma_\varepsilon^2) and the unconditional Sharpe ratio S=μ/σx2+σε2S = \mu/\sqrt{\sigma_x^2+\sigma_\varepsilon^2}. Then the expected squared conditional Sharpe ratio is

S∗2≡E ⁣[(μ+xt)2σε2]=S2+R21−R2.(13.9)S^{*2} \equiv \mathbb E\!\left[\frac{(\mu+x_t)^2}{\sigma_\varepsilon^2}\right] = \frac{S^2 + R^2}{1 - R^2}. \tag{13.9}

A mean-variance investor with risk aversion γ\gamma who uses the forecast (weight wt=(μ+xt)/(γσε2)w_t = (\mu+x_t)/(\gamma\sigma_\varepsilon^2)) earns expected excess return S∗2/γS^{*2}/\gamma. One who ignores it (constant weight μ/(γ(σx2+σε2))\mu/(\gamma(\sigma_x^2+\sigma_\varepsilon^2))) earns S2/γS^2/\gamma. The proportional increase is

S∗2−S2S2=R2S2⋅1+S21−R2≈R2S2.(13.10)\frac{S^{*2} - S^2}{S^2} = \frac{R^2}{S^2}\cdot\frac{1+S^2}{1-R^2} \approx \frac{R^2}{S^2}. \tag{13.10}

For a pure timer (μ=0\mu = 0, so S=0S=0), S∗2=R2/(1−R2)≈R2S^{*2} = R^2/(1-R^2) \approx R^2.

Proof

E[(μ+x)2]=μ2+σx2\mathbb E[(\mu+x)^2] = \mu^2 + \sigma_x^2. Write σ2=σx2+σε2\sigma^2 = \sigma_x^2+\sigma_\varepsilon^2, so σε2=σ2(1−R2)\sigma_\varepsilon^2 = \sigma^2(1-R^2) and σx2=σ2R2\sigma_x^2 = \sigma^2 R^2. Then μ2/σε2=S2/(1−R2)\mu^2/\sigma_\varepsilon^2 = S^2/(1-R^2) and σx2/σε2=R2/(1−R2)\sigma_x^2/\sigma_\varepsilon^2 = R^2/(1-R^2); add. For the investor: the conditional mean and variance of rt+1r_{t+1} are μ+xt\mu + x_t and σε2\sigma_\varepsilon^2, so the conditional mean-variance optimum is wtw_t above, and Et[wtrt+1]=(μ+xt)2/(γσε2)\mathbb E_t[w_t r_{t+1}] = (\mu+x_t)^2/(\gamma\sigma_\varepsilon^2). Take expectations. The constant-weight investor faces mean μ\mu and variance σ2\sigma^2, giving μ2/(γσ2)=S2/γ\mu^2/(\gamma\sigma^2) = S^2/\gamma. Then (S∗2−S2)/S2=[S2+R2−S2(1−R2)]/[S2(1−R2)]=R2(1+S2)/[S2(1−R2)](S^{*2}-S^2)/S^2 = [S^2 + R^2 - S^2(1-R^2)]/[S^2(1-R^2)] = R^2(1+S^2)/[S^2(1-R^2)].∎

S∗2S^{*2} is the right measure of what a mean-variance investor gains, but it is not the unconditional Sharpe ratio of the timing strategy's P&L, which also has to pay for the variance of the position size. The next result makes the difference concrete.

Proposition 13.8exact Sharpe of a linear pure timer

With μ=0\mu=0, xt∼N(0,σx2)x_t \sim N(0,\sigma_x^2) and εt+1\varepsilon_{t+1} independent with variance σε2\sigma_\varepsilon^2, the P&L πt+1=xtrt+1\pi_{t+1} = x_t r_{t+1} has

(Eπ)2Var⁡π=R21+R2.(13.11)\frac{(\mathbb E\pi)^2}{\operatorname{Var}\pi} = \frac{R^2}{1+R^2}. \tag{13.11}
Proof

Eπ=E[x2]+E[x]E[ε]=σx2\mathbb E\pi = \mathbb E[x^2] + \mathbb E[x]\mathbb E[\varepsilon] = \sigma_x^2. Eπ2=E[x2(x+ε)2]=Ex4+Ex2 Eε2=3σx4+σx2σε2\mathbb E\pi^2 = \mathbb E[x^2(x+\varepsilon)^2] = \mathbb E x^4 + \mathbb E x^2\,\mathbb E\varepsilon^2 = 3\sigma_x^4 + \sigma_x^2\sigma_\varepsilon^2, using the Gaussian fourth moment and independence. So Var⁡π=2σx4+σx2σε2\operatorname{Var}\pi = 2\sigma_x^4 + \sigma_x^2\sigma_\varepsilon^2 and the squared Sharpe ratio is σx2/(2σx2+σε2)\sigma_x^2/(2\sigma_x^2+\sigma_\varepsilon^2). Divide numerator and denominator by σx2+σε2\sigma_x^2+\sigma_\varepsilon^2.∎

A simulation with R2=0.05R^2 = 0.05 and 4×1064\times10^6 draws gives a squared Sharpe of 0.0477 against R2/(1+R2)=0.0476R^2/(1+R^2) = 0.0476 and R2/(1−R2)=0.0526R^2/(1-R^2) = 0.0526. Both expressions are R2+O(R4)R^2 + O(R^4), so for realistic R2R^2 the rule of thumb is simply per-period Sharpe ratio ≈ √R².

Worked example: what 0.5% buys#

Take a broad equity index with a monthly Sharpe ratio of S=0.15S = 0.15 (about 0.1512=0.520.15\sqrt{12} = 0.52 a year; an assumption for illustration, not a Nifty estimate). A predictor with monthly ROS2=0.5%R^2_{OS} = 0.5\% gives, by (13.9),

S∗2=0.0225+0.0050.995=0.027638,S∗=0.1662 monthly=0.576 annualised.S^{*2} = \frac{0.0225 + 0.005}{0.995} = 0.027638, \qquad S^* = 0.1662 \text{ monthly} = 0.576 \text{ annualised}.

By (13.10) the mean-variance investor's expected excess return rises by 0.005⋅1.0225/(0.0225⋅0.995)=22.8%0.005\cdot1.0225/(0.0225\cdot0.995) = 22.8\% (the approximation R2/S2R^2/S^2 gives 22.2%). With R2=1%R^2 = 1\% the rise is 45.9%. A pure timer with R2=0.5%R^2 = 0.5\% has S∗=0.005/0.995=0.0709S^* = \sqrt{0.005/0.995} = 0.0709 a month, or 0.246 a year, before costs.

Turn this around. A daily strategy with an annualised Sharpe ratio of 1.0 has a daily Sharpe of 1/252=0.0631/\sqrt{252} = 0.063, so it corresponds to a daily R2R^2 of about 0.0632=0.40%0.063^2 = 0.40\%. An R2R^2 indistinguishable from zero is what a good trading signal looks like. This is why OOS R2R^2 is the correct yardstick and why in-sample R2R^2 of 5% on daily data should make you suspicious, not excited.

Stambaugh bias#

Predictors like the dividend yield are highly persistent (ρ\rho near 1), and their innovations are strongly negatively correlated with return innovations: when prices jump, the yield falls. This creates a finite-sample bias in β^\hat\beta.

Proposition 13.9Stambaugh 1999

In (13.7), let γ=σuv/σv2\gamma = \sigma_{uv}/\sigma_v^2. Then, with OLS estimates from TT observations,

E[β^−β]=γ E[ρ^−ρ]≈−γ 1+3ρT.(13.12)\mathbb E[\hat\beta - \beta] = \gamma\,\mathbb E[\hat\rho - \rho] \approx -\gamma\,\frac{1+3\rho}{T}. \tag{13.12}
Proof

Project uu on vv: ut+1=γvt+1+et+1u_{t+1} = \gamma v_{t+1} + e_{t+1}, where ee is uncorrelated with vv at all leads and lags and therefore (under joint normality, independent of) the whole path of xx. Let x~t=xt−xˉ\tilde x_t = x_t - \bar x be demeaned regressors over the estimation sample. Both regressions in (13.7) use the same regressor, so

β^−β=∑x~tut+1∑x~t2=γ∑x~tvt+1∑x~t2+∑x~tet+1∑x~t2=γ(ρ^−ρ)+∑x~tet+1∑x~t2.\hat\beta - \beta = \frac{\sum \tilde x_t u_{t+1}}{\sum\tilde x_t^2} = \gamma\frac{\sum\tilde x_t v_{t+1}}{\sum\tilde x_t^2} + \frac{\sum\tilde x_t e_{t+1}}{\sum\tilde x_t^2} = \gamma(\hat\rho - \rho) + \frac{\sum\tilde x_t e_{t+1}}{\sum\tilde x_t^2}.

Conditional on the path of xx, the last term has mean zero. Take expectations. The approximation uses Kendall's (1954) result for the AR(1) with estimated intercept, E[ρ^−ρ]≈−(1+3ρ)/T\mathbb E[\hat\rho - \rho] \approx -(1+3\rho)/T.∎

Since σuv<0\sigma_{uv} < 0 for valuation ratios, γ<0\gamma < 0 and the bias in β^\hat\beta is positive: OLS overstates predictability exactly in the direction researchers hope for.

Worked examplesimulation

Monthly data, T=240T = 240 (20 years), ρ=0.95\rho = 0.95, σu=4.5%\sigma_u = 4.5\%, σv=0.3%\sigma_v = 0.3\%, corr⁡(u,v)=−0.9\operatorname{corr}(u,v) = -0.9. Then γ=−0.9×4.5/0.3=−13.5\gamma = -0.9\times 4.5/0.3 = -13.5. Formula (13.12) gives E[β^]−β≈13.5×3.85/240=0.217\mathbb E[\hat\beta] - \beta \approx 13.5\times 3.85/240 = 0.217. In 20,000 simulated samples with true β=0\beta = 0, the mean of β^\hat\beta was 0.234, and the mean of ρ^−ρ\hat\rho - \rho was −0.0174-0.0174 (Kendall's approximation: −0.0160-0.0160), so γ E[ρ^−ρ]=0.2344\gamma\,\mathbb E[\hat\rho-\rho] = 0.2344 matched the simulated bias exactly as the proof requires. The standard deviation of β^\hat\beta was 0.375, so the bias is 0.62 standard deviations: enough to turn a null predictor into a "marginally significant" one in a meaningful fraction of samples.

Practitioner notes

  • Long-horizon regressions (5-year returns on the dividend yield) use overlapping observations. With monthly sampling and a 60-month horizon, adjacent observations share 59 months; naive tt-statistics are hugely inflated. Use Newey–West or Hodrick standard errors, or better, non-overlapping data and OOS tests. 13.6 treats the same problem in machine learning.
  • Report ROS2R^2_{OS} with the forecast truncated at zero (Campbell–Thompson). It is a cheap prior that removes nonsensical negative equity-premium forecasts.
  • When you search many predictors, the best ROS2R^2_{OS} is itself selection-biased. Apply the multiple-testing machinery of M04 · 4.6.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.