因子溢价与因子暴露的预测

1. 前言

在上一章,我们基于“股票的平均收益率等于因子溢价与因子暴露的乘积”这一基本思想,建立了因子模型。

然而,尽管模型是基于历史数据建立的,但我们希望将其用于预测未来股票的收益率,即股票平均收益率的预测值等于因子溢价的预测值乘以因子暴露的预测值。

更准确的说,在 T+1T+1 期,股票 ii 的收益率 ri,T+1r_{i, T+1} 可以表示为:

ri,T+1=βi,T+1λT+1+ϵi,T+1r_{i, T+1} = \boldsymbol{\beta}'_{i, T+1} \mathbf{\lambda}_{T+1} + \epsilon_{i, T+1}

其中:

  • βi,T+1\boldsymbol{\beta}_{i, T+1}:股票 iiT+1T+1(K+1)(K+1) 维因子暴露向量。
  • λT+1\mathbf{\lambda}_{T+1}:股票 iiT+1T+1(K+1)(K+1) 维因子溢价向量。
  • ϵi,T+1\epsilon_{i, T+1}:股票ii的收益率偏离其均值的离差。

我们在本章要做的,就是预测出未来的因子溢价 λ^T+1\hat{\mathbf{\lambda}}_{T+1} 和未来的因子暴露 β^i,T+1\hat{\boldsymbol{\beta}}_{i, T+1} ,从而得到预期股票收益率。

2. 何时预测是必要的

为了预测未来股票的收益率,我们需要用到因子暴露和因子溢价的未来值。在一些情况下,我们需要去预测这些未来值,但在另一些一些情况,我们能够直接跳过预测环节。

在本节,我们先对不同类型的因子,讨论预测的必要性。

2.1 基本面因子

对于基本面因子,我们无需对于因子暴露和因子溢价进行预测。以下是相关说明:

2.1.1 因子暴露

原因在于,基本面因子的解释变量——因子暴露在期初即可获得,而从逻辑来讲,是我们在 TT 时刻持有了这些具备某些暴露的股票(比如小市值、低估值),才导致我们在 T+1T+1 期获得了相应的收益。

这也就是说,股票在 T+1T+1 期的表现,很大程度上取决于它在 TT 期表现出的“特质”。例如,历史证明“低估值”的股票在未来一期往往有超额收益。

因此,我们在 T+1T+1 期预测所需的因子暴露,实际上就是 TT 时刻的因子暴露,并不需要预测。

2.1.2 因子溢价

回顾因子模型中对于基本面因子的因子溢价的说明:我们一般认为因子溢价在长期来看(5年之内)是相对稳定的

因此,我们可以假设通过前 TT 期所估计估计的因子溢价 λ^\hat{\lambda}T+1T+1 期内保持不变。更进一步,我们可以假设参数在 T+1T+1 期也保持不变。

2.2 经济因子

对于经济因子,我们需要对其因子溢价进行预测。以下是相关说明:

2.2.1 因子溢价

对于经济因子,其解释变量是因子溢价(通常是宏观经济变量,如 GDP 增长、通胀率),这些变量在 T+1T+1 期到来之前是未知的,因此必须对因子溢价进行预测。

2.2.2 因子暴露

经济因子的因子暴露是通过时间序列回归得到的。如果假设因子暴露在短期内保持稳定,则类似基本面因子因子溢价的处理,可以使用历史估算值。

2.3 结论

通过以上讨论,我们看到真正需要预测的变量只有一个:经济因子的因子溢价。我们之后讨论的几种预测方法将全部针对该变量。

3. 预测的主要方法

我们在现实中主要由三种预测方法(存在先后顺序):外部预测、简单模型预测和计量经济学预测(VAR模型)。下面依次来进行介绍。

3.1 利用外部预测

当我们可以从证券分析师、经济学家或是一些研究机构获得可靠的外部预测结果时,我们应该使用这些外部预测,而不必自行预测。

假设我们分别从 JJ 个预测者中获得了因子溢价 λT+1{\mathbf{\lambda}}_{T+1} 的预测值,我们分别将这些预测值记为 λT+1(1),...,λT+1(J){\lambda}^{(1)}_{T+1}, ..., {\lambda}^{(J)}_{T+1} 。对于这些预测值,如果我们认为每个预测者的可靠性相同,最简单的最优预测就是所有预测值的算术平均,因为这能有效抵消个别机构的极端预测误差。

公式为:

E^(λT+1)=1Jj=1JλT+1(j)\hat{E}(\lambda_{T+1}) = \frac{1}{J}\sum_{j=1}^J \lambda_{T+1}^{(j)}

进一步,我们可以通过计算预测结果的方差,考察预测期望结果的“分歧度”:

V^(λT+1)=1Jj=1JλT+1(j)λT+1(j)E^(λT+1)E^(λT+1)\hat{V}(\lambda_{T+1}) = \frac{1}{J}\sum_{j=1}^J \lambda_{T+1}^{(j)}\lambda_{T+1}^{(j)'} - \hat{E}(\lambda_{T+1})\hat{E}(\lambda_{T+1})'

如果预测值的方差越大,那么可信度就越低,反之可信度则越高。我们一般通过计算以上方差的倒数来衡量对预测值的信心。

最后,如果我们假设预测的因子溢价服从正态分布,那么通过以上均值和方差就能够完全确定因子溢价的分布,预测也就到此结束了。

3.2 基于领先指标的预测

在多数时候,预测因子溢价对于我们来说都是一项十分困难的工作,并不建议在这里投入过多的时间。

但是在有些情况下,我们目标的经济因子具有某些领先指标,此时,我们用相当简单的模型得到十分有效的预测结果。这里举一个预测市场因子的因子溢价例子:

rt+1S&P500=a+bLIt+ϵtr_{t+1}^{S\&P500} = a + b LI_t + \epsilon_t

其中,rt+1S&P500r_{t+1}^{S\&P500} 为标普500指数下个月的收益率(市场因子), LItLI_t 为经济领先指标的值,包括每周平均工作时间、新消费品订单、首次申请失业救济人数、GDP变化等。

我们很容易通过简单的线性回归(b显著不为0),找到能有效预测市场因子的领先指标,进而使用以上领先指标以及对应的参数估计,预测 T+1T+1 期市场因子的因子溢价。

3.3 基于计量经济学的预测

当以上两种方法不可行时,我们可以考虑使用一些基本的计量经济学预测方法,这里我们选择的是一种最为基本的方法——向量自回归(Vector Autoregression, VAR)

值得一提的是,虽然现在已经有很多复杂的计量经济学预测方法,但这些方法往往会伴随着许多的额外假设条件,而这些条件对特定因子模型可能适用也可能不适用。

因此,除非有足够强有力的理由证明复杂的计量经济学方法更优,否则我们建议坚持使用方简单的预测方法(Simple is powerful)。

3.3.1 VAR的基本思想

VAR 的基本思想是:经济因子未来的因子溢价等于过去因子溢价的线性组合

因为宏观变量之间往往是相关的,例如通胀会导致利率上涨,利率又上涨会使得股票收益下降,所以我们认为这些宏观变量之间不是独立的,而是一个系统(system),而这正是 VAR 的适用场景。

3.3.2 VAR的公式

假设模型有 KK 个因子,滞后阶数为 LL ,则 VAR 的基本公式为:

λt=A0+A1λt1++ALλtL+ωt\lambda_t = A_0 + A_1 \lambda_{t-1} + \dots + A_L \lambda_{t-L} + \omega_t

其中:

  • λt\lambda_{t}K×1K \times 1 维的因子溢价向量;
  • AiA_{i}K×KK × K 维系数矩阵;
  • ωt\omega_tK×1K \times 1 维的扰动项;
  • LL:滞后阶数,表示模型中使用的因子溢价历史值的个数,模型一般记为VAR(L) 。

需要注意的是,VAR 模型的一个重要问题在于参数爆炸(维数灾难),即随着滞后阶数的上升,所需的参数会指数级上升。

与此同时,如因子模型中所说,我们使用月度数据时,一般只有几十个有效数据,因此,如果滞后阶数较高,极其容易产生过拟合(Overfitting)问题。

所以,在现实中,VAR 模型的滞后阶数一般只取1,即只看上一个周期的状态。

将以上基本公式应用于 T+1T+1 期的预测,因为所有 TT 期的数值都是已知常数,未来的随机冲击 ωT+1\omega_{T+1} 期望为 0,所以公式为:

E(λT+1)=A0+A1λTE(\lambda_{T+1}) = A_0 + A_1 \lambda_T

对上式取方差,得到 T+1T+1 期因子溢价方差的估计:

V^(λT+1)=V^(ωT+1)=Σ^ω\hat{V}(\lambda_{T+1}) = \hat{V}(\omega_{T+1}) = \hat{\Sigma}_\omega

由于除扰动项之外的参数均为常量,因此 VAR 模型的方差估计为扰动项的协方差矩阵。

3.3.2.1 示例

对于 VAR 公式,我们使用以下简单示例进行说明:

我们假设只有市场因子和规模因子 2 个因子( K=2K = 2 ),且只看过去 1 期( L=1L = 1 ),即 VAR(1) 模型,则 VAR 公式表示为:

[λ1,tλ2,t]=[a10a20]+[a11a12a21a22][λ1,t1λ2,t1]+[ω1,tω2,t]\begin{bmatrix} \lambda_{1,t} \\ \lambda_{2,t} \end{bmatrix} = \begin{bmatrix} a_{10} \\ a_{20} \end{bmatrix} + \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} \lambda_{1,t-1} \\ \lambda_{2,t-1} \end{bmatrix} + \begin{bmatrix} \omega_{1,t} \\ \omega_{2,t} \end{bmatrix}

将矩阵乘法展开为方程,得到:

  • 市场因子的预测值:λ1,t=a10+a11λ1,t1+a12λ2,t1+ω1,t\lambda_{1,t} = a_{10} + a_{11}\lambda_{1,t-1} + a_{12}\lambda_{2,t-1} + \omega_{1,t}
  • 规模因子的预测值:λ2,t=a20+a21λ1,t1+a22λ2,t1+ω2,t\lambda_{2,t} = a_{20} + a_{21} \lambda_{1,t-1} + a_{22} \lambda_{2,t-1} + \omega_{2,t}

其中,主对角线( a11,a22a_{11}, a_{22} )衡量因子自身的动量或均值回归。例如 a11a_{11} 表示上个月的市场收益对本月市场收益的影响。非对角线(a12,a21a_{12}, a_{21})衡量跨界传染效应。例如 a21a_{21} 表示上个月的规模因子表现,将如何影响本月的市场因子表现。这就是我们所说的“经济因子未来的因子溢价等于过去因子溢价的线性组合”的含义。

3.3.3 参数的不确定性

在前面的讨论中,我们假设估算出来的参数(λ^0,λ^1\hat{\lambda}_0, \hat{\lambda}_1 等)就是正确的。但实际上,这些参数是从有限的历史数据中估算出来的,会存在估计的误差。

因此,当我们在预测下一期的因子溢价时,预测误差(总风险)实际上由两部分组成:

  • 模型内生风险(随机扰动项 ωT+1\omega_{T+1} ): 即便模型参数完全正确,现实世界总会有随机波动,这就是我们之前讨论的 Σ^ω\hat{\Sigma}_\omega
  • 参数不确定性风险: 我们估算的系数 λ^\hat{\lambda} 可能偏离了真实值。

如果我们只用 Σ^ω\hat{\Sigma}_\omega 来衡量风险,会低估真实的投资风险。

3.3.3.1 方法一:修正方差

为了将参数不确定性风险纳入考虑,我们可以使用以下修正公式:

V^(λT+1)=(1+d)Σ^ω\hat{V}(\lambda_{T+1}) = (1 + d) \hat{\Sigma}_\omega

其中,dd 为正值常数,它是通过历史溢价因子数据 λ^T,...,λ^TL\hat{\lambda}_T,..., \hat{\lambda}_{T-L} 计算得到,代表了参数估计的“噪声”水平

3.3.3.2 方法二:自助抽样法

当模型变得非常复杂(参数非常多,或者 dd 很难直接计算)时,方法一会失效,这时,我们建议使用自助抽样法(Bootstrapping)。具体步骤为:

  1. 构造伪样本: 从原始的 TT 个观测值中,通过特定的规则(如剔除一个观测值,或有放回地随机抽取)创建多个规模为 TT 的新样本。
  2. 重复估计: 对每一个新样本都运行一次 VAR 模型,得到一组不同的参数估计值。
  3. 汇总预测: 得到一组对未来的预测值。
  4. 计算分布: 这组预测值的标准差,就自动包含了“随机波动风险”和“参数估计风险”。

4. 预测股票收益率

回到开头的收益率公式:

ri,T+1=βi,T+1λT+1+ϵi,T+1r_{i, T+1} = \boldsymbol{\beta}'_{i, T+1} \mathbf{\lambda}_{T+1} + \epsilon_{i, T+1}

对公式两边取期望:

E^(ri,T+1)=βi,T+1E^(λT+1)\hat{E}(r_{i, T+1}) = \boldsymbol{\beta}'_{i, T+1} \hat{E}(\mathbf{\lambda}_{T+1})

这里的 E^(λT+1)\hat{E}(\mathbf{\lambda}_{T+1}) 就是我们之前通过外部预测、领先指标或 VAR 模型得到的因子溢价期望值。

方差为:

V^(ri,T+1)=βi,T+1V^(λT+1)βi,T+1系统性风险+V^(ϵi,T+1)特质性风险\hat{V}(r_{i, T+1}) = \underbrace{\boldsymbol{\beta}'_{i, T+1} \hat{V}(\mathbf{\lambda}_{T+1}) \boldsymbol{\beta}_{i, T+1}}_{\text{系统性风险}} + \underbrace{\hat{V}(\epsilon_{i, T+1})}_{\text{特质性风险}}

注意这里的 V^(λT+1)\hat{V}(\mathbf{\lambda}_{T+1}) 需要使用我们上一节讨论的考虑了参数不确定性修正后的协方差矩阵