多因子模型
第 3 章逐个认识了因子,本章把它们组装成"机器"——多因子模型。前半章逐一拆解学术界近 30 年提出的七个主流模型:每个模型的回归方程长什么样、因子怎么构造、提出者的动机是什么、比前代强在哪。后半章回到 A 股:先用 Fama–MacBeth 回归回答"哪些因子在 A 股真正被定价",再用 α 检验和 GRS 检验演示如何比较两个模型,最后讨论一个模型到底该装几个因子。
4.1七大主流多因子模型
先交代一个背景:本节介绍的所有模型都是针对美国股票市场提出的。原因有二——美股是全球最重要的股票市场;现代金融学又诞生于美国的顶尖学府,学者拿身边的数据做研究顺理成章。好在这些模型经过多年检验,其中不少已被成功移植到其他国家的市场(4.2、4.3 节就是在 A 股上的应用)。
七个模型不是孤立出现的,它们构成两条清晰的"血统":风险/理性定价血统(Fama–French 系与 q-factor 系——分歧在于风险从哪推导出来)和行为金融血统(把 α 的来源归结为错误定价)。下表是这张族谱的时间线:
| 年份 | 模型 | 因子 | 承接与回应 |
|---|---|---|---|
| 1993 | Fama–French 三因子 | MKT、SMB、HML | 收编 Basu(1977)盈利市值比、Banz(1981)小市值等异象,取代 CAPM 成为新范式 |
| 1997 | Carhart 四因子 | FF3 + MOM | 收编 Jegadeesh 和 Titman(1993)的截面动量异象 |
| 2013 | Novy-Marx 四因子 | MKT、HML、UMD、PMU | 用毛利率把"盈利"维度带进主流,动摇 FF3 的完备性 |
| 2015 | Fama–French 五因子 | FF3 + RMW + CMA | 从股利贴现模型出发,回应盈利与投资的证据;FF 家族的正统升级 |
| 2015 | Hou–Xue–Zhang q-factor | MKT、ME、I/A、ROE | 独立血统:从公司投资的 q 理论推出定价关系,与 FF5 正面开战 |
| 2017 | Stambaugh–Yuan 四因子 | MKT、SMB、MGMT、PERF | 行为血统:用 11 个异象合成两个"错误定价因子" |
| 2020 | Daniel–Hirshleifer–Sun 三因子 | MKT、FIN、PEAD | 行为血统:按时间尺度把错误定价切成长(过度自信)短(反应不足)两个因子 |
要强调的是,新模型的提出虽然都以"取代旧模型"为目标,但学术界至今没有就孰优孰劣达成一致——FF3 依然是实证研究中被使用最广的基准模型,而 q-factor、SY、DHS 这些从完全不同角度出发的模型,则极大拓宽了人们理解资产定价的视野。下面逐一拆解。
Fama–French 三因子模型(1993)
20 世纪 70 年代之后,CAPM 的麻烦不断:Basu(1977)发现盈利市值比(earnings-to-price,EP)高的股票收益系统性偏高;Banz(1981)发现小市值股票收益系统性偏高;随后账面市值比(book-to-market,BM)、债务市值比(debt-to-market,DM)效应也相继被发现。单个异象只是"打脸",Fama 和 French(1992)则把这些异象整合到一起,证明它们共同指向 CAPM 的系统性失效。但要摒弃一个旧模型,唯有拿出一个更好的新模型——这就是 Fama and French(1993)三因子模型的由来:在市场因子之外加入规模(Small-Minus-Big,SMB)与价值(High-Minus-Low,HML)两个因子。
把所有股票按市值切两刀、按另一个指标切三刀,得到 6 个格子;用"若干格子的平均减另若干格子的平均"拼出一个多空组合,它的收益率就是因子收益率。
Fama and French(1993)的具体做法:以纽约证券交易所(NYSE)上市公司市值的中位数为界,把 NYSE、NASDAQ、AMEX 三大交易所的全部股票分为小市值(S)、大市值(B)两组;同时以 NYSE 公司 BM 的 30% 和 70% 分位数为界,把全部股票分为高(H)、中(M)、低(L)三组。两个维度独立划分、取交集,得到 S/H、S/M、S/L、B/H、B/M、B/L 六个组合,组合内股票按市值加权。之所以只用 NYSE 的分位数做断点,是为了避免海量小盘股(多在 NASDAQ)把断点拖偏。每年六月末用上一财年最新财务数据重新排序、再平衡。这套"NYSE 断点 + 独立划分 + 组内市值加权"的做法成为后来几乎所有模型竞相模仿的模板。
FF3 提出后逐步取代 CAPM 成为资产定价的第一范式,也接受了最密集的检验:Davis 等(2000)把数据回溯到 1927 年,Fama 和 French(1998)在其他国家市场上复现,Fama 和 French(2008)用它审查 CAPM 解释不了的各种异象。至于 SMB 和 HML 为什么赚钱,Fama 和 French(1996)猜想它们与上市公司的财务困境风险(distress risk)有关,并把 FF3 定位为 Merton(1973)跨期资本资产定价模型(Intertemporal CAPM,ICAPM)的多因子版本——SMB、HML 是某些"状态变量"的代理。但这两个因子究竟代理了什么状态变量,至今没有定论。
Carhart 四因子模型(1997)
FF3 开创性十足,"适用性"却有限——很多异象它解释不掉,其中最扎眼的是截面动量(cross-sectional momentum):Jegadeesh 和 Titman(1993)发现,用 $t-12$ 到 $t-1$ 月这 11 个月的累计收益率给股票排序,做多"赢家"、做空"输家",能获得显著超额收益。刻意跳过最近一个月,是因为市场存在短期反转(Jegadeesh 1990)——上个月涨得猛的股票下个月往往回吐,不剔除会污染中期动量信号。
Carhart(1997)在研究共同基金业绩持续性时,把动量因子(momentum,MOM)直接加进 FF3:
构造上,Carhart 的动量因子是七个模型里的特例:不做双重排序,而是每月末把三大交易所全部股票按 $t-12$ 到 $t-1$ 月累计收益率单变量排序,做多前 30%、做空后 30%,且多空两头内部都采用等权重(而非市值加权)。动量组合每月再平衡——动量信号衰减快,一年一调根本来不及。
Novy-Marx 四因子模型(2013)
下一块拼图是盈利。Novy-Marx(2013)提出:盈利能力强的公司,未来预期收益也更高,且这个效应的预测力堪比 BM。他据此提出一个四因子模型——注意,这个模型没有规模因子:
用"毛利润 ÷ 总资产"衡量公司赚钱能力——选利润表最上面的、还没被各种费用和会计科目"加工"过的那个利润。
为什么不用净利润?Novy-Marx(2013)给出三条理由:(1)毛利润衡量的是企业最真实的经济产出,是股东和债权人共同投入的成果;(2)研发、广告这些费用在会计上被从利润里减掉,但它们实际上是在为未来的盈利投资,不该被惩罚;(3)利润表越往下,可操纵的科目越多,数据越"脏"。实证上,无论排序法还是 Fama–MacBeth 回归,GP 的预测能力与 BM 相当,且优于净利润/净资产、自由现金流/净资产等替代指标。
构造上,Novy-Marx(2013)沿用 FF 的 2×3 模板:分别用 logBM、$t-12$ 到 $t-1$ 月累计收益率、GP 三个变量与市值做双重排序(因此他的动量因子 UMD 与 Carhart 单变量排序的 MOM 不是同一个序列)。以 GP 为例:按 NYSE 公司 GP 的 30%、70% 分位数把全部股票分为盈利(P)、中性(N)、不盈利(U)三组,与市值两组交叉得到 S/P、S/N、S/U、B/P、B/N、B/U 六个市值加权组合:
该模型还有一个独特处理:构造这三个风格因子时做了行业中性化——做多一只股票的同时,按同等权重做空该股票所属的行业指数,从而剥离行业涨跌的影响,让因子收益更"纯"地来自个股在行业内的相对强弱。
同名因子 ≠ 同一因子。Carhart 的 MOM(单变量排序、等权)与 Novy-Marx 的 UMD(与市值 2×3 双重排序、市值加权、行业中性)虽然都叫"动量因子",收益率序列却不相同;后面还会看到 FF5 的 SMB 与 FF3 的 SMB 构造也不同,SY 模型的 SMB 更是另起炉灶。读论文或用现成因子数据时,务必核对构造细节,不同版本的因子收益不可混用。
Fama–French 五因子模型(2015)
面对盈利与投资维度不断累积的证据(也包括 Novy-Marx 的挑战),Fama 和 French(2015)给出了官方升级:在 FF3 之上加入盈利因子(Robust-Minus-Weak,RMW)与投资因子(Conservative-Minus-Aggressive,CMA)。
动机推导:从股利贴现模型到三个预测变量。股利贴现模型(Dividend Discount Model,DDM)说,股票的市值等于未来全部股利的贴现和。利用 Miller 和 Modigliani(1961)的结果——股利可以写成利润减去留存在公司里的再投资(即账面价值的增加)——可以把"股利"替换成会计报表上可观察的量,得到:
两边同时除以 $t$ 时刻的账面价值 $B_t$:
对式 (4.9) 做三次"固定其他、只动其一"的思想实验:
- 价值:固定预期盈利、预期投资和 $B_t$,若 $M_t$ 更小(等价地 $B_t/M_t$ 更高),等式要成立,贴现率 $r$ 必须更高 —— 高 BM ⇒ 高预期收益;
- 盈利:固定 $M_t/B_t$ 和预期投资,若预期盈利 $Y_{t+\tau}$ 更高,右边分子变大,等式要成立,$r$ 必须更高 —— 高预期盈利 ⇒ 高预期收益;
- 投资:固定 $M_t/B_t$ 和预期盈利,若预期投资 $dB_{t+\tau}$ 更高,右边分子变小,等式要成立,$r$ 必须更低 —— 高预期投资 ⇒ 低预期收益。
理论说的是预期盈利和预期投资,但预期不可观测,实证中怎么办?Fama 和 French(2006)专门比较过两种做法:用历史数据做朴素估计(naïve estimate),或用回归模型去预测。结果是:用历史总资产变化率直接代理预期投资时,它与收益率显著负相关;用回归预测出的预期投资反而找不到显著关系。预期盈利那边,历史 ROE 与回归预测差别很小。于是两篇论文最终都采用了朴素估计——直接拿历史 ROE 代理预期盈利、拿过去一年总资产变化率代理预期投资。还有一处妥协:按 DDM,投资变量本该是账面价值的变化,但 Fama 和 French(2015)发现用总资产变化率排序时股票收益的截面差异更大,就选了总资产。
不要以为 FF5 的投资因子有多牢靠的理论地基。颇具讽刺意味的是:Fama and French(2006)中用回归预测的"预期投资"与预期收益率之间呈正相关(虽不显著)——方向与 DDM 推导的负相关正好相反。也就是说,实证里真正好使的是历史投资(总资产增长率),它到底是不是"预期投资"的代理,大有疑问。这一矛盾后来成为 Hou 等(2019b)抨击 FF5 的重要论据(第 6 章 6.2 节)。
因子构造。RMW 和 CMA 完全套用 2×3 模板。盈利维度:按 NYSE 公司 ROE 的 30%、70% 分位数分为稳健(R)、中性(N)、疲软(W)三组,与市值交叉得 S/R、S/N、S/W、B/R、B/N、B/W;投资维度:按总资产变化率的 30%、70% 分位数分为激进(A)、中性(N)、保守(C)三组,与市值交叉得 S/A、S/N、S/C、B/A、B/N、B/C。所有组合市值加权,每年六月末再平衡:
规模因子的构造这次变了。FF5 里 BM、ROE、总资产变化率分别与市值做 2×3 排序,共产生 18 个组合。若还像 FF3 那样只用 BM×市值的 6 个组合拼 SMB,别人会问:凭什么不用 ROE 或投资的分组?Fama 和 French(2015)的解决办法是"雨露均沾"——三套排序各拼一个 SMB,再取平均:
把一个因子当成"资产",用模型里其余因子对它做时序回归:如果截距 α 不显著,说明这个因子赚的钱其余因子全能凑出来——它是多余的。
形式上,检验因子 $g$ 相对因子组 $\{f_1,\dots,f_K\}$ 是否冗余,做回归 $R_{g,t} = \alpha + \sum_k \beta_k R_{f_k,t} + \varepsilon_t$,对 $\alpha$ 做 t 检验。$\alpha$ 不显著 ⇒ $g$ 的平均收益可以由其余因子的线性组合复制,把它加进模型不会带来任何新的定价能力。FF5 论文里最著名(也最尴尬)的结果正来自这个检验:在 1963—2013 年的美股数据中,HML 对其余四个因子回归后 α 约等于零——加入盈利和投资后,价值因子成了冗余因子。直觉上不难理解:高 BM 公司往往同时是低投资、盈利平平的公司,HML 的收益大部分被 CMA(以及 RMW)"顶包"了。
下面用可复现的模拟数据把这个"HML 冗余"现象演示出来。我们按照"HML 的收益主要来自它在 CMA 上的高暴露"生成 360 个月的因子数据,然后做张成回归。左图对比 HML 原始累计收益与"回归剥离四因子后剩下的部分"($\alpha+\varepsilon$ 的累计);拖动滑杆给 HML 注入真实 α,观察它何时不再冗余:
HML 冗余不等于"价值投资已死"。张成回归只说明在均值层面 HML 可被复制;HML 与其他因子的逐期相关并不完美,风险管理、组合构建中它仍有信息。Fama 和 French 自己的态度也是保留 HML——模型使用者若关心的是解释截面收益,五因子里去掉 HML 无伤大雅;若关心刻画组合风格,HML 仍不可少。
Hou–Xue–Zhang q-factor 四因子模型(2015)
与 FF5 同年,Hou、Xue 和 Zhang(Hou et al. 2015)从完全不同的方向抵达了几乎相同的地点。他们不从投资者的角度("什么风险该被补偿")出发,而是从公司的角度出发:公司如何做投资决策,反过来决定了它的股票该有怎样的预期收益。这套理论叫实体投资经济学,又称 q 理论(q-theory,源自托宾 q),所以该模型被称为 q-factor 模型。它包含市场、规模、投资、盈利四个因子:
理论出发点:净现值原则。模型的思想源头是 Cochrane(1991);作者之一张橹后来在《清华金融评论》撰文(Zhang 2016)介绍过来龙去脉。核心是公司金融里最朴素的净现值原则(NPV rule):项目现值大于投资成本才投。公司会先投最好的项目(折现率低、盈利率高、净现值最高),随着项目越投越多,边际成本上升、边际盈利率下降,直到最后一个项目净现值恰好为零:投资的边际成本 = 项目现值 = 盈利率 / 折现率。把这个等式变形:
$$ \text{折现率} \;=\; \frac{\text{盈利率}}{\text{投资的边际成本}} $$
从这个关系立刻读出两个条件预期结论:盈利率给定时,投资越多(边际成本越高)的公司折现率越低,股票预期收益越低;投资给定时,盈利率越高的公司折现率越高,股票预期收益越高。下面把这个直觉写成正式的两期模型。
考虑时刻 0 和 1。公司 $i$ 在时刻 0 拥有资产 $A_{i0}$、已知利润率 $\Pi_{i0}$;时刻 1 的利润率 $\Pi_{i1}$ 是随机变量。每期现金流为"资产 × 利润率"。公司唯一的决策变量是时刻 0 的投资额 $I_{i0}$;假设时刻 0 的资产到时刻 1 全部折旧完,所以时刻 1 的资产就是这笔投资:$A_{i1}=I_{i0}$。投资还伴随一笔调整费用 $\frac{a}{2}\left(\frac{I_{i0}}{A_{i0}}\right)^2 A_{i0}$(工厂扩得越快,摩擦越大,费用随投资强度平方增长)。公司最大化两期股东回报之和:
q-factor 与 FF5 的论战。两个模型都含市场、规模、盈利、投资,看似孪生,血统却不同:q-factor 从投资 q 理论推出收益率与历史投资负相关,FF5 从 DDM 推出收益率与预期投资负相关。别小看这点差异——FF5 用历史总资产增长率去代理"预期投资",而其自家回归证据显示预测出的预期投资与收益率的关系方向相反(见前文误区框);q 理论则根本不需要"预期投资"这个概念,历史投资本来就是理论变量。Hou 等(2019b)据此抨击 FF5 的投资因子"理论、实证两头都不靠"。此外从时间上看,q-factor 工作论文早在 2012 年前后即流传,HXZ 阵营一直主张 FF5 是对其的"跟进"。这场论战在第 6 章 6.2 节还有下文。
因子构造:2×3×3 独立三重排序。为了体现"条件预期"——盈利给定看投资、投资给定看盈利——HXZ 没有做三次独立的双重排序,而是把市值(NYSE 中位数分两组)、单季度 ROE(NYSE 30%/70% 分位数分三组)、总资产变化率(同样三组)一次性交叉,得到 $2\times3\times3=18$ 个市值加权组合。用 $c_1/c_2/c_3$ 标记三个维度的分组($c_1\in\{S,B\}$,$c_2,c_3\in\{H,M,L\}$,如 S/H/H 表示小市值·高 ROE·高投资),三个因子定义为:
Stambaugh–Yuan 四因子模型(2017)
前五个模型都默认"因子收益是风险补偿"。接下来两个模型换了阵营:行为金融学(behavioral finance)认为,投资者的有限理性与认知偏差造成大量错误定价(mispricing),而错误定价才是众多异象收益的真正来源。Stambaugh 和 Yuan(2017)在市场、规模之外引入两个"错误定价复合因子"——管理因子(MGMT)与表现因子(PERF):
给每只股票打一个"被高估程度"的综合分:在一堆异象变量上分别排名,再把排名取平均——排名越靠前越可能被高估,未来预期收益越低。
Stambaugh 和 Yuan 延续了他们与合作者余剑峰在 Stambaugh et al.(2012、2014、2015)中的一系列错误定价研究,选取 11 个 FF3 无法解释的异象作为原料。逻辑是:既然异象收益是 FF3 解释不掉的超额收益,它就度量了个股的错误定价,异象变量取值的高低便对应错误定价的方向和大小。排名方向统一为"高估在前":若异象变量与未来收益负相关(如应计利润),按取值从高到低排;若正相关(如动量),按取值从低到高排。每只股票得到 11 个名次,按组内取平均得到两个综合排名——排名越高越可能被高估、未来收益越低;排名越低越可能被低估、未来收益越高。
11 个异象按相关性聚成两组(组内相关高、组间相关低),恰好各自有清晰的经济含义:
| 组 | 异象 | 共同点 |
|---|---|---|
| 管理组(6 个 → MGMT 因子) | 股票净发行量、复合股权发行量、应计利润、净营业资产、总资产增长率、投资与总资产之比 | 都直接受公司管理层决策驱动(发股、做账、扩张) |
| 表现组(5 个 → PERF 因子) | 财务困境、O-分数(破产概率)、动量、毛利率、总资产回报率 | 都反映公司的经营表现与市场对它的反应 |
构造上,管理、表现两个综合排名分别与市值做 2×3 双重排序。这里 Stambaugh 和 Yuan 有两处明显偏离传统:断点不用 NYSE 分位数,而用全部股票的分位数;阈值不用 30%/70%,而用 20%/80%。他们对此没有太多解释;Hou 等(2019b)复现后发现,改回传统的 NYSE 30%/70% 断点,这两个因子的表现会明显变化——错误定价因子对构造细节相当敏感,这是它的一个软肋。
规模因子的构造偏离传统更远。两套 2×3 排序共 12 个组合,Stambaugh 和 Yuan 把管理、表现维度的高、低组(共 8 个)全部扔掉,只用 4 个中间组:
纠正"太贵"比纠正"太便宜"难:看空要做空,而做空有约束、有成本,所以高估比低估更难被消除。
这是 SY 规模因子特殊构造的理论依据(Stambaugh et al. 2015)。传统双重排序号称能"中性化"错误定价对市值的影响,但由于做空难,高估端的错误定价迟迟不消;又因为错误定价在小市值股票中更严重,多空两头无法对称地被中性化,传统构造出的规模因子会带上系统性偏差。实证上,SY 用式 (4.28) 构造的 SMB 比传统方法构造的版本有更高的风险溢价——他们的解释是:剔除错误定价的干扰后,"纯"规模溢价其实更大。
Daniel–Hirshleifer–Sun 三因子模型(2020)
行为金融阵营的第二个模型来自 Daniel、Hirshleifer 和 Sun(Daniel et al. 2020)。它的切入点非常巧妙:市场上绝大多数异象,按错误定价被纠正的时间尺度可以分成两大类——长尺度(大于 1 年,通常 3~5 年)与短尺度(1 年以内)。两类异象对应两种不同的行为偏差,于是各配一个行为因子(behavioral factor),与市场因子一起组成三因子模型:
过度自信:投资者太相信自己的判断,别人(比如公司管理层)用真金白银发出的信号也听不进去,错误要很久才认。有限注意力:信息太多看不过来,新消息一时没被消化,价格反应慢半拍。
从行为金融角度看,股票收益率的共同运动有两个来源:错误定价本身的共性(同一风格的股票被情绪一起推高推低,Barberis and Shleifer 2003),以及投资者对基本面信息错误反应的共性(Daniel et al. 2001)。既然错误定价能预测未来收益,就可以用行为因子搭一个定价模型——这正是 DHS 的研究动机。两种偏差对应两个时间尺度:过度自信让投资者长期坚持错误观点,制造长尺度异象;有限注意力让投资者对公告类新信息反应不足,制造短尺度异象。
FIN 因子:跟着管理层"抄作业"。管理层拥有信息优势,善于给自家股价"择时":认为股价被高估时增发,被低估时回购。而过度自信的普通投资者对这些信号反应不足,股价短期内不会修正——于是增发预示未来低收益、回购预示未来高收益(美股上有大量实证支持)。DHS 用两个指标刻画融资行为:过去五年的复合股权发行量(5-year composite share issuance,CSI)与过去一年的股票净发行量(1-year net share issuance,NSI)。
CSI 的处理简单:按 NYSE 公司 CSI 的 20%、80% 分位数分低、中、高三档。NSI 的处理则相当繁琐——因为逐年看,增发和回购的公司数量极不平衡,直接单变量排序不合理。DHS 的做法:先把股票分成净回购、净发行两大类;净回购公司按 NYSE 净回购数的中位数分高低两组;净发行公司按 NYSE 净发行数的 30%、70% 分位数分低、中、高三组;最后取"净回购的高组"作为 NSI 的低组(回购最狠 = 最被低估)、"净发行的高组"作为 NSI 的高组(增发最猛 = 最被高估)。两个变量再按下表合成 FIN 分组:
| 情形 | FIN 分组 |
|---|---|
| CSI 与 NSI 均为高组;或其一为高组、另一缺数据 | 高组(做空端) |
| CSI 与 NSI 均为低组;或其一为低组、另一缺数据 | 低组(做多端) |
| 其余情形 | 中间组 |
构造越精巧越要警惕。NSI 这套"先分两类、再各自分组、再交叉合成"的流程,DHS 给出的解释各有道理,但如此多的自由度难逃过拟合之嫌——每一处非常规选择(中位数还是 30%/70%?缺数据怎么归组?)都是研究者可以"调"的旋钮。第 6 章讨论 p-hacking 时会再回到这一点。
FIN 分组与市值(NYSE 中位数)做 2×3 双重排序得 6 个市值加权组合,因子定义为:
PEAD 因子:赚"反应不足"的钱。大量实证显示,业绩超预期公司的股票在其后 6~9 个月持续跑赢业绩不及预期的公司——这就是盈余公告后漂移(post-earnings-announcement drift,PEAD),源于投资者的有限注意力(DellaVigna and Pollet 2009;Hirshleifer and Teoh 2003):公告出来了,很多人根本没看,价格只消化了一部分信息。DHS 用公告窗口内的市场反应来度量"业绩惊喜":以最近一次财报披露日为时间零点,计算 $[-2,+1]$ 窗口(披露前 2 个交易日到披露后 1 个交易日)相对市场的累计异常收益率(cumulative abnormal return,CAR):
七个模型放在一起看
| 模型 | 年份 | 因子数 | 因子 | 理论来源 | 一句话定位 |
|---|---|---|---|---|---|
| Fama–French 三因子 | 1993 | 3 | MKT、SMB、HML | 风险补偿(ICAPM 式状态变量,具体所指未有定论) | 开山鼻祖,至今仍是使用最广的基准 |
| Carhart 四因子 | 1997 | 4 | MKT、SMB、HML、MOM | 实证驱动(动量无公认风险解释) | 基金业绩归因的行业标配 |
| Novy-Marx 四因子 | 2013 | 4 | MKT、HML、UMD、PMU | 估值逻辑(毛利率是"价值的另一半") | 把盈利维度推上主流舞台 |
| Fama–French 五因子 | 2015 | 5 | MKT、SMB、HML、RMW、CMA | 风险框架 + 股利贴现模型比较静态 | FF 家族正统升级;HML 在其中冗余 |
| Hou–Xue–Zhang q-factor | 2015 | 4 | MKT、ME、I/A、ROE | 实体投资 q 理论(供给侧定价) | 用一个等式孵出投资、盈利两因子;与 FF5 论战 |
| Stambaugh–Yuan 四因子 | 2017 | 4 | MKT、SMB、MGMT、PERF | 行为金融:错误定价(11 异象合成) | 复合错误定价因子的代表作 |
| Daniel–Hirshleifer–Sun 三因子 | 2020 | 3 | MKT、FIN、PEAD | 行为金融:过度自信(长)+ 有限注意力(短) | 按时间尺度切分错误定价 |
学术界构造因子的通用惯例:除市场因子外,风格因子几乎都是"先排序分组、再多空相减"。排序得到的每个投资组合内部按市值加权;计算因子收益率时,多头(或空头)包含的若干组合之间取简单平均(等权)。唯一的例外是 Carhart 的动量因子——单变量排序、多空两头内部也等权。自己复现因子时,权重方式弄错是最常见的对不上数的原因。
- 七个模型、两条血统:风险/理性定价(FF3 → Carhart → NM → FF5;q-factor 独立推导)与行为金融(SY、DHS)。
- FF5 的动机来自 DDM 比较静态:高 BM、高预期盈利 ⇒ 高预期收益,高预期投资 ⇒ 低预期收益;但实证只能用历史量做朴素代理。
- q-factor 用净现值原则一个等式同时推出投资、盈利两因子:$\E_0[r^S] = \E_0[\Pi]/(1+a\,I/A)$,且理论变量本来就是历史投资。
- 错误定价因子(MGMT/PERF、FIN/PEAD)在构造上大量使用复合排名与非常规断点,解释力强但过拟合风险也高。
- 张成回归是判断因子冗余的标准工具:FF5 中 HML 对其余四因子的 α 约为零。
- 同名因子构造未必相同(MOM vs UMD、三个版本的 SMB),使用因子数据前先查构造细节。
4.2A 股中被定价的因子
第 3 章用排序法在 A 股检验了主流因子,结论是规模、价值等因子显著。但排序法有个先天短板:即便做了与市值的双重排序,也无法完全剔除目标因子在其他因子上的暴露——比如高 BM 组合难免顺带暴露于盈利、换手率等维度,混进别人的收益。本节改用 Fama–MacBeth 回归(第 2 章 2.3 节):截面回归天然"多元",能同时控制所有其他特征,回答一个更干净的问题——哪些因子在 A 股真正被定价?原书使用 2000—2019 年的 A 股数据完成这组实证,检验对象正是第 3 章的因子:市场、规模、价值、动量、盈利、投资、换手率。
实证设定
几个关键设定,每一个都值得留意:
- 用公司特征当因子暴露。除市场因子外,直接用每期截面上公司特征的取值作为 $\beta$(而非时序回归估计值)——这是学术界的常见做法(第 2 章讨论过其利弊)。市值取对数,以削弱市值分布严重右偏的影响。
- 市场 β 单独估计。用滚动 252 个交易日窗口的时序回归计算个股对市场的 β,作为其在市场因子上的暴露。
- 特征在前、收益在后。每个 $t$ 月用当期特征作解释变量、用 $t+1$ 月个股收益率作被解释变量做截面回归,逐期得到因子收益率序列,再对时间取均值、算 Newey–West 调整后的 t 值。
- 回归含截距项,以控制模型设定偏误。
- 只去极值、不标准化。惯例上会对暴露做去极值 + 标准化两步处理(标准化后各因子暴露截面标准差为 1,收益率可直接比较);原书实证只做了去极值,因此比较不同因子时需要借助"影响系数"(见下)。
回答"暴露多一个标准差,预期收益多多少":因子收益率 × 该因子暴露的截面标准差。用它就能公平地比较量纲不同的因子。
出自 Bali et al.(2016)。当暴露未标准化时,回归系数(因子收益率)的大小受特征量纲影响——BM 的"1 个单位"和对数市值的"1 个单位"根本不可比。影响系数 $=\hat\lambda_k \times \sigma(\text{暴露}_k)$ 把所有因子折算到"每一个标准差暴露"的统一刻度上。例如规模因子月均收益率约 $-0.52\%$、对数市值的截面标准差约 $1.02$,影响系数约 $-0.53\%$:其他条件不变,市值(对数)高一个标准差,下月预期收益低约 0.5%。
回归结果
结果与第 3 章排序法的结论基本一致。按显著性分成两个阵营(括号内为原书报告的 Newey–West t 值的大致水平):
| 因子 | 月均收益方向 | 显著性 | 解读 |
|---|---|---|---|
| 规模(对数市值) | 负 | 显著(t 约 −3.7) | 市值越小收益越高——小市值效应;影响系数绝对值约 0.5%,名列前茅 |
| 价值(BM) | 正 | 显著 | 便宜的股票收益更高;影响系数仅次于换手率与规模 |
| 盈利(ROE) | 正 | 高度显著(t 约 4.8) | 影响系数约 0.28% 不算大,但标准误极低,显著性很高 |
| 换手率 | 负 | 极显著(t 约 −7.8) | 低换手率溢价,A 股最强的截面规律之一;影响系数绝对值最大 |
| 市场(β) | 负 | 不显著 | β 高不多赚甚至少赚——与 Black 版 CAPM(低 β 异象)的含义相符 |
| 动量 | 正 | 不显著 | 方向为正但过不了检验——美股最强的动量在 A 股水土不服 |
| 投资(总资产增长率) | 正 | 不显著(t 约 0.7) | 方向甚至与理论预期(负相关)相反 |
无论用传统的 $|t|>2.0$ 还是当下更严格的 $|t|>3.0$ 门槛(第 6 章 6.1 节),结论都一样:规模、价值、盈利、换手率在 A 股被定价;市场、动量、投资不显著。做 A 股因子投资和异象研究,可优先从这四个被定价的维度出发。
"排序法里显著" ≠ "被定价"。排序法是单变量视角,组合在其他因子上的顺带暴露会虚增(或掩盖)目标因子的收益;Fama–MacBeth 回归同时控制所有特征后,才有资格说某因子"独立地"获得溢价。两种方法结论一致(如本节)当然最好;不一致时,应以多元回归为准去怀疑排序法结果里混入了别的因子。
- Fama–MacBeth 回归能同时控制全部特征,是"因子是否被定价"的更严格裁判。
- A 股(2000—2019)被定价的因子:规模(−)、价值(+)、盈利(+)、换手率(−);市场 β、动量、投资不显著。
- 暴露不标准化时用影响系数(收益率 × 暴露标准差)比较因子强弱:换手率、规模最强,价值次之,盈利胜在稳定。
- 动量在 A 股不显著、投资方向反常——美股模型不能照搬到 A 股,这正是下一节模型比较的出发点。
4.3模型比较:来自 A 股的例子
有了因子,怎么决定 A 股的多因子模型该长什么样?本节演示如何用第 2 章的 α 检验和 GRS 检验比较两个候选模型。先说清楚立场:重点是方法论的应用,不是给两个模型分高下——你很快会看到,"谁更好"的答案对样本区间惊人地敏感。
两个候选模型
模型一:中国版三因子模型(CHN-3)。Liu、Stambaugh 和 Yuan(Liu et al. 2019,发表于 Journal of Financial Economics,标题即 Size and value in China)参照 FF3 为 A 股定制的三因子模型:市场 + 规模(CHN-SMB)+ 价值(CHN-VMG)。两处针对 A 股的特别处理:
A 股上市难,小壳公司因为"可以被借壳"而自带一块与基本面无关的价值;这些股票的涨跌跟着壳行情走,会污染用它们做的任何实证。
由于 IPO 发审制度不健全,优秀企业在 A 股上市成本高、周期长,于是出现"借壳上市":收购一家市值极低的上市公司实现曲线上市。这使得 A 股市值最小的一批股票具有可观的壳价值,其收益率很大程度上与壳价值预期挂钩、远离基本面。Liu et al.(2019)因此在实证中剔除市值最低的 30% 股票。这是移植美股方法论时"本土化改造"的经典案例。
第二处处理是:用 EP(盈利市值比)取代 BM 作为价值因子的排序变量——理由几乎完全来自实证:在他们的样本里 EP 比 BM 更能解释 A 股收益的截面差异。这一选择争议很大,后面细说。
模型二:市场 + 规模 + 价值(BM)+ 盈利(ROE)四因子模型(LSL-4)。这是原书作者从公司估值角度出发主张的模型(LSL 为三位作者姓氏首字母,用作因子前缀以区分 CHN 系因子):保留 BM 构造价值因子,并加入 ROE 构造的盈利因子。动机正是对"EP 取代 BM"的质疑:
- 算术上:$EP = \dfrac{E}{P} = \dfrac{B}{P}\times\dfrac{E}{B} = BM \times ROE$——EP 是价值与盈利两个维度的乘积,不是纯粹的价值。
- 机制上:第 3 章的实证显示,BM 在小市值股票中作用远强于大市值,而 ROE 恰好相反。当市值最低的 30% 因壳价值被剔除后,BM 的效果自然变差、ROE 和 EP 的效果自然变好——EP 在 Liu et al.(2019)中的优势,相当程度上是样本筛选的副产品。
- 文献上:BM 与 EP 各有胜负,谈不上谁碾压谁:Cakici et al.(2017)与 Hsu et al.(2018)在各自区间发现 BM 更强;Qiao(2019)发现 BM 全区间显著、EP 只有剔除小市值后才显著;MSCI 的报告(Rao and Gupta 2019)发现 2000—2009 年 BM 胜、2010—2019 年 EP 胜。
理论铺垫:BM、ROE 与预期收益
在"因子大战"硝烟弥漫的今天,Fama 和 French(2018)反复告诫:模型里每个因子都该有理论支撑,否则模型比较就沦为数据挖掘。所以先补上理论:为什么 BM 和 ROE 与预期收益密切相关?Hou 等(2019b)从 DDM 出发用单期预期收益率给出了一段干净的论述。由收益率的定义:
再引入一个会计恒等式——净盈余关系(clean surplus relation):分红等于利润减去账面价值的增加(赚到的钱要么分掉、要么留下):
预期 ROE 不可观测,但 Zhang(2017)发现历史 ROE 是预期 ROE 的可靠预测,所以可近似用历史 ROE。于是 BM 和 ROE 都有资格构建因子。既然如此,为什么不干脆用 $EP=BM\times ROE$ 一个变量打包两个维度?两个理由:Penman 和 Reggiani(2018)针对美股的研究表明,BM、EP、ROE 三者中取两个才能更准确地估值,只用一个会丢信息;而且由 $EP=BM\times ROE$ 可知 EP 与 ROE 正相关,用 EP 构造的"价值因子"在盈利维度上有甩不掉的暴露——它表现好,但不纯粹。这就是 LSL-4 分别用 BM、ROE 建两个因子的全部理由。
因子构造与初步观察
比较模型前先在原书的实证区间(2000—2019 年 A 股)内复现因子,构造尽量贴近原文。CHN-3 的两个风格因子用市值与 EP 做 2×3 独立双重排序(每月末再平衡,组合内市值加权;V/M/G 分别为 EP 高于 70% 分位数的价值组、中间组、低于 30% 分位数的成长组):
LSL-4 的三个风格因子仿照 FF5:分别用 BM、ROE(TTM,滚动十二个月)与市值做 2×3 双重排序,规模因子取两套排序的平均:
正式检验前,因子收益率与相关系数已经透露了三条重要信息:
- 两个规模因子几乎是同一个东西(两种股票池下相关系数均高达 0.98)。有意思的是,一旦剔除市值最低的 30% 股票,两个规模因子都不再显著(t 值分别约 1.9 和 1.2)——A 股的规模溢价高度集中在最小的那批股票上。顺带一提,Liu et al.(2019)的实证区间止于 2016 年底,"幸运地"避开了其后规模因子失效的年份。
- CHN-VMG 与 LSL-RMW 高度相关(全部股票下约 0.85,剔除后仍约 0.74)——$EP=BM\times ROE$ 的直接体现:EP 版价值因子在盈利维度上暴露很高,不是纯粹的价值因子。作为对照,BM 版价值因子 LSL-HML 与盈利因子的相关系数仅约 −0.1。
- 盈利因子在剔除小市值后更强:LSL-RMW 全部股票时不显著(t 约 1.8),剔除市值最低 30% 后显著性上升(t 约 2.4)——与第 3 章"ROE 在大市值中更好使"的发现一致。
α 检验:谁解释掉的异象多
α 检验的做法:选一组异象作为测试资产,把每个异象的多空组合收益率对两个模型分别做时序回归,看 α 是否显著——被解释掉的异象越多、剩余 |α| 越小,模型越好。测试资产选用 Liu et al.(2019)研究过的 10 个异象(涵盖估值、盈利、换手率与流动性、反转与波动率等维度,如净经营资产、市现率、1 个月异常换手率、非流动性——按 Amihud 2002 计算——反转、1 个月波动率等;个别变量定义采用 Asness et al. 2020 的版本以规避涨跌停的影响)。除全区间一次回归外,还做了滚动 60 个月窗口回归(对 α 及其 t 值的序列取均值)作为稳健性检验——20 年里 A 股结构变化太大,一次回归可能掩盖问题。
结果的定性总结(原书汇报了 Avg |α|、Avg |t|、以及 |t| 超过 2.0 / 3.0 的异象个数四个指标):
| 情形 | CHN-3 | LSL-4 |
|---|---|---|
| 全区间一次回归 · 全部股票 | 仅 2 个异象解释不掉(净经营资产 t≈2.1、1 个月异常换手率 t≈2.5);Avg |α| 约 0.30% | 3 个解释不掉(市现率 t≈2.0、异常换手率 t≈3.0、非流动性 t≈3.6);Avg |α| 约 0.40% |
| 全区间一次回归 · 剔除市值最低 30% | 定性结论不变:两个模型都搞不定 1 个月异常换手率与非流动性,其余大都能解释 | |
| 滚动 60 个月 · 全部股票 | 解释全部 10 个异象 | 仅非流动性解释不掉(t≈2.4) |
| 滚动 60 个月 · 剔除市值最低 30% | — | 反超:Avg |α| 与 Avg |t| 均低于 CHN-3 |
按大多数口径 CHN-3 略占上风,但在滚动窗口 + 剔除小市值的设定下结论逆转。诚实的读法是:两个模型解释异象的能力旗鼓相当,都能覆盖大部分异象;换手率/流动性类异象是共同的盲区(这也是 Liu et al. 2019 另外构建含换手率因子的四因子版本的原因)。
GRS 检验:模型互相解释对方
GRS 检验(第 2 章 2.5 节)在这里的用法很优雅:让两个模型互为模型和测试资产——用 LSL 的三个风格因子当模型去解释 CHN 的两个风格因子(检验后者的 α 是否联合为零),再反过来。若 A 的因子能解释 B 的因子而反之不行,则 A 是"更大"的模型。考虑到区间敏感性,检验在四个窗口分别进行:前十年(2000—2009)、后十年(2010—2019)、全区间、以及 Liu et al.(2019)原文区间(2000—2016)。全部股票下的结果:
| 窗口 | LSL 因子作模型,CHN 因子作资产 | CHN 因子作模型,LSL 因子作资产 | 读法 |
|---|---|---|---|
| 前十年 | 拒绝(F≈3.7,p≈0.03) | 拒绝(F≈4.2,p≈0.01) | 互相都解释不了对方 |
| 后十年 | 不拒绝(F≈0.8) | 不拒绝(F≈1.5) | 互相都能解释对方 |
| 全区间 | 拒绝(F≈3.5,p≈0.03) | 不拒绝(F≈0.8,p≈0.47) | CHN 能解释 LSL,反之不行——CHN-3 占优 |
| 2000—2016(原文区间) | 与全区间结论相同 | — | |
为什么前后十年结论如此撕裂?拆开因子看就明白了:前十年,BM 构造的 LSL-HML 极强(月均约 1.35%、高度显著),LSL-RMW 弱(月均约 0.3%、不显著);后十年,A 股结构生变——机构占比上升、市场更有效——盈利因子转为显著,BM 价值因子却"熄火"。LSL 的因子在前后十年里总是"断了至少一条腿"。反观 CHN-VMG:由于 $EP=BM\times ROE$,它对 LSL-HML 和 LSL-RMW 同时保持稳定的高暴露(滚动回归清晰可见),前十年吃价值的溢价、后十年吃盈利的溢价,二十年全程显著。GRS 的 F 统计量正是被这种"因子接力"推出来的。至于剔除市值最低 30% 的股票池:全区间两个模型互相解释、难分高下,而分别看前后十年时反而是 LSL-4 更好。
看到"全区间 GRS 显示 CHN-3 更优"就下结论,是模型比较里最典型的陷阱。同一对模型,换个窗口、换个股票池,优劣立刻翻转。实证资产定价极易滑入数据窥探——有意或无意地挑选对自己有利的区间。原书对这组实证的态度值得记住:与"实证里谁解释谁"相比,每个因子背后的经济学含义是否清晰合理重要得多(Fama and French 2018)。EP 因子实证表现好,但它是两种溢价的混合体;BM+ROE 各司其职,理论上更干净。孰优孰劣,留给使用者按用途判断。
- 比较模型的标准武器:α 检验(对一组异象回归,看剩余 |α| 与显著个数)+ GRS 检验(两模型互为模型与资产)。
- $EP = BM \times ROE$:EP 版价值因子同时暴露于价值与盈利,表现稳定但不纯粹;BM + ROE 双因子在理论上更清晰。
- DDM 单期推导:BM 与预期收益正相关,预期 ROE 与预期收益正相关——两个因子都有理论出身。
- A 股前十年价值强、后十年盈利强;规模溢价集中于最小 30% 股票(壳价值污染区)。
- 模型比较的结论高度依赖窗口与股票池——先警惕数据窥探,再谈孰优孰劣。
4.4多因子模型的简约性
纯数学上,只要往时序回归右边不断塞因子,模型(在样本内)一定能解释越来越多的异象——解释力是可以"买"来的,代价是复杂度。但本章七个模型的因子个数全都落在 3~5 个:这不是巧合,而是简约性原则(The Law of Parsimony,即奥卡姆剃刀)在起作用——因子代表的是共性风险,共性风险的种类必然有限;解释不了这一点的因子,多半只是在拟合噪声。
因子个数之外还有一层更隐蔽的复杂度:构造因子用了多少个变量。SY 模型只有 4 个因子,但两个错误定价因子背后是 11 个异象变量——它的"体积"远比因子个数显示的大。在 2018 年美国金融协会年会上,DHS 模型作者之一 Lin Sun 报告了一项颇有新意的分析:给每个模型算"简约指数",再看复杂度与解释力的关系。
算两个极端。FF3:市场因子用 0 个变量;SMB 与 HML 都由市值 × BM 双重排序构造,各用 2 个变量。指数 I $=0-(0+2+2)=-4$;不重复变量共 2 个(市值、BM),指数 II $=0-(3+2)=-5$。SY 四因子:管理因子用市值 + 6 个异象变量共 7 个;表现因子用市值 + 5 个异象变量共 6 个;规模因子的构造牵涉市值和全部 11 个异象变量共 12 个。指数 I $=0-(0+12+7+6)=-25$;不重复变量共 12 个,指数 II $=0-(4+12)=-16$。两个只差一个因子的模型,复杂度差了几倍。
Lin Sun 用 CAPM 和本章各模型去检验 34 个异象,以 0.05 显著性水平下"仍显著的异象个数"度量模型解释力,画出解释力对简约指数的散点。结论清晰:模型越复杂(指数越低),样本内解释掉的异象越多——一条几乎单调的关系。这恰恰说明"谁解释的异象多"不能作为评判模型的唯一标准:复杂度买来的解释力,很可能只是样本内的过拟合,出了样本就还回去(第 6 章 6.2.3 节继续这个话题)。
- 解释力与复杂度正相关——往模型里加因子总能"变好",所以解释力必须与简约性一起权衡。
- 复杂度有两层:因子个数、构造因子的变量个数;简约指数 I / II 分别从两个口径惩罚它们。
- 优秀的多因子模型:因子少(3~5 个)、变量少、且每个因子背后有清晰的金融学或经济学含义。
- 在因子动物园时代,简约性是对抗过拟合与数据窥探的第一道防线。
本章练习
练习刻意有难度。代码题请准备 Python 环境(numpy;练习 4.2 的 p 值部分可选装 scipy),先自己写,再看提示,最后对答案。
下面的代码生成 600 个月的五因子模拟数据,其中 HML 完全由其余四个因子加噪声生成(真实 α = 0),但它自身的平均收益显著为正。请你:
- 写一个通用函数
spanning_test(F, names):对每个因子,用其余因子做带截距的时序回归,输出该因子的样本均值及其 t 值、张成回归的 α 及其 t 值; - 运行并回答:哪些因子"平均收益显著但 α 不显著"?这说明什么?
- 把生成 HML 的那一行中真实 α 改为每月 0.3,重新运行。α 的 t 值变成多少?要多长的样本才能稳定检出这个 α(用 $t \approx \alpha\sqrt{T}/\sigma_{\varepsilon}$ 估算)?
import numpy as np
rng = np.random.default_rng(42)
T = 600
mkt = 0.55 + 4.5 * rng.standard_normal(T)
smb = 0.20 + 3.0 * rng.standard_normal(T)
rmw = 0.25 + 2.2 * rng.standard_normal(T)
cma = 0.28 + 1.9 * rng.standard_normal(T)
# HML:由其余因子生成,真实 alpha = 0
hml = 0.0 + 0.04*mkt + 0.06*smb + 0.22*rmw + 1.05*cma \
+ 2.0 * rng.standard_normal(T)
F = np.column_stack([mkt, smb, rmw, cma, hml])
names = ['MKT', 'SMB', 'RMW', 'CMA', 'HML']
提示
带截距 OLS:设计矩阵 Z = [1, X],系数 np.linalg.lstsq;α 的标准误来自 s2 * inv(Z.T @ Z)[0, 0],其中 s2 是残差方差(自由度 T − k)。均值的 t 值就是"对常数 1 回归"的特例:mean / (std / sqrt(T))。第 3 问:噪声月波动约 2%,α = 0.3%/月,信息比率 0.15/月,t 超过 2 大约需要 $(2/0.15)^2 \approx 180$ 个月。
参考答案
import numpy as np
def ols_alpha(y, X):
"""带截距 OLS,返回 (alpha, t_alpha)"""
T = len(y)
Z = np.column_stack([np.ones(T), X])
coef, *_ = np.linalg.lstsq(Z, y, rcond=None)
resid = y - Z @ coef
k = Z.shape[1]
s2 = resid @ resid / (T - k)
cov = s2 * np.linalg.inv(Z.T @ Z)
return coef[0], coef[0] / np.sqrt(cov[0, 0])
def spanning_test(F, names):
T, K = F.shape
print(f"{'因子':<6}{'均值%/月':>10}{'t(均值)':>9}{'alpha%':>9}{'t(alpha)':>9} 结论")
for i, name in enumerate(names):
y = F[:, i]
X = np.delete(F, i, axis=1)
m = y.mean()
t_m = m / (y.std(ddof=1) / np.sqrt(T))
a, t_a = ols_alpha(y, X)
verdict = '冗余' if abs(t_a) < 2 else '有独立贡献'
print(f"{name:<6}{m:>10.3f}{t_m:>9.2f}{a:>9.3f}{t_a:>9.2f} {verdict}")
rng = np.random.default_rng(42)
T = 600
mkt = 0.55 + 4.5 * rng.standard_normal(T)
smb = 0.20 + 3.0 * rng.standard_normal(T)
rmw = 0.25 + 2.2 * rng.standard_normal(T)
cma = 0.28 + 1.9 * rng.standard_normal(T)
for true_alpha in [0.0, 0.3]:
hml = true_alpha + 0.04*mkt + 0.06*smb + 0.22*rmw + 1.05*cma \
+ 2.0 * rng.standard_normal(T)
F = np.column_stack([mkt, smb, rmw, cma, hml])
print(f"\n=== HML 真实 alpha = {true_alpha}%/月 ===")
spanning_test(F, ['MKT', 'SMB', 'RMW', 'CMA', 'HML'])
(2) 真实 α = 0 时,HML 的均值显著为正(t 约 3 上下),但张成回归 α 的 t 值接近 0——HML 冗余:它的平均收益完全可由其余四因子(主要是 CMA)的线性组合复制,加进模型不提供任何增量定价能力。而 MKT、CMA 等因子(其均值不来自彼此的暴露)α 显著,是模型必须保留的成员。这正是 Fama and French(2015)在真实美股数据(1963—2013)上得到的著名结果。
(3) α = 0.3%/月、残差月波动约 2% 时,$t \approx 0.3\sqrt{600}/2 \approx 3.7$,600 个月的样本能稳定拒绝冗余。反过来,想让 t 超过 2 至少需要约 $(2\times2/0.3)^2 \approx 180$ 个月(15 年)——冗余检验和 α 检验一样,对样本长度非常饥渴,短样本下"检验不出 α"不等于"没有 α"。
模拟一个由两个因子("市场"与"盈利")定价的世界和 10 个测试组合(真实 α 全为零)。模型 A 同时含两个因子,模型 B 只含市场因子(相当于漏掉了盈利因子)。请你:
- 实现函数
grs_test(R, F):对 N 个测试组合做时序回归,返回各组合的 α、平均 |α|,以及 GRS 统计量 $\dfrac{T-N-K}{N}\left(1+\bar{f}^{\top}\hat\Omega^{-1}\bar{f}\right)^{-1}\hat{\boldsymbol\alpha}^{\top}\hat\Sigma^{-1}\hat{\boldsymbol\alpha} \sim F(N,\,T-N-K)$($\hat\Omega$、$\hat\Sigma$ 用除以 $T$ 的极大似然估计); - 分别对模型 A、B 运行,比较平均 |α| 与 GRS 统计量,并解释模型 B 的 α 为什么呈现与
b2成比例的结构; - 回答:相比"数一数有几个 α 显著",GRS 检验好在哪里?
import numpy as np
rng = np.random.default_rng(7)
T, N = 600, 10
f1 = 0.50 + 4.5 * rng.standard_normal(T) # 市场因子
f2 = 0.30 + 2.5 * rng.standard_normal(T) # 盈利因子
b1 = rng.uniform(0.8, 1.2, N) # 市场暴露
b2 = np.linspace(-0.8, 0.8, N) # 盈利暴露:从深空到重仓
eps = 1.5 * rng.standard_normal((T, N))
R = np.outer(f1, b1) + np.outer(f2, b2) + eps # 真实 alpha 全为 0
提示
多资产时序回归可以一次算完:X = [1, F](T×(K+1)),coef = lstsq(X, R) 得 (K+1)×N 矩阵,第一行就是全部 α。GRS 里的 $\hat\Sigma$ 是残差矩阵的 N×N 协方差(除以 T),$\bar f$ 是因子均值向量,$\hat\Omega$ 是因子协方差(除以 T)。模型 B 漏掉 f2 时,每个组合的 α 会吸收 b2[i] * f2.mean()。
参考答案
import numpy as np
def grs_test(R, F):
"""R: T x N 测试组合超额收益; F: T x K 因子收益
返回 (alpha 向量, 平均|alpha|, GRS 统计量, 自由度, p 值或 None)"""
T, N = R.shape
F = np.atleast_2d(F)
if F.shape[0] != T:
F = F.T
K = F.shape[1]
X = np.column_stack([np.ones(T), F])
coef, *_ = np.linalg.lstsq(X, R, rcond=None) # (K+1) x N
alpha = coef[0]
E = R - X @ coef
Sigma = E.T @ E / T # 残差协方差 (MLE)
fbar = F.mean(axis=0)
Omega = (F - fbar).T @ (F - fbar) / T # 因子协方差 (MLE)
core = alpha @ np.linalg.solve(Sigma, alpha)
adj = 1.0 + fbar @ np.linalg.solve(Omega, fbar)
grs = (T - N - K) / N * core / adj
try:
from scipy import stats
p = stats.f.sf(grs, N, T - N - K)
except ImportError:
p = None
return alpha, np.abs(alpha).mean(), grs, (N, T - N - K), p
rng = np.random.default_rng(7)
T, N = 600, 10
f1 = 0.50 + 4.5 * rng.standard_normal(T)
f2 = 0.30 + 2.5 * rng.standard_normal(T)
b1 = rng.uniform(0.8, 1.2, N)
b2 = np.linspace(-0.8, 0.8, N)
eps = 1.5 * rng.standard_normal((T, N))
R = np.outer(f1, b1) + np.outer(f2, b2) + eps
for name, F in [('模型A(市场+盈利)', np.column_stack([f1, f2])),
('模型B(仅市场) ', f1.reshape(-1, 1))]:
alpha, avg_abs, grs, dof, p = grs_test(R, F)
ptxt = f", p = {p:.4f}" if p is not None else "(未装 scipy,5% 临界值约 1.85)"
print(f"{name}: 平均|alpha| = {avg_abs:.3f}%/月, GRS = {grs:.2f} "
f"~ F{dof}{ptxt}")
print(" 各组合 alpha:", np.round(alpha, 3))
(2) 模型 A:平均 |α| 很小(几个 bp),GRS 不显著——模型正确时 α 联合为零无法拒绝。模型 B:每个组合的 α 约等于 $b_{2,i}\times\bar{f_2}\approx b_{2,i}\times 0.3$,从约 −0.24% 单调排到约 +0.24%,平均 |α| 约 0.13%/月,GRS 显著拒绝。漏掉的因子没有消失,而是按各组合的暴露"摊进"了 α——这正是第 1 章说的"α 显著的一种解释是模型漏了因子"。
(3) "数显著个数"逐个检验 α,既有多重检验问题(10 次检验总会撞出一两个假阳性),又忽略了 α 之间通过残差的相关性;GRS 把 N 个 α 放进一个二次型里联合检验,用残差协方差 $\hat\Sigma$ 给相关性定权,还通过 $(1+\bar f^{\top}\hat\Omega^{-1}\bar f)^{-1}$ 校正了因子均值估计误差,并有精确的有限样本 F 分布。它还有漂亮的几何含义:GRS 统计量正比于"测试资产加入后夏普比率的平方能提高多少"——模型好,等价于在因子之外再也榨不出更高的夏普比率。
从股利贴现模型 $M_t = \sum_{\tau=1}^{\infty}\E[D_{t+\tau}]/(1+r)^{\tau}$ 出发:
- 利用净盈余关系推出式 (4.8),说明每一步的经济含义;
- 推出式 (4.9),并严格论证三个比较静态结论(BM、预期盈利、预期投资分别与 $r$ 的关系),指出每个结论"固定"了哪些量;
- 指出这一推导的至少三个薄弱环节(提示:$r$ 是什么?"固定其他变量"现实吗?实证代理变量与理论变量一致吗?)。
参考答案
(1) 净盈余关系(clean surplus relation):账面价值的变动等于利润减分红,$dB_{t+\tau} = Y_{t+\tau} - D_{t+\tau}$,移项得 $D_{t+\tau} = Y_{t+\tau} - dB_{t+\tau}$——公司赚到的钱,要么留在账面上(再投资),要么分给股东。代入 DDM: $$ M_t = \sum_{\tau=1}^{\infty} \frac{\E[\,Y_{t+\tau} - dB_{t+\tau}\,]}{(1+r)^{\tau}} $$ 即式 (4.8)。经济含义:市值等于未来全部"利润减再投资"(自由现金流意义上的可分配利润)的现值,其中 $r$ 是使该等式成立的内部收益率,近似于股票的长期预期收益率。这一替换归功于 Miller and Modigliani(1961):估值可以完全绕开股利政策,只看盈利与投资。
(2) 两边除以 $B_t$($B_t>0$,且是 $t$ 时刻已知量,可直接进入求和号)得式 (4.9): $$ \frac{M_t}{B_t} = \frac{\sum_{\tau=1}^{\infty}\E[\,Y_{t+\tau}-dB_{t+\tau}\,]/(1+r)^{\tau}}{B_t} $$ 记右边分子的期望现金流流为 $CF \equiv \{\E[Y_{t+\tau}-dB_{t+\tau}]\}$。三个比较静态: ① 价值:固定 $CF$ 与 $B_t$,令 $M_t$ 下降。左边变小,而右边是 $r$ 的严格递减函数(每一项分母随 $r$ 增大),等式要恢复成立必须 $r$ 上升。故 $B_t/M_t$ 越高 ⇒ $r$ 越高。 ② 盈利:固定 $M_t/B_t$、$B_t$ 与全部 $dB$,令某些 $\E[Y_{t+\tau}]$ 上升。右边分子变大,左边不动,必须 $r$ 上升抵消。故预期盈利越高 ⇒ $r$ 越高。 ③ 投资:固定 $M_t/B_t$、$B_t$ 与全部 $Y$,令某些 $\E[dB_{t+\tau}]$ 上升。右边分子变小,必须 $r$ 下降抵消。故预期投资越高 ⇒ $r$ 越低。
(3) 薄弱环节(任三): ① $r$ 被假设为对所有期限相同的常数贴现率,而实际预期收益随期限与时间变化,"单期预期收益"与这里的 $r$ 并不同物——Hou et al.(2019b)正是用单期版本(式 4.33—4.36)重做推导来攻击 FF5 的(单期版本推不出投资与收益的关系,投资因子失去理论出身)。 ② 比较静态要求"固定其他变量只动一个",但现实中 $M_t$、盈利、投资高度联动(盈利好的公司往往投资多、市值高),三个"固定"实验在数据里从不单独发生。 ③ 理论变量是预期盈利与预期投资、且投资应是账面价值变化;实证代理是历史 ROE 与历史总资产变化率。尤其投资一项:用回归预测的预期投资与收益率甚至呈(不显著的)正相关,与理论方向相反——代理变量与理论变量之间存在断裂。 ④ 推导只涉及"应该相关",完全没有说明这是否是风险:DDM 对理性定价和错误定价同样成立,高 BM 高收益也可以读成"价格错了后来修正"。
基于式 (4.17)—(4.21) 的两期模型,回答:
- 为什么"给定盈利,投资多的公司预期收益低"在 q 理论中是因果自洽的(公司为什么"敢"多投)?
- 为什么"给定投资,盈利高的公司预期收益高"不是套利机会?
- 价值溢价(高 BM 高收益)如何被投资因子"吸收"?由此解释为什么 q-factor 模型里没有 HML。
参考答案
(1) 核心等式 $\E_0[r^S] = \E_0[\Pi_{i1}]/(1+a\,I_{i0}/A_{i0})$ 里,因果方向是从折现率到投资:公司按净现值原则投资,投到边际项目 NPV 为零为止。折现率(即股票预期收益,也是公司的资本成本)低的公司,未来现金流折现后更值钱,更多项目过得了 NPV 门槛,于是投资更多。所以"高投资"不是导致低收益的原因,而是低折现率的显示信号——公司用自己的投资行为暴露了市场给它的资本成本。这就是"供给侧定价":不问投资者要什么补偿,只看公司行为反推折现率。
(2) 给定投资,盈利高 ⇒ 折现率高,是同一等式的另一面:高盈利却没有大幅扩张的公司,说明它的资本成本(折现率)一定很高——否则按 NPV 原则它早该多投了。高预期收益是对持有这类股票所承担风险的补偿(在理性框架里折现率高即风险高),不是免费午餐;想赚 ROE 因子的溢价,就要承担对应的系统性风险(如盈利的周期性风险)。
(3) 托宾 q(市值/重置成本,近似市值/账面)与投资强度正相关:在最优投资条件下 $q = 1 + a\,I/A$(边际 q 等于边际成本)。因此低 q(高 BM)公司 ⇔ 低投资公司 ⇔ 高折现率公司。价值溢价与投资溢价是同一枚硬币的两面:HML 做多的"便宜"公司,基本上就是 I/A 因子做多的"不扩张"公司。既然 I/A 因子直接对应理论变量(投资),HML 只是它的间接代理,模型自然保留 I/A、舍弃 HML——这与 FF5 中"HML 被 CMA 张成、冗余"的实证发现互相印证:一个从理论预言,一个从数据验证。
以 SY 四因子与 DHS 三因子为例,与 FF5 / q-factor 对照,从构造方法与收益解释两个层面,系统回答错误定价因子和风险因子的本质区别;并给出至少两条可检验的推断——如果因子收益真的来自错误定价而非风险,数据上应该看到什么?
参考答案
构造层面:风险因子选变量的标准是"有理论支撑的风险代理",通常一个因子一个变量(BM、ROE、I/A),排序用统一模板(NYSE 30%/70% 断点、2×3),构造保守克制;错误定价因子选变量的标准是"能度量价格偏离价值的方向和幅度",天然倾向复合信号——SY 把 11 个异象排名取平均降噪,DHS 把 CSI/NSI 按复杂规则合成——并大量采用非常规设计(20%/80% 断点、全市场断点、SY 只用中间组构造 SMB、DHS 的缺失值归组规则)。方向的确定方式也不同:风险因子的多空方向由理论符号决定(投资负相关 ⇒ 保守减激进);错误定价因子的方向统一为"做多低估、做空高估",依赖对每个异象与收益相关方向的先验判断。代价是自由度多、对构造细节敏感(Hou et al. 2019b 换回传统断点后 SY 因子表现明显变化)、过拟合风险高。
解释层面:风险阵营中因子溢价是承担系统性风险的均衡补偿——它应当长期存在,赚它的钱必须承受相应的坏状态(如盈利因子在衰退期亏损);错误定价阵营中因子溢价是价格向价值回归的过程——它存在的前提是偏差持续产生(行为偏差 + 套利限制),本质上是"聪明钱赚糊涂钱"。两种解释对应完全不同的世界观:前者与市场有效兼容,后者以市场无效为前提(回到第 1 章的联合假说问题——同一份 α 证据,两个阵营各执一词)。
可检验推断(任两条): ① 随套利条件变化:错误定价溢价应在套利受限处更强——小市值、高特质波动、难做空的股票中更大,且多空不对称(做空端贡献更大,源于套利不对称性);风险溢价无此系统模式。 ② 随情绪变化:错误定价溢价应在高投资者情绪期后更大(情绪制造偏差);Stambaugh et al.(2012)正是用这一点支持错误定价解释。 ③ 随时间衰减:偏差被学术界曝光、被资金套利后,错误定价溢价应显著缩水(McLean and Pontiff 2016 发现发表后平均缩水过半);纯风险溢价不因"被发现"而消失。 ④ 坏状态对价:风险因子应能找到对应的宏观坏状态(在该状态下因子亏钱且投资者恰在此时最怕亏钱);错误定价因子找不到这样的状态对价。
假设你被派去研究一个此前没人系统研究过的股票市场(比如某新兴市场),任务是给出该市场的多因子定价模型。请串联第 2 章的方法论与本章的全部内容,写出从零开始的完整流程(至少覆盖:数据准备、候选因子筛选、因子构造、冗余剔除、模型确定与验证五个环节),并在每个环节指出一个最容易犯的错误。
参考答案
第一步:数据准备与市场"本土化"体检。清洗价格与财务数据(剔除生存偏差——必须包含退市股票;财务数据按披露日对齐,防前视偏差);识别本市场特有的微观结构问题并制定处理规则——对应 A 股的壳价值污染(剔除市值最低 30%)、涨跌停与长期停牌(参考 Asness et al. 2020 式的变量改造)、新股炒作期剔除等。易犯错误:直接照搬美股规则(如 NYSE 断点逻辑),无视本地制度摩擦。
第二步:候选因子的单因子检验。从有理论出身的特征出发(规模、价值、盈利、投资、动量、换手率/流动性等),用排序法(第 2 章)逐个检验:分组单调性、多空组合收益、Newey–West t 值;再与市值双重排序初步剔除规模的干扰。易犯错误:把几十个变量全试一遍挑显著的——多重检验下必须提高 t 门槛(≥3.0)并保留"试过多少个"的完整记录。
第三步:Fama–MacBeth 回归定"被定价"名单。用特征作暴露、控制全部候选特征做逐期截面回归(含截距、去极值),确认哪些因子在多元框架下仍有显著溢价(本章 4.2 的做法);用影响系数比较强弱。易犯错误:把排序法显著当成被定价——单变量显著可能只是搭了别的因子的便车。
第四步:构造因子并剔除冗余。对入选特征按 2×3 模板构造因子(本地断点、组合内市值加权、组间等权);计算因子相关矩阵,对高相关因子做张成回归(练习 4.1),α 不显著者剔除;警惕"EP 式"的混合变量——若某因子可分解为两个维度的乘积(如 EP=BM×ROE),优先用分解后的纯因子。易犯错误:保留一对高相关因子(如 EP 价值与 ROE 盈利并存),导致模型内多重共线、λ 估计不稳。
第五步:模型确定、比较与验证。候选模型控制在 3~5 因子、每个因子说得出经济含义(简约性);用一组不参与构造模型的异象组合做 α 检验 + GRS 检验,与基准模型(CAPM、本地版 FF3)比较(本章 4.3 的做法);稳健性:子区间(防结构变化)、剔除小市值、滚动窗口;最理想的是留出严格的样本外区间或用其他相似市场做外部验证。易犯错误:用同一段样本既挑因子又比模型还下结论——本章 4.3 已示范过窗口对结论的翻转能力;样本内的胜负必须打折听。
贯穿始终的原则:每个因子要有先于数据的经济学故事(Fama and French 2018);显著性门槛从严;所有"研究者自由度"(断点、股票池、窗口)都做敏感性分析并如实汇报。