因子投资方法论——投资组合排序法

The math in real, academic, finance is not actually that hard.Understanding how to use the equations, and see what they really mean about the world···that’s hard. -- John Cochrane

上一篇笔记中,因子的定义是十分抽象的。 因子收益率是什么呢? 它又如何计算呢? 这篇笔记主要讲因子模拟投资组合。

因子模拟投资组合

先讲讲如何理解因子的暴露:

粗糙的讲,可以理解为资产在某一个特征上的取值(看这里),比如某股票的市值为 100 亿,那就说它在市值因子上的暴露为 100 亿。


假设我们知道诸股票对诸因子的暴露矩阵 β\beta ,以及特质性风险的变异系数 CV(ϵt)CV(\epsilon_t) ,如何计算因子收益率?以下表为例:

股票 因子 A 暴露 因子 B 暴露 特质性风险
股票一 0.8 0.4 1%
股票二 1.3 0.6 2%
股票三 0.6 -0.4 5%
股票四 1.2 -0.4 1%

我们当然只能用我们现实中能观察到的数据(投资组合的收益率)来估计因子收益率,那我们就要考虑两件事:

  • 估计要正确
  • 估计要准确

这对应的就是书中的两个条件:

  • 条件一: 该投资组合仅在目标因子上有大于零的暴露、 在其他因子上的暴露为零;
  • 条件二: 在所有满足条件一的投资组合中, 该投资组合的特质性风险(idiosyncratic risk)最小。

用上面的表可以写出:

R1=0.8λA+0.4λB+ϵ1R2=1.3λA+0.6λB+ϵ2R3=0.6λA−0.4λB+ϵ3R4=1.2λA−0.4λB+ϵ4\begin{align*} R_1 = 0.8\lambda_A + 0.4\lambda_B+\epsilon_1\\ R_2 = 1.3\lambda_A + 0.6\lambda_B+\epsilon_2\\ R_3 = 0.6\lambda_A - 0.4\lambda_B+\epsilon_3\\ R_4 = 1.2\lambda_A - 0.4\lambda_B+\epsilon_4 \end{align*}

显然有

R1+R4=2λA+ϵ1+ϵ4R1+R3=1.4λA+ϵ1+ϵ3\begin{aligned} R_1+R_4 &= 2\lambda_A + \epsilon_1 + \epsilon_4\\ R_1 + R_3 &= 1.4\lambda_A + \epsilon_1 + \epsilon_3 \end{aligned}

也就是说上面的两个投资组合的收益率都可以用来估计 λA\lambda_A ,即因子A的收益率,他们都满足第一个条件。要满足第二个条件,当然就是要取随机扰动项方差较小的那个。

关键是要知道暴露啊,这咋办啊,有没有不用知道暴露就可以计算收益率的方法?有的兄弟。

排序法及其检验

注意,排序法只能用于风格因子。

主要就是下面三个步骤:

  1. 排序:确定股票池,按照某个排序变量(比如说BM,市净率的倒数)从大到小(或从小到大)排序
  2. 分组:分成若干组(惯例是取十分位数分成10组),做多最靠前的一组,做空最靠后的一组,构成投资组合(称为价差组合)。价差组合正是使用排序法构建的因子模拟投资组合, 而价差组合的收益率正是该因子的收益率。 需要指出的是, 在构建价差组合时, 通常要求多、 空两个组合的金额相同, 即整个因子模拟投资组合是资金中性的。 此外, 由于多、 空两个投资组合都包含多支股票, 因此需要为它们选择个股加权方式, 其中最常见的是市值加权和等权重。
  3. 定期更新

排出来后可以计算因子收益率,我们关注两点:

  • 比如说我们分成了 LL 组,这些组都能构成一个投资组合,这 LL 个投资组合的收益率是不是显著偏离零?
  • 这 LL 个投资组合的收益率有没有单调性?

前者可以通过 tt 检验来做,后者可以通过计算收益率和排序变量分组的秩相关系数来做。

上方法被称为单变量排序,一个合理的怀疑是:这样构建的投资组合有没有排除其他因子的影响?

举个假想的例子, 如果高BM的股票全都是大市值股票、 低BM的股票全都是小市值股票, 那么当使用BM这个单一变量排序的时候, 构建的价差组合在无形之中也同时做多了大市值股票、 做空了小市值股票。 因此, 这个价差组合虽然是围绕BM构建的, 但其收益率却受到BM和市值的共同影响, 因而难以客观评估BM的贡献。

为了排除其他变量的干扰,下面介绍多重排序法。

多重排序法

独立双重排序

把股票按排序变量 X1X_1 排序,分组得到 G1,...,GL1G_1,...,G_{L_1},按排序变量 X2X_2 排序,分组得到 G1′,...,GL2′G'_1,...,G'_{L_2}。

记 Pij=Gi∩Gj′P_{ij} = G_i\cap G'_j,令 Rij,tR_{ij,t} 代表投资组合 PijP_{ij} 在 tt 期的收益率,则围绕 X1X_1 构建的因子收益率 λX1,t\lambda_{X_1,t} 可以用

1L2∑j=1L2RL1j,t−1L2∑j=1L2R1j,t\frac{1}{L_2}\sum_{j=1}^{L_2}R_{L_1j,t} - \frac{1}{L_2}\sum_{j=1}^{L_2}R_{1j,t}

来估计。

这其实就是在说,单变量排序排名最高和最低的组必须包括在另一变量上有各种不同取值的元素。

这很自然就有一个问题:如果 X1X_1 和 X2X_2 给出的排名相同怎么办?

上述缺点虽然存在, 但通常不会带来太大的问题。 这是因为人们通常不会使用截面相关性高的变量做双重排序。

条件双重排序

把股票按排序变量 X1X_1 排序,分组得到 G1,...,GL1G_1,...,G_{L_1},在以上组内,再按排序变量 X2X_2 排序,分组得到 G11,G12,...,G1L2∣...∣GL11,...,GL1L2G_{11}, G_{12},...,G_{1L_2}\mid...\mid G_{L_11},...,G_{L_1L_2} 。

条件双重分组关心的是当第一个变量被控制之后, 第二个变量是否对解释收益率有增量信息。

可以按照上一节中的计算方法计算围绕 X2X_2 构建的因子收益率。也可以按照下面的方法计算:

取 X2X_2 排名最高的组 G1L2,...,GL1L2G_{1L_2},...,G_{L_1L_2} 和 X2X_2 排名最低的组 G11,...,GL11G_{11},...,G_{L_11} ,分别取并集得到 Ptop,PbottomP^{top}, P^{bottom} ,对这两个组中的股票分别按一定权重配置,构成多头和空头,然后计算收益率。

都按等权重的话,两个方法是等价的。

一些说明

使用双重排序的目的是排除两个变量之间的相互影响, 从而更准确地计算围绕每个变量构建的因子模拟投资组合的收益率。 在这方面, 条件双重排序比独立双重排序是更好的选择, 因为它是在控制了第一个分类变量后、 考察第二个分类变量和股票收益率的条件关系。

但是书上又说了:学界喜欢用独立双重排序。

总之就是,好像用哪个都差不多。


因子投资方法论——投资组合排序法
https://wtx17.github.io/2026/06/30/投资组合排序法/
作者
wtx
发布于
2026年6月30日
更新于
2026年11月6日
许可协议