跳转至

M07 主流因子与异象

层级:L2 因子投资 | 优先级:★★★ | 预计学时:16 小时 对应原书:因子第 3–5 章 前置知识:M05 的因子溢价与 HML 回撤;M06 的排序、截距和动量十分位。 读书笔记:因子第 3–5 章的因子定义 状态:reviewed 数据截至:2026-08|最近复核:2026-10-22


学习目标

  1. 写出价值、盈利、投资、动量各自在形成日用什么会计或价格数据,以及收益从哪个月开始计。
  2. 在同一份 202608 五因子月频上读出 1963-07 至 2026-08 的算术溢价,并把它和 M05 从 1926 年起的三因子表分开。
  3. 手算 HML 对市场、规模、盈利、投资回归后,均值里有多少来自 CMA,截距还剩多少。
  4. 用 HML 与 Mom 的相关系数解释各持一半时夏普升到 0.66,同时年化收益仍低于动量本身。
  5. 说明做多、杠杆上限 1.0 的港美股账户拿不到自融资多空的空头腿,2022 年的因子正负号也不是账户涨跌。

本章知识拓扑图

flowchart TB
    DEF["形成日已公布的账面、利润、资产和过去价格"] --> PORT["2x3 或 30/70 组合"]
    PORT --> FF["French 月频因子,未扣借券和冲击"]
    FF --> ALPHA["Alpha 模块:哪一段溢价还在"]
    FF --> RISK["风险模块:暴露,尤其是 HML 对 CMA"]
    FF --> COST["成本模块:空头、印花税、换手"]
    ALPHA --> ACCT["个人账户:做多,杠杆上限 1.0"]
    COST --> ACCT
    RISK --> ACCT

因子库回答的是研究组合的月均。账户要再经过做多约束、借券名单和费用。M06 负责检验步骤,本章把步骤用到具体定义上。


🟢 入门层:这些溢价在和谁做交易

1. 六条序列各在赚哪一类差

Kenneth French 的五因子来自 Fama & French (2015, JFE 116(1))。动量因子沿用 Carhart (1997, JF 52(1)) 采用的 Jegadeesh & Titman (1993, JF 48(1)) 排序,French 库的实现是 NYSE 30/70、大盘与小盘各半。本章的数字只描述这两份月频文件,不描述某一只 ETF。

序列 多头相对空头 形成时用的信息 钱从哪类差里来
Mkt-RF 市场超额,不是多空 全市场相对一个月国库券 承担市场波动
SMB 小盘减大盘 市值 小盘的风险或交易摩擦;后一段窗口很弱
HML 高账面市值比减低账面市值比 上一财年账面,6 月末价格 便宜与贵的差。模型里常被投资因子吸收
RMW 高经营利润率减低经营利润率 收入、成本、利息、账面 盈利能力
CMA 低资产增长减高资产增长 总资产的变化 投资保守与激进的差
Mom 过去赢家减输家 形成月之前第 12 到第 2 个月的收益 价格延续。和价值的相关为负

规模的早期文献是 Banz (1981, JFE 9(1))。价值的早期文献是 Basu (1977, JF 32(3)) 的市盈率和 Fama & French (1992, JF 47(2)) 的账面市值比。盈利的近亲是 Novy-Marx (2013, JFE 108(1)) 的毛利润,分母和分子都与 RMW 不同。投资的近亲是 Titman, Wei & Xie (2004, JFQA 39(4)) 和 Cooper, Gulen & Schill (2008, JF 63(4))。

换手率在因子教材的 A 股章节里常单独列出。美股月频里更常被检验的近亲是短期反转和特质波动。本章不另报一条未在 French 文件上重算的换手溢价。

2. 股利折现给出的动机

Fama & French (2015) 用股利折现把账面市值比、盈利和投资连在一起:在账面市值比已经给定时,预期盈利更高、预期投资更低,对应更高的预期收益。因此五因子不是「再找两个碰巧显著的排序」,而是把价值拆开。拆开之后,HML 的月均截距可以接近 0,原始的 HML 月均却仍然为正。第 6 节用回归把这句话算成几个百分点。

flowchart LR
    BM["账面市值比已定"] --> HI["预期盈利更高"]
    BM --> LO["预期投资更低"]
    HI --> ER["预期收益更高"]
    LO --> ER
    ER --> RMW["RMW:高盈利减低盈利"]
    ER --> CMA["CMA:低投资减高投资"]

这是模型里的预期收益关系。它不保证下一年的 HML 为正,也不保证一只价值 ETF 的净值跟上 HML。


🟡 进阶层:定义、手算和 202608 文件

3. HML 的四角组合

Fama & French (1993, JFE 33(1)) 先按市值把股票分成小盘和大盘,再按账面市值比分成高、中、低。断点用 NYSE。HML 是两个高组的平均减去两个低组的平均,中组不进这个差:

HML = (R_SH + R_BH) / 2 − (R_SL + R_BL) / 2

符号 含义
R_SH 小盘且高账面市值比
R_BH 大盘且高账面市值比
R_SL 小盘且低账面市值比
R_BL 大盘且低账面市值比

大小盘各占一半,是为了不让 HML 再变成一条规模因子。五因子文件里的 SMB 则是账面市值比、经营利润率、投资三个 2×3 排序里规模组合的平均,和三因子文件里只从账面市值比排序得到的 SMB 不是同一列。

手算:某月四角收益为 2%、1%、0%、1%。

HML = (0.02 + 0.01) / 2 − (0 + 0.01) / 2 = 0.015 − 0.005 = 0.010

这一月的价值差是 1.0%。若四角都加上同一个市场收益,差值不变。所以 HML 的正负号不能当成「价值股这个月涨了」。

经营利润率用上一财年的收入减去销售成本、利息和销售及管理费用,再除以账面权益。投资率是总资产从 t − 2 财年到 t − 1 财年的变化,除以 t − 2 的总资产。RMW 是高盈利减低盈利,CMA 是低投资减高投资。分子和分母的定义以 Fama & French (2015) 为准。毛利润率 (收入 − 销售成本) / 资产 是另一篇论文的变量。

4. 6 月末形成,7 月才开始计收益

账面在财年结束后数月才进数据库。French 的年度再平衡把 t − 1 财年的会计数据用到 t 年 6 月末,持有期是 t 年 7 月到 t + 1 年 6 月。6 月当月的收益仍用上一轮的账面市值比。

把序列记在月末。6 月行上的值是新形成的账面市值比,ffill 会把它填到下一年 5 月,也会留在当年 6 月自己身上。当年 6 月的收益若乘这个值,就用上了同一月末才形成的信号。再 shift(1),7 月才拿到 6 月的值,下一年 6 月拿到的仍是上一轮。

月份 原始账面市值比 ffill 之后 再 shift(1),用于该月收益
2023-06 0.8 0.8 上一轮的值
2023-07 空 0.8 0.8
2024-06 1.1 1.1 0.8
2024-07 空 1.1 1.1
import pandas as pd


def july_to_june_signal(book_to_market: pd.Series) -> pd.Series:
    """6 月末形成的账面市值比,从 7 月的收益才开始用。

    ffill 把 6 月的值留在 6 月自己身上。当年 6 月的收益不能乘它,所以再 shift(1)。
    """
    formation = book_to_market.where(book_to_market.index.month == 6)
    return formation.ffill().shift(1)

动量的对齐已经在 M06:French 用 t − 12 到 t − 2,仓库的 XsMomentumStrategy 用结束于上月的 12 个月跨度。两条信号不要写成同一个 12-1。价值这里的 shift(1) 解决的是会计形成月,不是动量的跳月。

5. 1963-07 至 2026-08 的算术溢价

脚本 ../figures/M07/plot_ff5_windows.py 只读月频块,在空行处停下,因此年度块没有进入连乘。五因子 zip 缓存在 figures/M07/_cache/,动量沿用 M06 已下载的 Mom。版权文件不入库。样本是两份文件的交集:1963-07-01 至 2026-08-01,758 个月。算术年化是月均乘 12,夏普是月均除以月标准差再乘 √12。SMB、HML、RMW、CMA、Mom 不再减无风险利率。曲线未扣借券、印花税和冲击。

窗口 月数 市场 规模 价值 盈利 投资 动量
1963-07 至 2026-08 758 7.22% / 0.47 / 3.72 2.24% / 0.21 / 1.70 3.53% / 0.34 / 2.72 3.02% / 0.38 / 3.03 2.92% / 0.41 / 3.23 7.16% / 0.49 / 3.90
1963-07 至 2006-12 522 5.81% / 0.38 / 2.51 3.44% / 0.31 / 2.07 5.71% / 0.59 / 3.90 3.01% / 0.37 / 2.46 4.22% / 0.58 / 3.86 9.79% / 0.71 / 4.66
2007-01 至 2020-12 168 10.08% / 0.62 / 2.33 0.63% / 0.07 / 0.27 −5.32% / −0.53 / −1.99 2.80% / 0.51 / 1.90 −0.77% / −0.15 / −0.57 0.66% / 0.04 / 0.15
2021-01 至 2026-08 68 11.03% / 0.72 / 1.72 −3.03% / −0.29 / −0.69 8.60% / 0.61 / 1.44 3.60% / 0.32 / 0.77 2.07% / 0.20 / 0.47 3.01% / 0.21 / 0.50
2016-01 至 2025-12 120 12.96% / 0.82 / 2.60 −2.21% / −0.21 / −0.68 −0.49% / −0.04 / −0.12 3.55% / 0.47 / 1.48 −0.65% / −0.08 / −0.24 0.35% / 0.03 / 0.08

单元格是「算术年化 / 夏普 / iid t」。t 值的标准误按月收益独立同分布计算,本章这张表没有再做 Newey–West。2021–2026.08 只有 68 个月,t = 1.44 的价值反弹不能单独当成恢复已经完成。

左:三段窗口的算术年化。右:HML、Mom 与各持一半的累计倍数,对数刻度,未扣成本。

和 M05 的三因子文件并排时,只比同一条构造。市场超额和 HML 在两份文件里是同一套定义:M05 从 1926-07 起的 HML 算术年化是 4.22%,本章从 1963-07 起是 3.53%,起点不同。SMB 即使日期对齐也不相同。三因子 SMB 在 1963-07 至 2026-08 的算术年化是 1.77%,t = 1.35。五因子 SMB 是 2.24%,t = 1.70。2022 年连乘,三因子 SMB 为 −7.35%,五因子 SMB 为 −1.35%。引用规模时要写明是哪一个文件。

Mom 从 1963 年起的算术年化是 7.16%,t = 3.90。M06 从 1927 年起的 Mom 是 7.35%,十分位高减低是 13.62%。7.16% 不是 13.62%。1963 以来这条 Mom 的最大回撤是 −57.78%,而且整个回撤落在 2007–2020 窗口内部。它不包括 M06 十分位在 1932-08 的 −77.66%。

6. HML 的均值几乎是 CMA 的均值

五因子像一份全家桶。套餐里已经有保守投资(CMA)和盈利(RMW)时,单点价值(HML)的独立加价会被套餐认领。 这份 758 个月的表上,HML 算术溢价 3.53 个点里,约 2.93 个点是 CMA 斜率乘投资因子年化,截距是 −0.27 个点,t = −0.28。 截距接近 0 说的是模型里的冗余,不是价值股从此不能出现在只做多账户里。账户没有 HML 的空头腿。 只做多价值 ETF 的净值也不是 HML 这一列。套餐认领的是多空因子的均值,不是你的持仓。

在 758 个月上,把 HML 对截距、Mkt-RF、SMB、RMW、CMA 做经典 OLS。标准误没有做 Newey–West。残差自由度是 758 − 5 = 753。

Rₜ^HML = α + β_M Rₜ^Mkt + β_S Rₜ^SMB + β_R Rₜ^RMW + β_C Rₜ^CMA + εₜ

项 系数 经典 t
月截距 α −0.000222 −0.28
Mkt-RF 0.0234 1.20
SMB 0.0986 3.52
RMW 0.1574 4.33
CMA 1.0029 24.92

R² = 0.483。截距接近 0 说的是月均被另外四列的均值解释掉。R² 说的是月度波动里有 48.3% 落在这四列的线性组合上,两句不是同一句。CMA 的斜率约等于 1,t = 24.92,是冗余的主要通道。RMW 的斜率是正的 0.157,不是负的。

用脚本打印的年化和斜率回乘,看 3.53% 从哪来。年化贡献等于「该因子的算术年化 × 斜率」,截距贡献等于月截距乘 12:

来源 计算 年化贡献
市场 0.0722 × 0.023362 0.17 个百分点
规模 0.0224 × 0.098633 0.22 个百分点
盈利 0.0302 × 0.157372 0.48 个百分点
投资 0.0292 × 1.002920 2.93 个百分点
截距 −0.000222 × 12 −0.27 个百分点
合计 五项相加 3.53 个百分点

3.53% 的原始价值溢价里,约 2.93 个百分点是投资因子的暴露,截距是 −0.27 个百分点。Fama & French (2015) 说的「HML 在五因子里冗余」,在这份 1963–2026 的月频上就是这张表。冗余指的是模型截距,不是「价值股票从此不能出现在账户里」。HML 和 Mom 的相关仍是 −0.190,组合里的分散作用留在第 7 节。

相关也要按文件读:HML 与 RMW 为 0.095,HML 与 CMA 为 0.682,HML 与 Mom 为 −0.190。Novy-Marx 的毛利润率可以和账面市值比负相关。那不是这列 RMW。

7. 价值与动量各持一半

Asness, Moskowitz & Pedersen (2013, JF 68(3)) 讨论价值和动量在多类资产上的负相关。本章只核算 French 这两列,1963-07 至 2026-08:

R_(½) = ½ R_HML + ½ R_Mom

σ_(½)² = ¼(σ_H² + σ_M² + 2ρσ_Hσ_M)

符号 本章的数
σ_H 10.29%
σ_M 14.57%
ρ −0.190
混合的算术年化 5.34%
混合的波动 8.08%
混合的夏普 0.66

把平方代进去:

σ_H² = 0.1029² = 0.01059, σ_M² = 0.1457² = 0.02123

2ρσ_Hσ_M = 2 × (−0.190) × 0.1029 × 0.1457 = −0.00570

σ_(½) = ½ √(0.01059 + 0.02123 − 0.00570) = 0.0808

夏普 0.0534/0.0808 = 0.66。若相关为 0,波动是 8.92%,夏普约 0.60。负相关把夏普从 0.60 抬到 0.66。混合的年化 5.34% 低于动量自己的 7.16%,高于价值自己的 3.53%。夏普变高,是因为波动降得更多,不是因为混合赚得比动量多。

HML 单独的夏普是 0.34,Mom 是 0.49。0.66 高于两者。这是两条自融资序列的纸面混合,没有借券费。做多账户不能按这个权重同时做空贵的股票和输家。

8. 模型菜单:本章量过的只有 FF5 加 Mom

模型 文献 相对前一个模型多出来的内容 本章是否重算了它的持仓
FF3 Fama & French (1993) 市场、SMB、HML 溢价在 M05。本章只用它对照 SMB
Carhart 四因子 Carhart (1997, JF 52(1)) 加上动量 动量列已并进上表,截距未对四因子重估
FF5 Fama & French (2015) RMW、CMA 是,第 5–6 节
FF6 Fama & French (2018, JFE 128(2)) 五因子再加动量 只报告 HML 与 Mom 的相关和混合夏普
q 因子 Hou, Xue & Zhang (2015, RFS 28(3)) 市场、规模、投资、ROE 否
q5 Hou, Mo, Xue & Zhang (2021, RF 25(1)) 再加预期增长 否
错定价因子 Stambaugh & Yuan (2017, RFS 30(4)) 由一组异象聚类 否
融资与盈余漂移 Daniel, Hirshleifer & Sun (2020, RFS 33(4)) 两条行为因子 否
中国三因子 Liu, Stambaugh & Yuan (2019, JFE 134(1)) 去掉最小 30% 市值,价值用 E/P 否

q 因子的盈利是 ROE,不是 RMW。HML Devil(Asness & Frazzini, 2013, JPM 39(4))用更及时的价格,也不是本章这列年度再平衡的 HML。没有重算的模型,不写夏普。

9. 异象:方向、出处、以及本章不写的幅度

下面每一条都有原始论文里的方向。幅度随样本、加权和发表后的窗口变化。本章没有在 French 文件之外另跑这些排序,所以不写它们的百分比,F-Score 除外:那个 23% 是原文样本内的对冲收益,附有起止年份。

名称 出处 原文方向 使用时先卡住的地方
F-Score Piotroski (2000, JAR 增刊) 高账面市值比内部,高分减低分,1976–1996 年化约 23% 9 个二元信号都要有当时已披露的财报。23% 不是当前 ETF 的收益
G-Score Mohanram (2005, RAS 10) 在成长股里用盈利和稳健会计打分 与 F-Score 的股票池不同
应计 Sloan (1996, TAR 71(3)) 高应计的随后收益更低 现金流和利润的披露时点
盈余漂移 Bernard & Thomas (1989, JAR) 意外盈余之后收益仍朝同一方向 公告日,不放进月频因子排序。细节留给事件专题
净发行 Pontiff & Woodgate (2008, JF 63(2)) 股本增加预示较低收益 发行完成之后才能用
特质波动 Ang, Hodrick, Xing & Zhang (2006, JF 61(1)) 高特质波动的随后收益更低 先定义残差用的因子
最大日收益 Bali, Cakici & Whitelaw (2011, JFE 99(2)) 过去最大日收益高的股票随后更低 彩票型股票,和换手、波动挤在一起
质量 Asness, Frazzini & Pedersen (2019, RAS 24(1)) 盈利、成长、安全、派息合成 合成权重是论文的选择

复制率不要收成一句「大多数因子都能复制」。M06 已经分开写过:Hou, Xue & Zhang (2020, RFS 33(5)) 的程序下,65% 的异象 |t| 不到 1.96。Jensen, Kelly & Pedersen (2023, JF 78(5)) 在更可比的美国原始收益口径下复制率是 55.6%;他们改用截距、贝叶斯和全球样本后是 82.4%。82.4% 不是 55.6% 的同一定义。

同一篇 2023 年的论文把 153 个因子、93 个国家收成 13 个主题。在含多重检验调整的贝叶斯模型里,13 个主题中有 11 个的复制率高于 50%,例外是低杠杆和规模。13 个主题代表组合的事后切点组合里,10 个权重显著为正,被挤出的三个主题是盈利、投资和规模。这是他们的主题定义和事后切点组合,不是对本章 RMW、CMA 月均的否定。RMW 在 2016–2025 的算术年化仍是 3.55%,t = 1.48。两套结果可以同时留在表上。


🔴 深入层:边界和账户约束

10. 冗余、拥挤和做多

模型里的截距接近 0,表示 HML 的平均收益可以被 RMW 和 CMA,尤其是 CMA,线性解释。账户若只能做多,买的是高账面市值比的一腿,里面仍有市场。这一腿不是回归残差,也不是 HML。

价值拥挤时,高账面市值比股票的估值差会在去杠杆里一起收缩。2007–2020 的 HML 算术年化是 −5.32%,t = −1.99,窗口内最大回撤 −57.49%。从 2006-12 高点到 2020-09 的回撤是 −57.78%,和第 5 节全样本最大回撤是同一次。Maloney & Moskowitz 在 2020 年 5 月的工作论文 Value and Interest Rates 里的结论是:利率与价值的理论关系并不单向,实证关系依赖规格、经济意义有限,不能当作稳定的择时信号。本章不给一个未从该文表格抄出的 R²。

规模在五因子文件的全样本 t = 1.70,2016–2025 的算术年化是 −2.21%,t = −0.68。Alquist, Israel & Moskowitz (2018, JPM 45(1)) 讨论规模溢价对一月效应、微盘和发表后样本的敏感。Asness, Frazzini, Israel, Moskowitz & Pedersen (2018, JFE 129(3)) 讨论在控制低质量之后规模是否还在。本章的表只说明:换窗口之后,这条 SMB 的月均可以变号。

11. 港美股账户拿不到的部分

本轮风控里的杠杆上限是 1.0,见 docs/risk_policy.md。自融资的 HML 或 Mom 要做空一腿。杠杆上限 1.0 时,不能为了复制这条多空再融资,也不能把低波动一腿加杠杆。空头还要借到券。港股卖空受指定可沽空名单约束。美股借券费随个股变化,French 的月收益里没有这一项。

港股印花税自 2023-11-17 起买卖双方各 0.1%(M00)。学术因子按月再平衡的换手,乘上这一税率之后,会吃掉截面上很薄的月均。持有一只价值或动量 ETF,付的是基金费用和基金内部换手,不是上表里的 0。基金净值仍然带市场,不等于 HML 或 Mom。

A 股的壳价值和反转,Liu, Stambaugh & Yuan (2019) 用「去掉最小 30% 市值、价值用盈利价格比」来处理。本章不把他们的中国样本百分比写成港美股的预期。港股小盘的买卖价差和可借券数量,会让等权研究组合更难实施。这是约束,不是一条新的溢价估计。


真实案例

案例 1:2006-12 的高点,到 2026-08 仍低 32.06%

HML 自融资净值的高点在 2006-12,低点在 2020-09,回撤 −57.78%。这和 M05 三因子文件上的同一次回撤一致。2026-08 的净值相对 2006-12 的高点仍低 32.06%。右图对数刻度上,蓝线在 2007 年之后没有回到自己的高点。

2007–2020 的算术年化是 −5.32%,t = −1.99。2021-01 至 2026-08 的算术年化是 8.60%,夏普 0.61,t = 1.44,只有 68 个月。2016–2025 这十个日历年的算术年化是 −0.49%,t = −0.12。正的短窗口和接近 0 的十年可以同时出现,因为 2022 年单年的连乘是 +31.74%,前后年份把十年平均拉回 0 附近。

因此「价值已经失效」和「回撤已经走完」都超出这张表。表上能说的是:从 2006 年高点算起,净值还没回去;最近十年的月均与 0 分不开;2021 年以来的正均值在 68 个月里 t 值只有 1.44。

案例 2:2022 年因子大涨,不是价值 ETF 的涨幅

五因子文件 2022 年十二个月连乘:Mkt-RF −20.99%,五因子 SMB −1.35%,HML +31.74%,RMW +8.45%,CMA +29.09%,Mom +20.20%。HML 的 +31.74% 与 M05 三因子文件相同。市场超额差 5 个基点:三因子文件是 −21.04%。SMB 差得远,因为两列 SMB 的构造不同。

假想一个组合恰好等于「市场超额加上一整份 HML」。2022 年的和是

−0.2099 + 0.3174 = 0.1075

即 +10.75%。这是两条研究序列相加,要求账户真的持有 HML 的空头腿。只买高账面市值比、不卖低账面市值比的基金,拿不到这 10.75%,更拿不到 HML 单独的 31.74%。市场总收益还要再加国库券。M05 把 2022 年的市场总收益记为 −19.92%。做多账户的起点仍是这个市场,而不是 HML。

这一年 Mom 也是 +20.20%。负相关是 758 个月的 −0.190,不是「每一年价值和动量都相反」。

案例 3:2007–2020 的动量,以及别人论文里的波动缩放

这条 Mom 在 2007-01 至 2020-12 的算术年化是 0.66%,t = 0.15,窗口内最大回撤 −57.78%。该数等于 1963 以来全样本的最大回撤,所以这段就是这条序列最深的一次。M06 的十分位高减低在 2009-03、2009-04 分别是 −39.19% 和 −45.18%。Daniel & Moskowitz (2016, JFE) 表 2 的 WML 是 −42.28% 和 −45.52%。三套空头宽度不同。本章的 −57.78% 是 1963 年以来 Mom 的累计回撤,不是那两个单月。

Barroso & Santa-Clara (2015, JFE 116(1)) 用过去六个月的已实现波动,把他们自己的动量组合缩放到约 12% 的常数波动。论文报告的夏普从 0.53 到 0.97,最小单月从 −78.96% 到 −28.40%,最大回撤从 −96.69% 到 −45.20%。这些是他们的构造和样本,包含 1930 年代那种深度回撤。不要把 0.53 到 0.97 写成 French 这列 Mom 的改进,也不要写成 M06 十分位的改进。他们的原始最小单月接近、但不等于 1932-08 的 −77.66%。

杠杆上限 1.0 的账户复制不了「做空输家再按波动加杠杆」。单位净值的回撤闸门(M04)也不会让一条自融资研究曲线上的 −57% 直接变成可以继续加仓的信号。

方法论来源

概念 / 模型 核心文献或规范出处
五因子 Fama & French (2015), JFE 116(1)
动量因子 Carhart (1997), JF 52(1),沿用 Jegadeesh & Titman (1993)
规模与价值 Banz (1981), JFE 9(1);Basu (1977), JF 32(3);Fama & French (1992), JF 47(2)
盈利与投资 Novy-Marx (2013), JFE 108(1);Titman, Wei & Xie (2004), JFQA 39(4);Cooper, Gulen & Schill (2008), JF 63(4)
HML 构造 Fama & French (1993), JFE 33(1)
图 figures/M07/plot_ff5_windows.py

💡 思考回顾与巩固

核心认知纠偏

误区 反例 用法
本章 HML 的 3.53% 小于 M05 的 4.22%,所以价值在衰减 4.22% 从 1926-07 起,3.53% 从 1963-07 起 比窗口先对齐起点
五因子 SMB 就是 M05 的 SMB 同一段 1963–2026,三因子 SMB 为 1.77%,五因子为 2.24%。2022 年分别是 −7.35% 和 −1.35% 写明文件
HML 冗余,所以账户不需要价值暴露 月截距 t = −0.28,但 HML 与 Mom 的相关是 −0.190,各半夏普 0.66 截距和组合分散分开写
RMW 与 HML 负相关 本文件相关是 +0.095。与 HML 相关 0.682 的是 CMA 相关按列计算
2021 年以来 HML 年化 8.60%,回撤已经结束 相对 2006-12 高点,2026-08 仍低 32.06%。这段 t = 1.44,只有 68 个月。2016–2025 年化 −0.49% 均值、t 值和相对高点的水平一起看
Mom 的 7.16% 就是十分位高减低 十分位是 13.62%,且从 1927 年起。2007–2020 的 Mom 只有 0.66% 沿用 M06 的三套动量数字
Barroso 把动量夏普提高一倍,可以直接用在 French 列上 0.53 到 0.97 是他们的组合、他们的样本 引用时写出构造
2022 年 HML +31.74%,价值基金大约也涨三成 市场超额同年是 −20.99%。+31.74% 含空头腿 因子收益和基金净值分开

费曼自测

  1. 股利折现说,账面市值比给定以后,高盈利和低投资对应更高的预期收益。为什么 HML 的月截距还可以是 −0.022%?
  2. 各持一半的夏普是 0.66,高于 HML 的 0.34 和 Mom 的 0.49。混合是否赚得比动量更多?
  3. 2022 年 HML 连乘 +31.74%。一只只做多的价值基金为什么不能把这个数当成自己的年收益?
  4. Jensen、Kelly 与 Pedersen 的事后切点组合挤出了盈利和投资。这是否推翻第 5 节里 RMW 年化 3.02%、t = 3.03?
自测要点 1. 折现关系说的是预期收益如何由三样东西一起决定。回归把 HML 的月均分到市场、规模、RMW 和 CMA 上。CMA 的斜率是 1.003,贡献了大约 2.93 个百分点,截距只剩 −0.27 个百分点,t = −0.28。原始月均为正,和截距接近 0,可以同时成立。R² = 0.483 还说明有一半以上的月度波动不在这四列里。 2. 没有。混合的算术年化是 5.34%,动量自己是 7.16%。夏普更高是因为波动从 14.57% 和 10.29% 降到 8.08%。相关 −0.190 相对零相关,只把夏普从大约 0.60 抬到 0.66。 3. HML 是高账面市值比减低账面市值比。基金若只买高的一腿,收益里仍有市场。2022 年市场超额是 −20.99%。「市场超额加一整份 HML」这个假想组合是 +10.75%,而且它仍然要求持有空头。只做多的基金两边都不是。 4. 不推翻。3.02% 是 French RMW 这一列的月均乘 12。被挤出的是他们 13 个主题里的盈利代表,在与其他主题一起估计的事后切点组合中权重不显著。主题定义、加权和「单独一条序列的 t 值」不是同一次检验。2016–2025 的 RMW 是 3.55%,t = 1.48,这段本身也还没有把 t 值留在 2 以上。

四维习题

A. 概念题

  1. 写出 HML 的四角公式。为什么大小盘各占一半?五因子 SMB 和三因子 SMB 差在哪一步构造?
  2. 账面市值比为什么从 7 月才开始乘收益?把第 4 节的四行表用自己的话走一遍。
  3. Fama & French (2015) 加入 RMW 和 CMA 的股利折现动机是什么?它和「这两个因子在 1963–2006 的 t 值高于 2」哪一句是经济动机、哪一句是样本结果?
  4. 列出 FF3、Carhart、FF5、q 因子各自包含的因子。哪些是本章重算过持仓收益的?

B. 计算题

  1. 四角收益 2%、1%、0%、1%。计算 HML。若四个数同时加 3%,HML 变不变?
  2. 用 σ_H = 10.29%、σ_M = 14.57%、ρ = −0.190 计算各持一半的波动。算术年化 5.34% 时夏普是多少?相关改为 0 时,波动和夏普大约是多少?
  3. 用第 6 节打印的年化和斜率,计算 CMA 对 HML 年化均值的贡献,以及月截距的年化贡献。
  4. 2022 年 Mkt-RF 为 −20.99%,HML 为 +31.74%。「市场超额加一份 HML」的和是多少?这个和为什么还不是价值 ETF 的收益?

C. 编程实战题

  1. 运行 figures/M07/plot_ff5_windows.py,核对 758 个月、五段窗口和 HML 相对 2006-12 高点在样本末端仍低 32.06%。确认年度块没有读入。
  2. 在同一脚本的输出里读出 HML 对四列的系数、t 值和 R²。说明标准误是经典 OLS。
  3. 用 M05 的三因子文件计算 1963-07 至 2026-08 的 SMB,并与五因子 SMB 的 2.24% 并列。再打印两个文件的 2022 年 SMB 连乘。

D. 个人实战思考题

  1. 杠杆上限 1.0、港股印花税买卖双方各 0.1%、卖空还受指定证券名单约束。上表里的哪几列是这个账户不能直接持有的?
  2. 2016–2025 的 HML 年化 −0.49%,t = −0.12,同时 2026-08 的净值仍比 2006-12 低 32.06%。你的研究备忘录里应如何回答「价值是失效还是周期」?
  3. 若卫星仓只准备放三种暴露,本章的表支持哪三种,又明确不支持把哪一个全样本 t 值当成未来的月均?
完整参考答案与解析 **A1.** `HML = (R_SH + R_BH) / 2 − (R_SL + R_BL) / 2`。大小盘各半,是为了让账面市值比的差不要再携带规模差。五因子 SMB 把三个 2×3 排序(账面市值比、经营利润率、投资)里的规模组合再平均。三因子 SMB 只来自账面市值比那一次排序。所以同一日期上的两个 SMB 可以差出一整年的符号,2022 年就是 −1.35% 对 −7.35%。 **A2.** t − 1 财年的账面要等报表出来才能用,French 把它放在 t 年 6 月末形成组合。持有期从 7 月开始,到下一年 6 月结束。表中 2023-06 的 0.8 经 `ffill` 后会留在 2023-06 本身,`shift(1)` 把它挪到 2023-07,并让 2024-06 的收益仍乘 0.8。2024-07 才改乘 1.1。少一次 `shift(1)`,当年 6 月的收益就会用到当月末才形成的账面市值比。 **A3.** 经济动机是:账面市值比给定时,更高的预期盈利和更低的预期投资对应更高的预期收益。1963–2006 的 RMW t = 2.46、CMA t = 3.86 是这段样本的结果。动机不依赖这两格 t 值。2007–2020 的 CMA 年化 −0.77%、t = −0.57,动机仍然是那句折现,样本结果换成了这段为负。 **A4.** FF3 是市场、SMB、HML。Carhart 再加动量。FF5 是市场、SMB、HML、RMW、CMA。q 因子是市场、规模、投资和 ROE。本章重算的是 French 五因子月频加 Mom 的窗口溢价,以及 HML 对另外四列的经典 OLS。q 因子和 HML Devil 没有重算。 **B5.** (0.02 + 0.01) / 2 − (0 + 0.01) / 2 = 0.010。四个角同时加 3%,加减后相互抵消,HML 仍是 1.0%。这就是多空对市场水平平移不敏感的原因,也是它不能代表「价值股涨了 1%」的原因。 **B6.** 0.1029² = 0.01059,0.1457² = 0.02123,交叉项 2 × (−0.190) × 0.1029 × 0.1457 = −0.00570。混合波动 (1/2) √0.02612 = 0.0808,夏普 0.0534/0.0808 = 0.66。相关为 0 时,波动 (1/2) √0.03182 = 0.0892,夏普约 0.0534/0.0892 = 0.60。 **B7.** CMA 的贡献是 0.0292 × 1.002920 = 0.0293,即 2.93 个百分点。截距的年化贡献是 −0.000222 × 12 = −0.00266,即 −0.27 个百分点。市场、规模、盈利的贡献大约是 0.17、0.22、0.48 个百分点。五项相加回到 HML 的 3.53%。 **B8.** −0.2099 + 0.3174 = 0.1075。这个和要求组合里既有市场超额,又有 HML 的多头和空头。只做多的价值基金没有空头腿,净值也不能从 HML 里把市场剔掉。M05 的 2022 年市场总收益是 −19.92%,做多账户更接近这一侧,而不是 +31.74%。 **C9–C11.** 与 `figures/M07/plot_ff5_windows.py` 同一契约,脚本已对 202608 版月频运行。样本 1963-07 至 2026-08,758 个月。窗口表就是第 5 节。HML 高点 2006-12-01,低点 2020-09-01,回撤 −57.78%,样本末端相对高点 −32.06%。回归月截距 −0.000222,t = −0.28,CMA 斜率 1.0029,t = 24.92,R² = 0.483,自由度 753。标准误是残差方差乘 (X′X)⁻¹,没有 Bartlett 核。三因子 SMB 在同一日期段的算术年化是 1.77%,t = 1.35。2022 年连乘:三因子 SMB −7.35%,五因子 SMB −1.35%。解析函数在空行处停止,年度块的日期不是六位年月,不会进入月频表。
import pandas as pd


def july_to_june_signal(book_to_market: pd.Series) -> pd.Series:
    # 6 月的形成值要等到 7 月的收益才使用,所以 ffill 之后仍 shift(1)。
    formation = book_to_market.where(book_to_market.index.month == 6)
    return formation.ffill().shift(1)
**D12.** HML、RMW、CMA、Mom 和 SMB 都是多头减空头。杠杆上限 1.0 时不能再借钱把空头腿配平,港股还有指定可沽空名单,借券费也不在 French 月收益里。市场超额是做多市场相对国库券,账户可以持有市场,但持有的是总收益,不是已经减去国库券的 Mkt-RF。印花税按成交额收取,月度换仓的研究组合在港股上还要先过 M00 的成本量级。 **D13.** 备忘录写三句就够:2016–2025 的月均与 0 分不开(年化 −0.49%,t = −0.12);从 2006-12 高点到 2026-08 仍低 32.06%;2021 年以来年化 8.60% 的 t 值是 1.44,样本 68 个月。不把其中任何一句升级成「失效已定论」或「周期已结束」。利率是否解释了这段回撤,沿用 Maloney & Moskowitz (2020) 的结论:关系依赖规格,不是稳定的择时信号。本章没有另估一个 R²。 **D14.** 表上全样本 t 值较高、而且 2016–2025 没有变号的是市场(12.96%,t = 2.60)和 RMW(3.55%,t = 1.48,全样本 t = 3.03)。第三种若要分散,纸面上是价值和动量的混合:相关 −0.190,各半夏普 0.66,但 2016–2025 这两列的年化分别是 −0.49% 和 0.35%,t 值都在 0 附近。卫星仓只能做多时,这三种都变成「市场加上倾斜」,不是上表的多空。全样本不支持拿来当未来月均的,是 SMB 的 2.24%(2016–2025 为 −2.21%)和 Mom 的 7.16%(2007–2020 为 0.66%,2016–2025 为 0.35%)。HML 的 3.53% 同样要配上截距 −0.27 个百分点和仍未收复的 −32.06%。

📌 章节知识总结

一句话核心洞察

  1. 五因子月频从 1963-07 到 2026-08 共 758 个月。HML 算术年化 3.53%,其中约 2.93 个百分点是对 CMA 的暴露,月截距 −0.022%,t = −0.28。
  2. 五因子 SMB 不是三因子 SMB。同一日期段上是 2.24% 对 1.77%,2022 年是 −1.35% 对 −7.35%。
  3. HML 与 Mom 的相关是 −0.190。各持一半的年化 5.34%、夏普 0.66。夏普高于动量,收益低于动量。
  4. 2026-08 的 HML 净值仍比 2006-12 高点低 32.06%。2016–2025 的 HML 年化是 −0.49%。2021 年以来的 8.60% 只有 68 个月,t = 1.44。
  5. 做多且杠杆上限 1.0 的账户持有的是市场加上倾斜。2022 年 HML +31.74% 与市场超额 −20.99% 要同时写上。

公式与样本

对象 表达式或数值 前提
HML (R_SH + R_BH) / 2 − (R_SL + R_BL) / 2 NYSE 断点,年度再平衡
持有期 7 月至下一年 6 月 信号 ffill 后再 shift(1)
算术年化 月均 × 12 不是净值 CAGR
因子夏普 月均 / 月标准差 × √12 多空不再减 R_f
HML 回归 对 Mkt-RF、SMB、RMW、CMA 经典 OLS,自由度 753
月截距 −0.000222,t = −0.28 R² = 0.483,不是 HAC
CMA 斜率 1.003,t = 24.92 冗余的主通道
各半波动 1/2 √(σ_H² + σ_M² + 2ρσ_Hσ_M) ρ = −0.190 时为 8.08%
样本 1963-07 至 2026-08,758 个月 不含年度块
相对高点 2026-08 仍低 32.06% 高点 2006-12,低点 2020-09 为 −57.78%
2016–2025 HML 年化 −0.49%,t = −0.12 120 个月

跨模块

结论 交给 位置
截距接近 0 仍要把原始溢价和窗口一起报告 因子检验的报告格式 M06,../figures/M07/plot_ff5_windows.py
7 月才使用 6 月的账面 任何会计信号的时点 与 ../../../src/quant/strategies/xs_momentum.py 的跳月是两类滞后
多空不是账户收益 仓位和杠杆上限 1.0 M04,../../../docs/risk_policy.md
2009 与 1932 的动量跌幅 不要和本章 Mom 的 −57.78% 回撤混用 M06
发表、拥挤、多重检验 因子动物园 M08
公告日上的盈余漂移 事件窗口,不进月频排序 M19

学习指引

  • 精读:因子第 3 章的定义和第 4 章的模型沿革。第 5 章的异象先记方向和披露时点。书里的 A 股表不要和本章的美股月频对减。
  • 对照:数字以脚本对 202608 版 French 月频的打印为准。三因子文件只用于 SMB 和 2022 年市场超额的对照。
  • 项目:本章不新增交易因子,也不把 HML 或 Mom 写进下单。会计信号若以后进研究笔记,形成月和持有月按第 4 节的 shift(1) 写明。
  • 下一步:M08 处理发表后衰减和多重检验。本章的窗口表已经表明,全样本 t 值盖不住 2007–2020 和 2016–2025。

自检清单

  • 能手算四角收益下的 HML = 1.0%,并说明整体加一个常数后差值不变
  • 能把 6 月的账面市值比移到 7 月才使用,指出少一次 shift(1) 会碰到哪一个月
  • 能复述 758 个月里六条序列的算术年化,并说出五因子 SMB 与三因子 SMB 的 2.24% 和 1.77%
  • 能把 HML 年化 3.53% 拆成 CMA 的 2.93 个百分点和截距的 −0.27 个百分点
  • 能说明各半夏普 0.66 对应的年化只有 5.34%,以及 2026-08 的 HML 仍比 2006-12 低 32.06%
  • 能把 2022 年的 HML +31.74% 和市场超额 −20.99% 放在同一个账户约束里