关于 factor-investing
面向投资者和分析师的学习技能,讲解多因子模型,以及如何评估基金回报、因子暴露和管理能力。内容还涵盖智能贝塔产品、隐形指数基金筛查和因子策略的局限。
主要功能
- 01讲解主要股票因子
- 02解读回归载荷、阿尔法和 R²
- 03将回报分解为因子暴露与阿尔法
- 04筛查隐形指数基金
- 05评估智能贝塔的实施与费用
- 06讨论因子周期性与拥挤交易
适用场景
- 01判断基金回报来自能力还是因子暴露
- 02筛查主动基金是否属于隐形指数基金
- 03按暴露和实施方式比较智能贝塔基金
- 04为仅做多的因子倾斜设定预期
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ joellewis/ finance_skills --skill factor-investing安装后在 Claude Code 中输入/factor-investing确认已加载。
附带文件scripts/factor_investing.py
详细介绍
因子投资
核心概念
从 CAPM 到多因子模型
CAPM 为单一风险来源定价:E(R_i) - R_f = beta * (E(R_m) - R_f)。持续存在的异常现象——小盘股、便宜(高账面市值比)股票,以及近期赢家的收益高于 beta 所预测的水平——促使人们加入更多因子。Fama-French(1993)在市场因子基础上加入规模和价值因子(3 因子模型);Carhart(1997)加入动量因子;Fama-French(2015)加入盈利能力和投资因子(5 因子模型):
R_i - R_f = alpha + b_MKT*MKT + b_SMB*SMB + b_HML*HML [+ b_RMW*RMW + b_CMA*CMA] [+ b_UMD*UMD] + epsilon
关键的重新解读是:经理人的 CAPM alpha 可能不过是静态因子敞口。只有在控制了投资者可以低成本买入的因子之后,alpha 才代表技能。单因子 OLS 的机制、t 统计量和 CAPM 回归本身,详见 statistics-fundamentals 技能;本技能将其推广到 K 个回归变量并解读输出。
经典因子
| 因子 | 构建方式(多头-空头) | 理由:基于风险 | 理由:行为因素 | 约略溢价* |
|---|---|---|---|---|
| MKT | 市场减无风险利率 | 不可分散的宏观风险 | — | 6-7%/年 |
| SMB(规模) | 小盘股减大盘股 | 流动性不足、对困境的敏感性 | 对小公司的忽视 | 1.5-2%/年 |
| HML(价值) | 高账面市值比减低账面市值比 | 困境风险、周期性现金流 | 对增长的过度外推 | 2.5-3%/年 |
| RMW(盈利能力) | 强劲减疲弱的经营盈利能力 | 对现金流风险的补偿 | 对质量的反应不足 | ~3%/年 |
| CMA(投资) | 保守减激进的资产增长 | Q 理论:高投资意味着预期收益低 | 帝国式扩张导致的过度投资 | ~3%/年 |
| UMD(动量,Carhart) | 过去 12-1 个月的赢家减输家 | 崩盘风险(剧烈反转) | 反应不足、羊群效应 | 6-7%/年 |
*基于 Ken French 数据库中 1963-2024 年样本的美国多头-空头组合年化溢价约值,截至 2026 年。此为长期平均值,并非预测;实际收益在长达十年的时期内可能出现巨大偏离(见下文周期性部分)。
理解这些理由关系到因子的持久性:基于风险的溢价应当持续存在(总得有人承担风险);行为因素溢价只有在套利限制阻止其被竞争消除时才会留存,而且更容易受到拥挤交易的影响。
解读因子回归
将基金的超额收益对因子收益序列进行 OLS 回归。解读如下:
- 载荷(b_k): 每单位因子的敞口。b_HML = 0.45 表示该基金的表现类似于持有价值多头-空头组合中权重为 0.45 的头寸。根据各载荷的 t 统计量进行判断(|t| 大于约 2 即达到 5% 显著性水平)。
- Alpha: 因子无法解释的平均收益——这是唯一站得住脚的技能主张。若正 alpha 的 |t| < 2,则不能证明存在技能(t 统计量详见 statistics-fundamentals);加入价值或动量载荷后,大多数基金的 alpha 都会变得不显著。
- R-squared: 因子解释的收益方差比例。相对于 3-4 个因子,多元化股票基金的 R-squared 通常为 0.90-0.99。比较因子数量不同的模型时,应使用调整后的 R-squared——每加入一个回归变量,R-squared 都会机械性上升。
- 稳定性: 使用滚动窗口;载荷随时间漂移,表明风格漂移或因子择时,而非稳定的倾斜。
Alpha 分解与指数化潜藏检测
同一回归有两种互补用途:
- 预期收益分解:
E(R) = R_f + sum(b_k * lambda_k),其中 lambda_k 是假设的因子溢价。这能告诉你,仅凭基金的风险敞口,它应当获得多少收益;已实现的超额收益减去因子隐含的超额收益,就是管理人隐含的 alpha。如果隐含 alpha 接近零,那么该基金就是一个可以用低成本因子 ETF 复制的因子投资组合。 - 指数化潜藏筛查: 基金收取主动管理费,却紧贴基准指数。以收益为依据的警示信号:基准回归 R-squared >= 0.98,且年化跟踪误差 <= 2%。以持仓为依据的对应指标是主动份额低于约 60%(Cremers and Petajisto 2009)。然后计算盈亏平衡信息比率:
IR_breakeven = (fund fee - index fee) / tracking error。指数化潜藏基金只在极小的主动风险预算下,也需要达到高得不切实际的信息比率,才能赚回费率差(信息比率本身见 performance-metrics)。
智能贝塔产品评估
将每款智能贝塔产品都视为因子投资组合(这是 equities 技能的原则),评估其实际实现方式,而非营销名称:
- 因子纯度: 用学术因子对产品进行回归。一款 b_HML = 0.15、b_MKT = 1.0 的“价值”ETF,本质上只是昂贵的市场贝塔;应寻找目标因子载荷显著且占主导的产品,同时确保非预期载荷(例如价值基金的负动量敞口)适中。
- 换手率: 动量因子要发挥作用,需要较高换手率(约 100%+/年);价值因子则只需要较低换手率(约 15-25%/年)。换手率远高于因子所需水平会带来成本拖累;远低于所需水平则意味着敞口陈旧。
- 容量: 规模因子和动量因子随资产规模增长退化最快(小盘、流动性差的股票;高换手率)。超大盘价值和质量因子最具可扩展性。
- 费用与实现质量: 问题绝不是“0.25% 算便宜吗?”,而是“每个基点能带来多少载荷?”一只 b_HML = 0.20 的 0.15% 基金,不如一只 b_HML = 0.50 的 0.30% 基金划算。
多空学术因子与仅做多的倾斜配置
已发表的溢价基于多空投资组合测算,这类组合通常不受杠杆和卖空限制,并且在回测中不计成本地进行再平衡。可实施的仅做多倾斜配置:
- 只能获取论文溢价的大约一半(无法参与错价往往更大的空头一侧;与市场投资组合的重叠会稀释倾斜配置的效果);
- 对学术因子的载荷远低于 1.0(仅做多的价值基金通常 b_HML 为 0.3-0.5,而不是 1.0);
- 需要承担回测忽略的实际交易成本和税费。
据此调整预期:相对于 2.5-3% 的溢价,b_HML = 0.4 的仅做多价值倾斜配置,扣除成本前的价值约为 1.0-1.35%/年,而不是显眼的多空数字。
因子的周期性与因子择时的风险
每种因子都会经历持续多年的低迷期:美国价值股在 2017-2020 年左右持续跑输成长股,相对回撤之深足以让基金经理职业生涯终结,之后又在 2021-2022 年大幅反弹。动量因子则会在急剧反转时猛烈崩盘(2009 年)。由于低迷期漫长,转折点又无法预测,因子择时——转向“便宜”的因子——实盘表现不佳,还会增加换手率。应对周期性的稳妥做法是:(a) 在相互相关性较低的因子之间分散配置(价值和动量天然互补);(b) 合理设定倾斜配置规模,确保投资者能熬过长达十年的低迷期,而不会在底部放弃。
因子动物园、拥挤交易与可重复性
数百个“显著”因子已被发表——这就是 Cochrane 所说的“因子动物园”。应以审慎的态度看待这个动物园:
- **多重检验:**数百名研究人员使用同一数据挖掘因子,t = 2 远远不够;Harvey、Liu 和 Zhu(2016)认为,新提出的因子应达到 t > 3。
- **发表后的衰减:**McLean 和 Pontiff(2016)发现,异常收益在样本外大约降低三分之一,发表后降低一半——部分原因是数据挖掘,部分原因是投资者蜂拥而入并套利消除溢价。
- **拥挤交易:**热门因子交易会在压力时期一起平仓(2007 年 8 月的“量化地震”)。因子的估值价差大幅扩大或收窄,表明资金正在涌入或撤出。
- 优先选择少数几个拥有数十年样本外、跨国家证据且具备经济学依据的因子(按稳健性大致依次为市场、价值、动量、盈利能力、规模);假设任何新近推销的因子,其实际表现都会远逊于回测结果。
关键公式
| 公式 | 表达式 | 用例 |
|---|---|---|
| 3 因子模型 | R_i - R_f = alpha + b_MKTMKT + b_SMBSMB + b_HML*HML + eps | 基准股票归因 |
| Carhart 4 因子 | 3 因子 + b_UMD*UMD | 加入动量控制项 |
| 5 因子模型 | 3 因子 + b_RMWRMW + b_CMACMA | 控制盈利能力和投资 |
| 预期收益分解 | E(R) = R_f + sum(b_k * lambda_k) | 根据因子载荷和溢价推算因子隐含收益 |
| 隐含 alpha | realized excess mean - sum(b_k * lambda_k) | 因子敞口调整后的技能 |
| 显著性规则 | t = coefficient / SE; skill requires |t(alpha)| > ~2 | 区分运气与技能 |
| 残差(主动)波动率 | sigma_resid = sigma_fund * sqrt(1 - R^2) | 跟踪误差分解 |
| 盈亏平衡 IR | (fund fee - index fee) / tracking error | 检验伪装成主动管理的指数基金费用 |
示例
示例 1:“价值基金”是在发挥技能,还是仅仅具有因子敞口?
**已知:**某美国大盘价值基金的 60 个月超额收益率,以 MKT、SMB、HML 为自变量进行回归(均以每月百分比计):
alpha = 0.037 (t = 0.60) -> 0.037 x 12 = 0.44% per year
b_MKT = 0.98 (t = 58.1)
b_SMB = 0.12 (t = 4.6)
b_HML = 0.45 (t = 23.1)
R^2 = 0.986 (residual vol 0.457% per month)
**分析:**这三个因子解释了该基金 98.6% 的收益方差。0.45 的价值载荷很强且高度显著(t = 23.1 >> 2)——这是真实且稳定的价值倾向,典型的多头价值基金(远低于学术界多空 HML 投资组合的 1.0)。0.98 的市场载荷代表常规的满仓股票敞口,SMB 的小幅正载荷则显示出轻微的小盘股倾向。Alpha 为每年 0.44%,t = 0.60 < 2,在统计上与零无法区分。
**结论:**这是因子敞口,而非技能。该基金提供的一切,都可以通过市场基金加上偏向价值的指数基金来复制。现在是否持有它,取决于费用问题(示例 3),而非技能问题。
示例 2:根据载荷和溢价分解预期收益
**已知:**示例 1 中的载荷,假设前瞻性溢价为 MKT 每年 6.5%、SMB 每年 2.0%、HML 每年 3.0%,无风险利率为 4.0%(假设截至 2026 年中),基金已实现超额收益为每年 8.4%。
MKT contribution = 0.98 x 6.5% = 6.37%
SMB contribution = 0.12 x 2.0% = 0.24%
HML contribution = 0.45 x 3.0% = 1.35%
Factor-implied excess return = 6.37 + 0.24 + 1.35 = 7.96%
Total expected return = 4.0% + 7.96% = 11.96%
Implied alpha = 8.4% - 7.96% = 0.44% per year
**分析:**基金已实现的 8.4% 超额收益中,有 7.96 个百分点来自因子敞口,只有 0.44 个百分点无法解释——这与示例 1 中不显著的回归 alpha 一致。还要注意可实施性折减:该基金的价值倾向价值每年 1.35%(0.45 x 3.0%),约为标语式多空 HML 溢价的一半,正如上文关于多头策略的讨论所预示。
示例 3:带盈亏平衡信息比率的隐性指数基金筛查
已知: 某基金的月波动率为 4.30%,相对于基准的 R-squared 为 0.99,费用率为 0.85%,可比指数基金的费用率为 0.05%。
Residual vol = 4.30% x sqrt(1 - 0.99) = 4.30% x 0.10 = 0.43% per month
Tracking error = 0.43% x sqrt(12) = 1.49% annualized
Fee gap = 0.85% - 0.05% = 0.80% per year
Breakeven IR = 0.80 / 1.49 = 0.54
分析: R-squared 为 0.99(>= 0.98),跟踪误差为 1.49%(<= 2%),两项指标都触发了隐性指数基金筛查。更糟的是,在 1.49% 的主动风险预算下,经理必须维持 0.54 的信息比率,才能刚好抵消费用——这一 IR 足以跻身主动型经理的前 10%,但在此处仅仅是为了达到指数基金扣除成本后的表现。结论: 隐性指数基金;理性的持仓选择是指数基金,或跟踪误差足够大、能够弥补费用差额的真正主动型基金。
常见误区
- 把 CAPM alpha 称为“技能”: 大多数单因子 alpha 都是静态的规模/价值/动量暴露;在认可经理之前,务必控制投资者可以低成本买入的因子。
- 相信 t < 2 的正 alpha: 年化 0.5% 的 alpha,t = 0.6(示例 1),只是噪声,而非证据——同样的统计学基本原理也适用于 CAPM alpha。
- 期待仅做多产品获得学术研究中的溢价: 仅做多的倾斜对因子的载荷为 0.3-0.5,在回测忽略的成本之前,只能捕获约一半的理论溢价。
- 择时投资因子: 长达十年的低迷期(价值因子在 2017-2020 年)加上无法预测的拐点,使因子轮动成为可靠的高买低卖方式;应转而分散投资于不同因子和规模倾斜,以提高策略的可持续性。
- 盲目搜寻各种因子: 数百个已发表的因子未能通过多重检验的 t > 3 门槛;预计因子在发表后会衰减三分之一至一半(McLean and Pontiff 2016),并优先选择少数有样本外、跨国家证据支持的因子。
- 仅凭费用评判智能贝塔: 比较每个基点费用带来的因子载荷;目标因子载荷仅为 0.15 的低费率基金,其实是伪装成廉价产品的昂贵贝塔。
- 比较因子数量不同的模型的 R-squared: 每增加一个回归变量,R-squared 都会机械性上升;应使用调整后 R-squared(statistics-fundamentals 介绍了防止过拟合的准则)。
交叉引用
- statistics-fundamentals(核心插件):OLS 回归机制、t 统计量、R-squared,以及本技能多因子模型扩展的单因子 CAPM 回归
- performance-metrics(财富管理插件):信息比率和跟踪误差,用于此处的隐性指数基金盈亏平衡测试;风险调整比率可补充因子归因
- equities(财富管理插件):风格和因子指数的构建;本技能通过因子载荷落实该技能中将智能贝塔产品视为因子投资组合的规则
- asset-allocation(财富管理插件):将因子倾斜作为相对于政策组合的审慎且可持续的偏离来确定规模
- diversification(财富管理插件):因子溢价之间较低的相互相关性(例如价值和动量)构成有别于资产类别的独立分散化层
- fund-vehicles(财富管理插件):用于获取因子暴露的 ETF、共同基金和 SMA 封装形式;这些工具的费用、换手率和容量机制
运行脚本
uv run scripts/factor_investing.py # run the demo (uses PEP 723 inline deps)
uv run scripts/factor_investing.py --verify # check outputs against the worked examples (exit 1 on mismatch)
python3 scripts/factor_investing.py # alternative (requires: pip install numpy scipy)
scripts/factor_investing.py 提供一个 FactorInvesting 类及其静态方法 multifactor_regression(通过 numpy 最小二乘法执行 K 因子 OLS,返回 alpha、因子载荷、t 统计量、p 值、R-squared 和残差波动率)、expected_return_decomposition(因子载荷 x 溢价,并计算隐含 alpha)以及 closet_index_diagnostics(残差波动率、跟踪误差、盈亏平衡 IR 和隐性指数基金标记)。直接运行(或使用 --verify)会在确定性种子数据集上打印演示内容,并且断言上述示例的数值(示例 1 的因子载荷/t 统计量/R-squared、示例 2 的分解结果、示例 3 的诊断结果);任何数值不匹配都会以非零状态码退出。运行 --help 可查看方法列表。如需以编程方式使用,请导入而非运行:from factor_investing import FactorInvesting。