QuantWeft量化经纬
English
本章小节

Project 2 研究报告:CAPM 与 Fama–French 因子归因

本项目使用资本资产定价模型(Capital Asset Pricing Model, CAPM)、Fama–French 三因子模型(Fama–French Three-Factor Model, FF3)与五因子模型(Fama–French Five-Factor Model, FF5)。普通最小二乘法(Ordinary Least Squares, OLS)估计系数;异方差与自相关一致协方差估计(Heteroskedasticity and Autocorrelation Consistent Covariance Estimation, HAC)用于推断;置信区间(Confidence Interval, CI)与 Holm 逐步多重检验校正(Holm Step-Down Multiple-Testing Adjustment)分别描述单项估计不确定性与所列检验族的校正。原理与手算见第8、15章。

状态:verified,已完成根与独立审核。本报告依据 固定配置 与 冻结数据清单 编写;表格数值由可复现 CLI 计算。

结论

对 2010 年 1 月至 2019 年 12 月的 120 个月历史快照,FF5 的样本内 R² 在 NoDur、HiTec、Enrgy 上分别为 0.727、0.893、0.696;CAPM 分别为 0.561、0.829、0.597。增加因子后样本内拟合方差份额上升,但这只说明同期发布因子对同一批历史收益的线性拟合比例更高。

九个 Alpha 中,NoDur 与 HiTec 的 HAC 95% 区间均跨零。Enrgy 的三个 Alpha 都为负,HAC6 单项区间均低于零;对本报告展示的九个资产×模型 Alpha 作 Holm 调整后,最小 p 值为 0.0549,没有一项低于 0.05。这个结果不证明能源组合未来会继续落后,也不能把 Alpha 当成独立于模型的资产属性。所有负值和接近零的结果均保留。

研究没有因果识别、历史点时数据、信号、订单或成交账本。它不检验交易优势。成本、融资和借券在本数据中不适用;没有计算成本后策略收益或 Alpha。

研究问题、数据和时间

问题是:三个行业组合的超额收益与市场、规模、价值、盈利能力和投资因子的同月发布价差有何条件关系;加入因子后,Beta、模型相关截距、R² 和残差怎样变化;结果对 HAC 带宽和固定历史切片有多敏感?

资产是 Kenneth R. French 美国 10 行业组合中的非耐用品(NoDur)、高科技(HiTec)和能源(Enrgy),采用标准文件的价值加权月度总收益,含股息。French Data Library 与方法见官方库、行业组合说明、FF3 说明和FF5 说明。原始研究页面见 Fama and French (1993) 与 (2015):1993,2015。

输入是 2026-10-05 下载并冻结的当前发布快照,FF3 与 FF5 文件头均声明 202608 CRSP 版本。数据清单记录三个输入各自的 ZIP、ZIP 成员 CSV、处理 CSV 路径与 SHA-256。CLI 核验全部哈希、ZIP CRC、成员和已保存原始 CSV 字节一致性,再通过共享月度读取器校验实际输入。项目没有重新下载、覆盖或重建 production 数据。

French 文件以百分数发布,冻结处理 CSV 已除以 100 一次;本项目读小数,不再转换。来源缺失哨兵 -99.99 和 -999 在预处理时变为空字段。任何所选值缺失、无穷、月份断档、重复或错位都会报错;不填补、不压缩缺口。主样本固定 2010-01 至 2019-12,每个资产与因子恰有 120 个相同月度 PeriodIndex。

官方说明自 2025 年 1 月发布起由旧 CRSP FIZ 切换至 CIZ Flat File Format 2.0,月度股息再投资时点有别;RF 代理来源也在 2024 年 6 月从 Ibbotson Associates 切换至 ICE BofA US 1-Month Treasury Bill Index。当前历史文件是单一修订快照,不是历史 PIT 档案。公开下载不是通用再分发许可;对外使用需保留 Fama 与 French 署名并核对当期条款。

月标签表示收益区间,不给出历史 event_time、available_at、signal_time 或 trade_time。清单下载时间只说明取得当前快照的时间,不能倒推历史可知性。没有信号,也没有未来收益标签。

模型、推断和解释

对资产 i 和月份 t,目标为 y(i,t) = R(i,t) − RF(t),模型为:

yi,t=αi+βiTft+εi,t. y_{i,t}=\alpha_i+\boldsymbol\beta_i^{\mathsf T}\mathbf f_t+\varepsilon_{i,t}.

RF 只从含股息资产总收益扣一次;Mkt-RF、SMB、HML、RMW、CMA 是已发布价差,作为因子原值进入右侧。CAPM 取 FF3 文件的 Mkt-RF 和 RF;FF3、FF5 各用对应官方文件的全套因子及 RF。单位为小数月收益。没有内连接丢月、移位或重复百分数转换。

OLS 含截距。Alpha 是在特定样本、模型基准下的条件平均截距;因子集或样本变化会改变它。它不是已证明的定价误差、技巧或未来收益。Beta 是其他入模因子给定时的线性条件载荷。例如 Beta=0.8 表示同月因子价差上升 1 个百分点时,拟合超额收益条件均值对应变化约 0.8 个百分点。这是统计共变,不代表因果。SMB 是小市值减大市值,HML 是高账面市值比减低账面市值比,RMW 是高盈利能力减低盈利能力,CMA 是保守投资减激进投资的发布价差;组合 Beta 不能过度解释成公司层面机制。

主结果的 HAC 标准误使用 Bartlett 核、6 个按月观测行计的滞后、有限样本修正和 t 参考分布。另对 3、6、12 月滞后计算全部系数的标准误、区间和 p 值。改变 HAC 带宽不改变 OLS 点估计;它会影响推断。HAC 不会补出遗漏变量、解决内生性、消除结构变化或验证误差假设。小样本区间和 p 值是依赖假设的近似。

R² 表示样本内相对均值基准减少的平方误差比例;调整 R² 对自由度调整。含截距 OLS 的残差样本均值接近零。我们核验同一 120 月目标的 ddof=1 方差满足 Var(y)=Var(fitted)+Var(residual)。这是 OLS 投影的样本内会计恒等式,不是因果分解或未来预测能力。因子可能相关,所以不把边际 Beta 转成互相独立、可加总的因子风险份额。

Alpha 的 9 项检验族是三个固定资产乘三个固定模型;报告名义 HAC p 和 Holm step-down 调整值。Holm 只覆盖这九个已展示截距,不覆盖其他模型搜索、因子定义或窗口选择。Beta 区间是逐项区间,未校正整个规格搜索。

OLS 与四个月手算例见第15章§6及§8,Bartlett HAC 夹心矩阵逐步数值例见该章§6.4。表中95%区间为逐项区间;Holm调整只作用于九个截距的p值,这些区间不是同时置信区间。

全样本九组实证结果

Alpha 和置信区间为百分点 / 月;Beta 无量纲,括号内为 HAC6 95% 区间。破折号表示该模型未纳入该因子,不是估计值为零。精确结果、t 值及每个系数的 p 值见 HAC6 系数 CSV。

NoDur:非耐用品

模型 Alpha(% / 月)[95% CI] Alpha p / Holm p Mkt-RF SMB HML RMW CMA R² / 调整 R²
CAPM 0.2603 [−0.1223, 0.6429] 0.1804 / 1.0000 0.646 [0.539, 0.752] — — — — 0.561 / 0.557
FF3 0.1195 [−0.2392, 0.4782] 0.5108 / 1.0000 0.747 [0.646, 0.848] −0.424 [−0.611, −0.237] −0.117 [−0.304, 0.070] — — 0.645 / 0.636
FF5 −0.0472 [−0.3653, 0.2710] 0.7695 / 1.0000 0.812 [0.723, 0.902] −0.296 [−0.521, −0.071] −0.251 [−0.411, −0.090] 0.526 [0.291, 0.762] 0.481 [0.204, 0.759] 0.727 / 0.715

HiTec:高科技

模型 Alpha(% / 月)[95% CI] Alpha p / Holm p Mkt-RF SMB HML RMW CMA R² / 调整 R²
CAPM 0.1414 [−0.1568, 0.4396] 0.3496 / 1.0000 1.097 [1.022, 1.171] — — — — 0.829 / 0.827
FF3 0.0051 [−0.2643, 0.2746] 0.9701 / 1.0000 1.158 [1.075, 1.242] −0.155 [−0.306, −0.004] −0.337 [−0.485, −0.189] — — 0.864 / 0.861
FF5 0.1032 [−0.1486, 0.3550] 0.4185 / 1.0000 1.126 [1.019, 1.233] −0.158 [−0.320, 0.003] −0.050 [−0.199, 0.099] 0.021 [−0.257, 0.299] −0.668 [−0.962, −0.374] 0.893 / 0.888

Enrgy:能源

模型 Alpha(% / 月)[95% CI] Alpha p / Holm p Mkt-RF SMB HML RMW CMA R² / 调整 R²
CAPM −0.9459 [−1.6167, −0.2752] 0.0061 / 0.0549 1.195 [1.081, 1.309] — — — — 0.597 / 0.593
FF3 −0.6629 [−1.3091, −0.0167] 0.0444 / 0.3111 1.065 [0.936, 1.195] 0.332 [0.078, 0.585] 0.692 [0.375, 1.008] — — 0.688 / 0.680
FF5 −0.7323 [−1.3707, −0.0939] 0.0249 / 0.1995 1.090 [0.922, 1.258] 0.286 [0.049, 0.524] 0.452 [0.046, 0.858] −0.091 [−0.564, 0.381] 0.508 [−0.065, 1.082] 0.696 / 0.683

HiTec 的市场 Beta 大于 1;三个资产的市场 Beta 都为正。其他载荷的符号因行业和基准不同。HiTec FF5 的 SMB 区间刚好跨零;Enrgy FF5 的 RMW、CMA 区间跨零;NoDur FF3 的 HML 区间跨零。这些结果均保留。能源三个截距在 HAC6 单项区间低于零,但九项 Holm 调整后均未达 5%。另外六个截距区间跨零,HiTec FF3 仅 0.0051% / 月,接近零。

HAC 带宽敏感性

下表是九个 Alpha 在各带宽的 95% 区间,单位百分点 / 月。HAC 3/6/12 下全部 Alpha、Beta 的点估计、标准误、t、p、区间在完整敏感性 CSV。

资产 模型 HAC 3 HAC 6 HAC 12
NoDur CAPM [−0.1276, 0.6482] [−0.1223, 0.6429] [−0.1532, 0.6738]
NoDur FF3 [−0.2285, 0.4674] [−0.2392, 0.4782] [−0.2836, 0.5226]
NoDur FF5 [−0.3453, 0.2510] [−0.3653, 0.2710] [−0.4124, 0.3181]
HiTec CAPM [−0.1620, 0.4448] [−0.1568, 0.4396] [−0.1744, 0.4572]
HiTec FF3 [−0.2846, 0.2948] [−0.2643, 0.2746] [−0.2589, 0.2691]
HiTec FF5 [−0.1768, 0.3832] [−0.1486, 0.3550] [−0.1449, 0.3513]
Enrgy CAPM [−1.6232, −0.2687] [−1.6167, −0.2752] [−1.5996, −0.2923]
Enrgy FF3 [−1.2950, −0.0308] [−1.3091, −0.0167] [−1.3154, −0.0104]
Enrgy FF5 [−1.3793, −0.0854] [−1.3707, −0.0939] [−1.3766, −0.0880]

能源的三个单项区间在三个 HAC 带宽下仍低于零,但这不是三批独立证据,九项 Holm 调整仍无显著项。带宽改变推断不改变 Beta 或 Alpha 点估计。

拟合度、残差与风险分解

残差指标单位均为百分点 / 月;Lag-1 是相邻月样本相关。均值接近零是含截距 OLS 的样本内性质。逐月目标、拟合值、残差在残差 CSV。

资产 模型 R² 拟合方差份额 残差方差份额 残差 SD RMSE MAE 最大绝对值 Lag-1
NoDur CAPM 0.561 56.080% 43.920% 2.137 2.128 1.686 7.278 −0.063
NoDur FF3 0.645 64.496% 35.504% 1.921 1.913 1.455 5.696 −0.072
NoDur FF5 0.727 72.651% 27.349% 1.686 1.679 1.297 5.314 −0.200
HiTec CAPM 0.829 82.879% 17.121% 1.864 1.856 1.494 5.360 −0.146
HiTec FF3 0.864 86.407% 13.593% 1.661 1.654 1.364 4.075 −0.180
HiTec FF5 0.893 89.273% 10.727% 1.475 1.469 1.197 3.758 −0.178
Enrgy CAPM 0.597 59.670% 40.330% 3.674 3.659 2.794 11.684 0.009
Enrgy FF3 0.688 68.799% 31.201% 3.232 3.218 2.541 9.437 0.043
Enrgy FF5 0.696 69.598% 30.402% 3.190 3.177 2.486 9.482 0.075

R² 与拟合方差份额对应,说明的是样本内方差会计。不能据此声称未来波动降低、因子风险可交易或 FF5 的改善全由 RMW/CMA 造成。

图表坐标说明:

  • Alpha 图:横轴为月度 Alpha(百分点 / 月),纵轴为资产×模型;点为估计、线为 HAC6 95% 区间、竖线为零。
  • 载荷图:五个面板分别为市场、规模、价值、盈利能力、投资;横轴是条件 Beta,纵轴是包含该因子的资产×模型,线为 HAC6 区间。模型未包含的因子不作零值显示。
  • 方差图:横轴为同一样本超额收益方差份额百分比,纵轴为九组模型;青色拟合项、橙色残差项,每条合计 100%。
  • 残差图:横轴为月度收益区间(为作图标于月末),纵轴为实现同月超额收益减拟合值(百分点 / 月);三面板分别为三个行业,颜色区分 CAPM、FF3、FF5。不是未来预测误差。

FF3 与 FF5 因子差异

主结果保留各自官方发布序列。2010–2019 共同列差异为:

字段 最大绝对差(小数 / 月) 不同月份数
Mkt-RF 0.0003 40 / 120
SMB 0.0137 119 / 120
HML 0 0 / 120
RF 0 0 / 120

两份原始文件都声明 202608 CRSP 版本;本地都只转换一次单位,所选 HML 与 RF 完全相同,但 Mkt-RF 与 SMB 不同。SMB 的定义差异已有官方依据:FF3 构造说明使用规模×账面市值比的六个组合;FF5 构造说明将账面市值比、盈利、投资三组规模价差平均。因此不能把 SMB 的构造差异一概称为未知。本项目尚未用底层组合逐项复算各月差异;Mkt-RF 文件数值差异的具体原因也仍未查明,不猜测是舍入、修订或发布错误。共同因子取值不完全相同,因此 FF3 与 FF5 不是严格嵌套模型;不作两者嵌套 F 检验,也不把 R² 上升全部归因于新增 RMW/CMA。若要隔离增量作用,应固定同一基准因子再加入 RMW/CMA,并标成自定义组合,作为新研究。

时间顺序归因检查

2010–2014 估计的截距与完整窗口截距对比(百分点 / 月):

资产 模型 训练 Alpha 全窗口 Alpha 全窗口减训练
NoDur CAPM 0.525 0.260 −0.264
NoDur FF3 0.379 0.119 −0.260
NoDur FF5 0.144 −0.047 −0.191
HiTec CAPM −0.147 0.141 0.288
HiTec FF3 −0.252 0.005 0.257
HiTec FF5 −0.098 0.103 0.201
Enrgy CAPM −0.752 −0.946 −0.194
Enrgy FF3 −0.617 −0.663 −0.046
Enrgy FF5 −0.585 −0.732 −0.148

将训练参数用于 2015–2019 已实现的同月因子,误差统计如下(百分点 / 月):

资产 模型 平均误差 RMSE MAE 最大绝对误差
NoDur CAPM −0.541 2.347 1.747 7.570
NoDur FF3 −0.666 2.205 1.656 5.800
NoDur FF5 −0.459 1.932 1.516 5.293
HiTec CAPM 0.601 2.075 1.682 5.062
HiTec FF3 0.506 1.798 1.495 4.224
HiTec FF5 0.282 1.562 1.257 3.597
Enrgy CAPM −0.369 4.195 3.366 10.221
Enrgy FF3 −0.242 3.660 2.994 9.773
Enrgy FF5 −0.335 3.832 3.135 10.537

此固定切分没有预注册。2015–2019 的因子在各评价月实现后才知道,因此它只是时间顺序的系数稳定性和同月归因误差,不是 PIT、事前预测、策略收益或真实留出收益。逐月误差见归因误差 CSV,所有系数差见稳定性 CSV。

成本、限制和后续数据

成本、融资和借券在本项目不适用:没有信号、目标仓位、换手、订单、执行价格或交易账本。没有假定零成本,也没有把月 Alpha 年化成策略收益。

若后续研究净 Alpha,需新增可执行信号和生成时点、历史资产池与退市/行业成分、当时可用数据版本、权重与调仓规则、下单/成交时刻、成交价与买卖价差、佣金和税、市场冲击、融资与借券成本、股息和公司行动规则,以及逐日/逐笔持仓、订单、成交和现金账本。还需事前固定评价方案以避免使用未来因子或修订输入。本次数据不含这些字段,不能回答可执行性、净收益或未来交易优势。

结论只限于三个当前修订的行业组合历史序列。回归是观察性条件关联,不是因果设计;样本有限;Alpha 随因子基准而变;FF3/FF5 的 SMB 构造差异已知,但逐月差异未逐项复制,Mkt-RF 文件数值差异的具体原因未查明;没有 PIT 时间戳。HAC 与 Holm 不能覆盖所有未跑规格,也不建立未来优势。

交付物与复现

运行 CLI 会生成:

  • HAC6 系数:所有 Alpha/Beta、区间、p 值与 R²。
  • HAC 敏感性:全部系数在 3/6/12 月滞后的推断。
  • 月度残差、时间顺序归因误差、系数稳定性和JSON 摘要。
  • 五张 project02 图写至课程根目录的 figures/projects/。

在课程根目录运行:

.venv/bin/python projects/project02/run_project02.py
.venv/bin/python -m pytest tests/test_project02_analysis.py -q

CLI 也支持从任意当前目录按绝对路径启动。Notebook 应在 quant-course-venv kernel 中从干净状态执行:Project02 Notebook。字段与时间键见数据字典,路径、哈希和来源边界见数据清单。验收记录见课程根目录 qa/a4/project02_acceptance.md。

搜索教材

输入关键词开始搜索。