M05 资产定价理论基础¶
层级:L2 因子投资 | 优先级:★★ | 预计学时:10 小时 对应原书:因子 第 1 章、附录 A;GK 第 2、7 章 前置知识:M01 的回归与 t 值;M04 的杠杆上限。 读书笔记:因子第 1 章 · GK 第 2、7 章 状态:reviewed 数据截至:2026-08|最近复核:2026-10-22
学习目标¶
- 用
E[Rᵢ] − R_f = αᵢ + βᵢ′λ分清因子、模型、异象和你账户里的超额。 - 手算一段四期 CAPM 回归,并说出证券市场线过平与主动管理算术是两件不同的事。
- 从 Kenneth French 月频三因子读出溢价、t 值和 HML 的一段回撤。数字来自 202608 版 CRSP 文件,不是书里的表。
- 用两状态的随机折现因子说明:溢价对应的是「坏状态下表现差」。
- 区分风险补偿和错误定价的可观察预测。个人账户的杠杆上限是 1.0,复制不了带杠杆的多空因子。
本章知识拓扑图¶
flowchart TB
PAY["资产的预期超额收益"] --> SPLIT["α + β′λ"]
SPLIT --> BETA["β:和因子一起动的部分"]
SPLIT --> ALPHA["α:这个模型没解释的部分"]
BETA --> PREM["λ:因子自己的预期超额"]
PREM --> RISK["坏状态里亏得更多"]
ALPHA --> MIS["相对这个模型的异象"]
MIS --> LIMIT["做空、杠杆、费用挡住套利"]
LIMIT --> YOU["你的账户:杠杆 ≤ 1,空头不一定借得到"]
α 挂在模型上。换一组因子,原来的 α 可以变成新的 β。M14 才把账户收益拆回这些暴露。
🟢 入门层:预期收益在给谁付钱¶
1. 一个式子¶
石川等《因子投资:方法与实践》第 1 章把预期超额写成暴露和溢价的内积,再加上模型没接住的一项:
E[Rᵢ] − R_f = αᵢ + βᵢ′λ.
| 符号 | 含义 |
|---|---|
Rᵢ − R_f |
资产 i 的超额收益。R_f 与 Rᵢ 同一频率,这里先按年写 |
| βᵢ | 对每个因子收益的斜率,一列向量 |
| λ | 这些因子自己的预期超额,一列向量 |
| αᵢ | 上式减完之后剩下的预期超额 |
四个词都从这个式子长出来。
- 因子:一批资产共同进退、并且 λ 不是零的那个组合。市场、价值、动量是例子,不是名单的全部。
- 多因子模型:选定了 λ 里的那几项,并声称够用,于是所有资产的 α 都该靠近 0。
- 异象:在这一组因子下,α 明显离开 0。换模型,同一个现象可以不再是异象。
- 你看到的超额:相对标普 500 多出来的部分,常常是 β′λ。扣掉已知暴露之后还在的,才是这个模型下的 α。
低成本的因子 ETF 复制的是 β′λ。若账户的超额几乎都被这些 ETF 解释掉,自己交易支付的是换手,不是新的 α。
2. 钱从哪一类人手里来¶
定价模型不创造收益,它给收益标上来源。市场组合的溢价,来自有人在衰退里必须卖出、因而愿意把价格让给能持有的人。价值溢价若是风险补偿,来自价值股在某些坏状态下跌得更多,持有人要为这种跌法收费。若是错误定价,来自另一类人把价格推离了这个模型,而套利者没有把价格完全推回去。
两类来源对个人账户的账单不同。风险补偿要求你在那段坏状态里真的留在仓位上。错误定价要求你的交易成本和借券条件好过把价格推歪的那群人。两件可以叠在同一个因子上。检验放在第 8 节,不在这里宣布哪一个因子属于哪一类。
🟡 进阶层:CAPM、算术恒等式、折现因子¶
3. CAPM¶
Sharpe (1964, JF 19(3))、Lintner (1965, Review of Economics and Statistics 47(1))、Mossin (1966, Econometrica 34(4))。Sharpe 因此分享 1990 年诺贝尔经济学奖。
单期、均值方差、预期一致、能以同一利率借入借出时,只有与市场组合同向的那部分波动有价格。可被分散掉的残差没有价格:
E[Rᵢ] − R_f = βᵢ(E[Rₘ] − R_f), βᵢ = (Cov(Rᵢ, Rₘ)) / (Var(Rₘ)).
这时统一式子里只有一个因子,λ = E[Rₘ] − R_f,模型要求 αᵢ = 0。
四期手算。 下面四期超额收益的均值都是 0,所以截距就是 α,斜率就是 β。单位是每期的小数。
| 期 | 市场超额 x | 股票超额 y |
|---|---|---|
| 1 | 0.02 | 0.04 |
| 2 | −0.01 | −0.035 |
| 3 | 0.03 | 0.045 |
| 4 | −0.04 | −0.05 |
Σ x² = 0.0004 + 0.0001 + 0.0009 + 0.0016 = 0.003。
Σ xy = 0.0008 + 0.00035 + 0.00135 + 0.002 = 0.0045。
ˆβ = 0.0045/0.003 = 1.5, ˆα = ¯y − ˆβ¯x = 0.
残差是 0.01, −0.02, 0, 0.01。残差平方和 0.0006。含截距的回归残差自由度是 4 − 2 = 2,
s² = 0.0006/2 = 0.0003.
¯x = 0,于是
se(ˆβ) = √(0.0003/0.003) = √0.1 = 0.3162, t(ˆβ) = 1.5/0.3162 = 4.74.
se(ˆα) = √(0.0003/4) = 0.00866.
t(ˆα) = 0。自由度为 2 时,双侧 5% 的 t 临界值是 4.303。4.74 刚过这条线。四期回归只用来核对公式,不能当作证券定价的证据。临界值用的是 Student-t,不是大样本的 1.96。
证券市场线比 CAPM 平。 Black, Jensen & Scholes (1972) 和 Fama & MacBeth (1973, JPE 81(3)) 发现低 β 组合的平均收益高于 CAPM 直线,高 β 低于直线。Fama & French (1992, JF 47(2)) 在放进市值和账面市值比之后,β 对截面平均收益几乎没有额外解释。Frazzini & Pedersen (2014, JFE 111(1)) 把低 β 加杠杆、高 β 减杠杆,做成 β 中性的 BAB。他们报告的美股 BAB 在 1926 年至 2012 年 3 月的夏普是 0.78。解释是:借不到钱的人用高 β 股票代替杠杆,把高 β 的价格买高了。
0.78 是那篇论文里的多空、加杠杆、研究组合。它不是一只低波 ETF 的夏普,也没有扣你的借券费。本轮账户杠杆上限是 1.0(风险政策(docs/risk_policy.md)),复制不了「低 β 一边再加杠杆」这一腿。
4. 主动管理的算术不靠 CAPM¶
Sharpe (1991, FAJ 47(1)) 是持有人的记账恒等式。扣费之前,全体投资者的市值加权收益等于市场。被动投资者拿到市场之后,主动投资者这个整体在扣费前也等于市场。扣费之后,主动这一整体低于被动,差额是主动这一整体支付的费用。
这不是「CAPM 下的零和」。CAPM 说的是每只资产的 α 期望为 0。Sharpe 1991 在 CAPM 错误时仍然成立:只要收益按市值加权,主动组扣费前就是市场。你要跑赢市场,扣费后必须有别的持有人跑输。回购、指数调整和央行交易会在组别之间搬家,它们没有取消这条市值加权恒等式。
5. APT 只规定线性,不规定名字¶
Ross (1976, Journal of Economic Theory 13(3)):收益若由有限个共同因子加一个可分散的残差驱动,没有套利时,预期超额是暴露的线性函数。因子叫什么,APT 不回答。后面的文献分三条路填名字:
| 路线 | 因子从哪来 | 代表 |
|---|---|---|
| 宏观 | 工业生产、通胀、利差 | Chen, Roll & Ross (1986, Journal of Business 59(3)) |
| 特征组合 | 按公司特征做多空 | Fama–French 三因子、五因子 |
| 统计 | 主成分或带工具变量的主成分 | Kelly, Pruitt & Su (2019, JFE 134(3)) 的 IPCA |
可交易的特征组合能直接放进 λ。宏观序列还要再变成一套组合收益,个人账户才算得了暴露。统计因子的经济名字不稳定,M11 再谈风险模型里怎么用。
6. 有效市场是一套联合假设¶
Fama (1970, JF 25(2)) 把信息分成弱、半强、强三档。检验「价格是否已经反映信息」必须先写下一个定价模型。拒绝的时候,分不清是价格错了,还是模型少了一个因子。这就是联合假设。2013 年诺贝尔奖同时给了 Fama 和 Shiller,说明经验研究没有把这一分歧收成一个胜者。
行为金融这边有两块积木。一块是偏差:过度自信、处置效应、对彩票式收益的偏好。Kahneman、Thaler、Shiller 的工作分别连着这些偏差。另一块是套利限制。Shleifer & Vishny (1997, JF 52(1)):套利资金会在错误定价扩大时被赎回,所以价格可以在纠正之前走得更远。做空费用和噪音交易者风险是限制的具体形状。港股中小盘借券少、印花税按成交额收取,限制比美股大盘更紧。限制使错误定价更可能留下,也使学术论文里的空头腿更不可实施。
7. 随机折现因子¶
m 是危机时刻的救命钱权重:大家最缺钱的坏状态里,一单位消费更值钱,m 就大。 资产若偏偏在这些状态里暴跌,Cov(m, R) 为负,式子要求它提供更高的预期收益。 溢价补偿的是雪中送炭失败的那一部分,不是波动本身的大小。 只做多账户拿不到论文里用来对冲 m 的空头腿,研究组合的夏普不要抄到 ETF 净值上。
Cochrane《Asset Pricing》修订版(Princeton, 2005)把价格写成支付的期望乘上一个随机折现因子 m:
P = E[mX].
把当前价格收成 1,毛收益 R = X/P 满足 E[mR] = 1。无风险毛收益 R^f 满足 E[m] = 1 / R^f。展开协方差:
E[m] E[R] + Cov(m, R) = 1,
E[R] − R^f = −R^f Cov(m, R).
m 在边际效用高的状态下大。资产若在这些状态下收益也低,协方差为负,右边为正,预期收益必须更高。风险补偿在这句话里有一个方向:溢价补偿的是和 m 反向的那部分。
两状态手算。 等概率。m = (1.2, 0.8),毛收益 R = (0.8, 1.3)。
E[m] = 1, R^f = 1.
E[mR] = 0.5 (1.2 × 0.8 + 0.8 × 1.3) = 0.5 (0.96 + 1.04) = 1.
价格收成 1 的条件成立。E[R] = 1.05。
Cov(m, R) = 1 − 1 × 1.05 = −0.05,
E[R] − R^f = −1 × (−0.05) = 0.05.
import numpy as np
def two_state_premium(discount: np.ndarray, gross: np.ndarray) -> float:
"""等概率两状态。溢价等于无风险毛收益乘上与折现因子协方差的相反数。"""
mean_m = float(discount.mean())
mean_r = float(gross.mean())
cov = float(np.mean(discount * gross) - mean_m * mean_r)
risk_free = 1.0 / mean_m
return -risk_free * cov
two_state_premium(np.array([1.2, 0.8]), np.array([0.8, 1.3])) 是 0.05。E[mR] = 1,无风险毛收益是 1。
坏状态里 m 高、收益只有 0.8,所以 5 个点的溢价是为这个缺口付钱。净无风险利率在这个例子里是 0,公式里的毛利率才是 1。利率不为 0 时,协方差还要再乘 R^f。
8. 同一笔溢价的两种预测¶
| 观察 | 更像风险补偿 | 更像错误定价 |
|---|---|---|
| 衰退和高 m 的状态 | 因子在这些状态里亏损 | 和这些状态关系弱 |
| 发表之后 | 溢价还在 | 被交易掉一截(M03 的 McLean & Pontiff) |
| 套利难度 | 大盘、好借的股票里也在 | 集中在难做空、小盘、低成交 |
| 情绪 | 不随情绪变 | 高情绪之后更强(Stambaugh, Yu & Yuan, 2012, JFE 104(2)) |
| 公告日 | 收益摊在整个月 | 明显堆在盈余公告日(Engelberg, McLean & Pontiff, 2018, JF 73(5)) |
这些是预测,不是分类器。一个因子可以两条都占。价值在第 9 节的长回撤里像风险,也有人认为账面价值漏掉了无形资产,那是测量问题,第三种可能。
🔴 深入层:French 三因子的月频数字¶
9. 库里的溢价,不是 ETF 的净值¶
数据是 Kenneth French 数据图书馆的 F-F_Research_Data_Factors,文件头写明使用 202608 版 CRSP。月频从 1926-07 到 2026-08,1202 个月。2024 年 5 月及之前的一个月国库券来自 Ibbotson,2024 年 6 月起改为 ICE BofA 一个月国库券指数。同一文件后部的年度块是另一套序列。本章全部数字只用月频块,由 plot_ff_factors.py 计算。
年化溢价是月均乘 12,是算术平均,不是 CAGR。波动是月标准差(分母 n − 1)乘 √12。夏普是月均除以月标准差再乘 √12。t 值是月均除以它的 iid 标准误,等于未四舍五入的夏普乘 √(n/12)。Newey–West 用 Bartlett 核,滞后 L = ⌊4(T/100)^(2/9)⌋,自协方差除以 n。点估计不变。
| 窗口 | 因子 | 算术年化 | 波动 | 夏普 | iid t | NW t |
|---|---|---|---|---|---|---|
| 1926-07 至 2026-08,n = 1202,L = 6 | Mkt-RF | 8.35% | 18.37% | 0.45 | 4.55 | 4.41 |
| SMB | 1.99% | 10.90% | 0.18 | 1.83 | 1.76 | |
| HML | 4.22% | 12.31% | 0.34 | 3.43 | 3.11 | |
| 1963-07 至 1990-12,n = 330,L = 5 | Mkt-RF | 4.17% | 15.89% | 0.26 | 1.37 | 1.33 |
| SMB | 2.78% | 10.00% | 0.28 | 1.46 | 1.22 | |
| HML | 5.10% | 8.86% | 0.58 | 3.02 | 2.66 | |
| 1991-01 至 2025-12,n = 420,L = 5 | Mkt-RF | 9.46% | 15.08% | 0.63 | 3.71 | 3.71 |
| SMB | 0.92% | 10.83% | 0.08 | 0.50 | 0.55 | |
| HML | 2.12% | 11.29% | 0.19 | 1.11 | 0.93 |
1963 年 7 月是 Fama–French 使用账面价值之后的常用起点,因为更早的 Compustat 覆盖薄。它不是在本章里搜出来的最优起点。
全样本把市场超额加上国库券再连乘,CAGR 是 10.38%。市场总收益的算术年化是 11.59%。缺口和 M04 的波动拖累同向。多空因子的曲线是自融资收益的连乘,没有扣借券、价差和冲击。SMB 换手高,1.99% 的算术溢价不是可实施收益。
HML 一阶自相关 0.196,全样本 NW t 从 3.43 降到 3.11,结论仍离开 0。1991–2025 的 HML,iid t 只有 1.11,NW t 0.93。规模因子在这段里 t 值约 0.5。把 1926 年以来的 1.99% 当成今后小盘倾斜的预期,用的是后一段样本没有再现的均值。
HML 自融资净值的最大回撤是 −57.78%,高点 2006-12,低点 2020-09。2022 年月频连乘:Mkt-RF −21.04%,SMB −7.35%,HML +31.74%,市场总收益(超额加国库券)−19.92%。价值定义下的多空在市场大跌的这一年是正的。这是同一个 HML,不是另一套「改进价值」。
这些组合是美国研究组合。港股印花税和借券不会出现在图里。杠杆上限 1.0 的账户拿到的是多头腿加上市场暴露,不是图上的自融资曲线。
10. 估值模型是另一条信号¶
GK 第 8–9 章把股利贴现和一致预期接进主动仓位。对本章的式子来说,估值模型是在生产一个预测,这个预测仍要经过 M06 的排序和回归,才知道它是 α 还是又一个 β。本章不把贴现率公式当成已经检验过的因子。
真实案例¶
案例 1:规模溢价在后一段窗口里很薄¶
1926-07 至 2026-08,SMB 算术年化 1.99%,iid t = 1.83,NW t = 1.76。1963-07 至 1990-12 是 2.78%,t = 1.46。1991-01 至 2025-12 是 0.92%,t = 0.50,NW t = 0.55。早期论文里的小盘溢价,不是这段 35 年的月均能够单独支撑的结论。
个人账户若用「小盘长期有 2%」来提高仓位,用的是全样本均值。可实施的版本还要再减换手。港股按成交额收印花税,高换手的小盘倾斜比美股研究组合更贵。这个案例不说明小盘永远没有溢价。它说明:窗口一换,t 值可以掉到 0.5 附近。
案例 2:HML 的长回撤,以及 2022 年的反向¶
自融资 HML 从 2006-12 的前高跌到 2020-09,累计 −57.78%。Arnott, Harvey, Kalesnik & Linnainmaa (2021, FAJ 77(1)) 认为账面权益漏掉无形资产,传统价值的测量在变差。风险补偿的说法则把这段看成溢价的兑现方式:持有价值的人要熬过这种回撤。联合假设下,两种说法可以同时不被拒绝。本章的贡献只是把这段回撤钉在 French 月频文件上。
2022 年的月频连乘给了相反的一年:市场总收益 −19.92%,HML +31.74%。若价值的溢价来自某些市场下跌的状态,这一年符合那个方向。一年证明不了机制。它只禁止把「价值已经永久失效」写成 2020 年低点之后的唯一读法。
案例 3:BAB 的 0.78 不是低波 ETF¶
Frazzini & Pedersen (2014) 的美股 BAB,样本 1926 年至 2012 年 3 月,夏普 0.78。组合是低 β 加杠杆、高 β 减杠杆,并且做成 β 中性。论文把溢价归于融资约束:受约束的人买高 β,不受约束的人提供相反的一边。
M04 把本轮杠杆钉在 1.0。融资约束理论里「受约束的投资者」,包含这个上限下的个人账户。只做多低波股票,留下了市场 β,也没有论文里的空头腿。把 0.78 当成这类 ETF 的预期夏普,是把研究组合的夏普抄到了另一个头寸上。
方法论来源¶
| 概念 / 模型 | 核心文献或规范出处 |
|---|---|
| CAPM | Sharpe (1964), JF 19(3);Lintner (1965);Mossin (1966), Econometrica 34(4) |
| 证券市值线偏平 | Black, Jensen & Scholes (1972);Fama & MacBeth (1973), JPE 81(3) |
| 三因子 | Fama & French (1992), JF 47(2);French 月频文件;沿用已经下载的那份,本章不再另下 |
| 低风险 | Frazzini & Pedersen (2014)。BAB 夏普不是低波动 ETF 的夏普 |
| 主动投资者合计 | Sharpe (1991), FAJ 47(1) |
| 套利定价 | Ross (1976), Journal of Economic Theory 13(3) |
| 宏观因子 | Chen, Roll & Ross (1986), Journal of Business 59(3) |
| 有效市场三档 | Fama (1970), JF 25(2) |
| 图 | figures/M05/plot_ff_factors.py |
💡 思考回顾与巩固¶
核心认知纠偏¶
| 误区 | 反例 | 用法 |
|---|---|---|
| 跑赢指数的部分就是 α | 统一式子里,相对市场多出来的可以全是别的 β′λ | 先写模型,再谈残差 |
| CAPM 证明主动管理是零和 | Sharpe (1991) 是市值加权恒等式,不依赖 CAPM | 扣费前主动组等于市场;扣费后主动组更低 |
| French 文件里的年度行可以和月频连乘 | 年度块是另一套构造。2022 年 HML 月频连乘是 +31.74% | 只使用 YYYYMM 那一段 |
| 把 Mkt-RF 连乘当成市场财富 | 市场总收益还要加当月 RF。全样本 CAGR 是 10.38%,算术年化是 11.59% | 图上的灰线含国库券 |
| SMB 全样本 1.99% 就是今后的小盘溢价 | 1991–2025 年化 0.92%,t = 0.50 | 同时报告后一段窗口 |
| HML 的 t = 3.43 证明价值是风险补偿 | t 值只拒绝「月均是 0」。它不区分第 8 节的两列 | 回撤、公告日、发表后衰减另做 |
| 低波 ETF 继承了 BAB 的夏普 0.78 | 0.78 含杠杆和空头,样本止于 2012 年 3 月 | 杠杆上限 1.0 的账户对不上这张组合 |
费曼自测¶
- 为什么异象一定要标明是相对哪一个模型?
- 四期例子里 ˆβ = 1.5、t = 4.74,为什么仍不能声称这只股票有显著的市场暴露?
- 坏状态里 m 高。一只在坏状态里收益也高的资产,预期超额该高还是该低?
- 1991 年之后 SMB 的 t 值约 0.5。这是否推翻了 1926 年以来的规模溢价?
自测要点
1. α 是统一式子的残差。模型从只有市场换成市场加价值,原来的价值溢价从 α 改记到 β′λ。不写模型,异象没有定义。 2. 自由度是 2,临界值 4.303,4.74 只在这个四期样本里过线。标准误的公式假定残差同方差、无序列相关。四期做不到这些诊断。它是手算,不是定价检验。 3. 该低。E[R] − R^f = −R^f Cov(m, R)。坏状态里两边都高,协方差为正,溢价为负。投资者为了在坏状态里有钱,愿意接受更低的预期收益。 4. 没有推翻全样本的月均。全样本 t 仍是 1.83。它推翻的是「后 35 年单独看,月均离开 0」这句话。用哪一段做预期,要事先写明,不能看见 t 值之后再选。四维习题¶
A. 概念题¶
- 用统一式子定义因子、多因子模型和异象。为什么换模型之后异象可以消失?
- CAPM 的 α = 0 和 Sharpe (1991) 各约束了谁?
- 列出三种能把风险补偿和错误定价拆开的观察,并各写一句它们的预测。
- APT 没有规定因子的名字。三条补名字的路线分别拿出什么对象?
B. 计算题¶
- β = 1.3,市场预期超额 5%,无风险利率 4%。CAPM 预期收益是多少?若样本平均收益是 12%,α 是多少?这里的 12%、5%、4% 必须是同一频率。
- 市场、规模、价值的暴露是 1.0、0.6、0.4,年化溢价是 5%、2%、3%。模型给出的预期超额是多少?实际年化超额 9% 时,α 是多少?
- 用第 3 节的四期数据复核 ˆβ、s² 和 t(ˆβ)。自由度是多少?
- 两状态例子里,把坏状态的毛收益从 0.8 改成 1.2,好状态仍为 1.3,m 不变。先说明 E[mR] 还等不等于 1,再说明不能直接用溢价公式。
C. 编程实战题¶
- 用 French 月频三因子复现第 9 节的三张窗口表。确认没有把年度块乘进去。
- 计算 HML 自融资净值的最大回撤,以及高点和低点的月份。
- 对 2022 年十二个月做连乘,分别打印 Mkt-RF、SMB、HML 和市场总收益。
D. 个人实战思考题¶
- 你的超额若相对标普 500 是 3%。写出把它拆成市场以外的 β 和残差所需要的最低数据。
- 港股中小盘难借券。这对「错误定价会留在难做空的股票里」和「你能否拿到论文里的多空收益」分别意味着什么?
- 杠杆上限 1.0。BAB 论文里的哪一条腿是你的政策直接排除的?
完整参考答案与解析
**A1.** 因子是进入 λ、且 λ 的对应分量不为 0 的组合。多因子模型是选定的那组 (β, λ),并要求各资产 α 靠近 0。异象是这个要求失败的地方。换模型等于把原来的残差重新投影到新的 β 上,残差可以因此变小。价值相对 CAPM 是异象,相对 Fama–French 三因子是 λ 里的一项。 **A2.** CAPM 约束每只资产:预期超额等于 β 乘市场超额,截距为 0。Sharpe (1991) 约束持有人整体:扣费前的市值加权等于市场,所以主动组扣费前等于市场,扣费后低于被动组。前者是均衡模型,后者是会计恒等式。 **A3.** 坏状态:风险补偿预测因子在衰退或高 m 的状态亏损,错误定价不依赖这些状态。发表后:错误定价预测溢价被交易掉一截,风险补偿预测溢价还在。套利限制:错误定价预测溢价集中在难做空的股票,风险补偿预测在好借的大盘里也同样存在。公告日和情绪可以作为另外两条,预测方向见第 8 节的表。 **A4.** 宏观路线拿出经济变量,还要把变量映射成组合收益。特征路线直接拿账面市值比、市值、盈利这类排序组合。统计路线拿出主成分或 IPCA 的因子,名字要事后解释。 **B5.** 4% + 1.3 × 5% = 10.5%。α = 12% − 10.5% = 1.5%。若 12% 是十年里的 CAGR,而 5% 是算术预期,两者不能相减。本题按题面把三个数都当成同一频率的期望或样本平均。 **B6.** 1.0 × 5% + 0.6 × 2% + 0.4 × 3% = 7.4%。α = 9% − 7.4% = 1.6%。这是把溢价当成已知常数。French 表里的溢价随窗口变,1.6% 不是一个可以外推的 α。 **B7.** Σ x² = 0.003,Σ xy = 0.0045,ˆβ = 1.5,ˆα = 0。残差平方和 0.0006,s² = 0.0003,se(ˆβ) = √0.1 = 0.3162,t = 4.74。自由度 n − 2 = 2。 **B8.** E[mR] = 0.5 (1.2 × 1.2 + 0.8 × 1.3) = 0.5 (1.44 + 1.04) = 1.24 ≠ 1。价格不再是 1,R 不是这组 m 下的毛收益。溢价公式的前提 E[mR] = 1 不成立,不能把 −R^f Cov(m, R) 当成这组数字的预期超额。 **C9–C11.** 与 `figures/M05/plot_ff_factors.py` 同一契约,脚本已对 202608 版文件运行。月频 1926-07 至 2026-08,1202 个月。三窗口的年化、夏普和 t 值就是第 9 节的表。HML 最大回撤 −57.78%,高点 2006-12,低点 2020-09。2022 年连乘:Mkt-RF −21.04%,SMB −7.35%,HML +31.74%,市场总收益 −19.92%。import math
from pathlib import Path
import zipfile
import pandas as pd
ZIP = Path("knowledge/books/figures/M05/_cache/F-F_Research_Data_Factors_CSV.zip")
# 年度块从空行之后开始。空行处停,避免把年度收益当成月收益连乘。
raw = zipfile.ZipFile(ZIP).read("F-F_Research_Data_Factors.csv").decode("latin1")
lines = raw.splitlines()
start = next(i for i, line in enumerate(lines) if line.startswith(",Mkt-RF"))
rows = []
for line in lines[start + 1 :]:
if not line.strip():
break
parts = [part.strip() for part in line.split(",")]
if len(parts[0]) != 6:
break
rows.append(parts)
frame = pd.DataFrame(rows, columns=["date", "Mkt-RF", "SMB", "HML", "RF"])
for column in frame.columns[1:]:
frame[column] = pd.to_numeric(frame[column]) / 100.0
📌 章节知识总结¶
一句话核心洞察¶
- α 是模型的残差。不写 β′λ,就把因子暴露叫成了超额。
- CAPM 要求每只资产的截距为 0。Sharpe (1991) 要求主动投资者整体在扣费前等于市场。两句话的前提不同。
- French 月频全样本:市场超额算术年化 8.35%(t = 4.55),HML 4.22%(t = 3.43),SMB 1.99%(t = 1.83)。1991–2025 的 SMB 只有 0.92%,t = 0.50。
- HML 自融资净值从 2006-12 到 2020-09 回撤 57.78%。2022 年同一个 HML 月频连乘为 +31.74%。
- BAB 的夏普 0.78 是加杠杆的 β 中性多空。杠杆上限 1.0 的账户复制的不是这张组合。
公式与窗口¶
| 对象 | 表达式或数值 | 前提 |
|---|---|---|
| 统一式 | E[Rᵢ] − R_f = αᵢ + βᵢ′λ |
溢价和收益同一频率 |
| CAPM | E[Rᵢ] − R_f = βᵢ(E[Rₘ] − R_f) |
单期、可同一利率借贷、预期一致 |
| β | Cov/Var | 样本回归的斜率是估计 |
| 回归标准误 | s² = SSE / (n − 2) | 四期例子自由度是 2,临界值 4.303 |
| SDF | E[R] − R^f = −R^f Cov(m, R) | E[mR] = 1,R^f 是毛收益 |
| 算术年化 | 月均 × 12 | 不是 CAGR |
| 因子夏普 | 月均 / 月标准差 × √12 | SMB、HML 不再减 R_f |
| NW 滞后 | ⌊4(T/100)^(2/9)⌋ | 全样本 T = 1202 时 L = 6 |
| 月频文件 | 1926-07 至 2026-08 | 不含文件后部的年度块 |
| BAB 夏普 | 0.78 | Frazzini & Pedersen,美股,至 2012-03 |
跨模块¶
| 结论 | 交给 | 位置 |
|---|---|---|
| 残差才是这个模型的 α | 业绩归因 | M14 |
| 排序、Fama–MacBeth、IC | 因子检验 | M06 |
| 杠杆上限使 BAB 的低 β 腿不可复制 | 仓位闸门 | docs/risk_policy.md,M04 |
| 月频因子的 t 值与 HAC | 标准误不要只用 iid | M01 的 Newey–West |
| 印花税吃掉高换手的规模倾斜 | 成本 | M00、M03 |
学习指引¶
概念卡片:Newey–West 调整
- 精读:因子第 1 章如何把四个词放进同一个式子。GK 第 2 章的 CAPM 假设。Sharpe (1991) 只有几页,读的是恒等式的主语是谁。
- 对照:French 月频文件以脚本下载的那一版为准。书上的 A 股表格不要和这张美股表对减。
- 项目:本章不新增交易因子。
src/quant/risk/volatility.py里的协方差是风险预算,不是 Fama–French 的 λ。 - 下一步:M06 把「α 是否离开 0」做成排序和回归的操作步骤。
自检清单¶
- 能指出 α 依赖哪一个模型
- 能手算四期 ˆβ = 1.5 和 t = 4.74,并说明自由度是 2
- 能复述三窗口里 SMB 与 HML 的算术年化和 t 值
- 能把 HML 的 −57.78% 放回 2006-12 至 2020-09
- 能说明 BAB 的 0.78 为什么不能当作低波 ETF 的预期夏普
