glmos-code-explain

本期将继续BARRA模型的系列学习,这一期的内容主要是上一期所说的BARRA从单只股票到投资组合的迁移过程,以及BARRA的风险因子与普通的Alpha因子的区别等。

一、BARRA投资组合模型

1.1 从单只股票到组合

现在,我们想将BARRA从单股票分析迁移到投资组合的分析上,那就有必要先明确一下投资组合的数学构建方式。这里,我们假定有$N$只股票,每只股票在该组合中的权重构成一个向量,这个向量为$w$,形状为$N\times1$。那这个向量如何把前述的所有$N$只股票都算上呢?明明有些股票对于投资组合没有任何贡献?那么这里再设定,如果某只股票当前对于投资组合没有任何收益贡献,那么就把这个股票的权重设置为0。

前面已经说过,在时间t上,我们将每个股票对应的收益设置为$r_t$(之后简记为$r$),那如何根据$r$计算出组合的收益呢?这里定义投资组合的收益为

$$
r_p=w^Tr\tag{1.1}
$$

也就是说,当前投资组合的收益是所有股票收益的加权平均,权重为$w$。再根据原有的

$$
r=Bf+\varepsilon\tag{1.2}
$$

我们代入$(1.1)$可得:

$$
r_p=w^T(Bf+\varepsilon)=w^TBf+w^T\varepsilon\tag{1.3}
$$

观察此公式,我们发现因子收益向量$f$对应的权重(也就是因子暴露)从矩阵$B$变为了向量$w^TB$(为什么是向量?本质上因为一个投资组合可以算作一个资产,这个资产可以类比为一只股票;那很自然,一只股票在$(1.2)$中的因子暴露即一个向量,所以这里的投资组合的因子暴露的形式同样是一个向量。)所以,也是根据此思想,我们将$w^TB$这个向量记为$w_f$,则

$$
r_p=w_f^Tf+w^T\varepsilon\tag{1.4}
$$

这里面,比较关键的思想是,一个组合其实也可以看作一个资产,这个资产对因子的暴露也就是$w_f=B^Tw$。

那既然我们表示出了一个投资组合的收益,那么该投资组合的方差应该如何表示呢?

1.2 组合方差(波动)的表示

根据数理统计和线性代数的知识,我们由$(1.1)$可以知道:

$$
Var(r_p)=Var(w^Tr)=w^T\Sigma_rw\tag{1.5}
$$

那么首先,我们可以得到一个关键信息:投资组合的收益率方差,就等于所有股票收益率方差矩阵的二次型。

而通过上一节中的

$$
\Sigma_r=B\Sigma_fB^T+D\tag{1.6}
$$

我们可以得到

$$
Var(r_p)=w^T(B\Sigma_fB^T+D)w=w^TB\Sigma_fB^Tw+w^TDw\tag{1.7}
$$

再由前述定义的$w_f=B^Tw$,由$(1.7)$可知:

$$
Var(r_p)=w_f^T\Sigma_fw_f+w^TDw\tag{1.8}
$$

那么其中我们就能知道:

  • $w_f^T\Sigma_fw_f$:这部分是所有风格带给投资组合的风险;
  • $w^TDw$:这部分是个股带给投资组合的所有特质风险。

根据上面这些内容,我们就将组合整体的方差拆解为了风格因子风险和个股特质风险。接下来,我们说说为什么要做BARRA的这些风格因子,也就是风险因子,以及,风险因子和Alpha因子有哪些不同?

二、BARRA中的风险因子

2.1 Alpha v.s. BARRA

一般来讲,我们做出的超额收益因子,或者挖掘出的收益因子,本质上是想要预测超额收益,也就是哪只股票以后可能涨的更多。

但BARRA的风险因子的目标并不是这样的。BARRA的因子,大多数时候的定位是:

  • 解释 / 管理风险;
  • 看投资组合暴露在什么风格 / 行业上;
  • 看投资组合的风险有多大。

所以,在一个典型的量化流程里:

  • 挖掘出的因子负责告诉我们“买谁,卖谁”;
  • BARRA风险模型负责告诉我们“这样买之后,其实押注了哪些风格 / 行业风险,组合整体有多危险”。

那么,既然这个BARRA模型能帮助看清投资组合押注了哪些风格 / 行业,我们就可以知道这些押注是否符合我们的预期,从而管理这个投资组合,也就是接下来的:BARRA风险分析 & 因子中性化的相关方法。

2.2 BARRA风险分析

假设我们用自己挖掘出的Alpha因子做了一个投资组合,权重为w。把这个w给到BARRA模型后,模型会算出两件事:

  • 该投资组合在每个因子上的暴露$w_f=B^Tw$:例如规模因子上的暴露为0.8,就说明这个投资组合投资的方向偏向于小盘;再比如价值因子上的暴露为1.2,那就说明这个投资组合的方向偏向于价值型股票……
  • 风险拆解:因为投资组合的总风险等于因子的风险+特质的风险,所以我们可以观察到总的风格风险和每个风格分别的风险分别有多大。

那随之而来就有一个问题:每个风格因子的“风险贡献”具体应该怎么算出?

  • 首先,风格因子的总风险贡献为$w_f^T\Sigma_fw_f$

  • 因为这个值可以看作$\Sigma_fw_f$这个向量利用$w_f$这个权重进行加权求和得到的一个数,所以我们按照这种思想,拆解出每个因子对应的风险:

    $$
    第k个因子的风险=w_{f,k}\cdot g_k=w_{f,k}(\Sigma_fw_f)_k
    $$

  • 该公式的直觉解释如下:

    • $w_{f,k}$:组合在第k个因子上的暴露(也就是依赖于该风格的暴露);
    • $(\Sigma_fw_f)_k$:这个因子和“整体的因子组合”如何共同波动?
    • 这两者相乘即可得到因子对整体方差的贡献。

所以,如果能画出一个柱状图,我们可以视觉化呈现出所有风格对于该投资组合的贡献,按照百分比。这样就能看出该投资组合的风险偏好。(这里有一个问题:如果某投资组合在某风格上风险偏好大,而本身的暴露依赖于另一个风格,那有没有这种情况?)

2.3 因子中性组合

例如,我们挖掘了一个因子ROE,再按照前20%做多,后20%做空的方式构建了投资组合,中间60%的股票权重为空。如果我们不将其信息对其他因子进行隔离,那么风险分析的结果可能会是:

  • 多头:集中在小盘 / 高成长行业;
  • 空头:集中在大盘 / 传统行业。

为什么会有信息的交叉?本质上,是因为这些信息之间的逻辑内部有相关性。所以用BARRA,可以将这些无意中押上的风格 / 行业,用约束或者中性化中和掉。

那除了中性化的方法之外,还有什么方法能把风格 / 行业的影响进行抵消,让投资组合去掉无意间押中的风格影响变小?一个思想是:将该风格暴露大的股票的权重放低,或者将该风格暴露小的股票的权重放大。类比咖啡的甜度,如果一杯咖啡很甜,就多加苦的咖啡;而如果一杯咖啡很苦,那就多加糖。这样一中和,就可以让甜度适中,也就是投资组合被该风格的影响减弱。


以上就是BARRA模型的主体内容,后续我可能会补充一些文章中写的不是很清楚的点。