4. 因子模型入门:单因子模型、多因子模型、Fama-French三因子模型
聊到市场中性策略,就绕不开因子模型。说白了,因子模型就是帮我们拆解收益来源的工具。你想想看,一只股票涨了,到底是因为大盘涨了?还是因为它本身便宜?还是因为小盘股最近在风口上?因子模型就是用来回答这些问题的。
我个人习惯把因子模型看作是「收益的X光机」。它能穿透价格波动的表象,看到背后到底是什么力量在驱动。今天我们就从最简单的单因子模型开始,一步步深入到经典的三因子模型。
4.1 单因子模型:一切从CAPM开始
单因子模型最经典的例子就是CAPM(资本资产定价模型)。它的核心思想很简单:一只股票的预期收益,只跟一个因子有关——市场组合的收益。
公式长这样:
E(Ri) = Rf + βi × (E(Rm) - Rf)
其中:
- E(Ri):股票i的预期收益
- Rf:无风险利率(比如国债收益率)
- βi:股票i对市场因子的敏感度
- E(Rm) - Rf:市场风险溢价
说白了,CAPM告诉我们:你承担的风险越大,预期收益就应该越高。但这个「风险」特指系统性风险,也就是市场风险。那些公司特有的风险,比如管理层变动、产品召回,CAPM认为可以通过分散投资消除掉,所以市场不会为这些风险买单。
4.2 多因子模型:给收益拆解加几个维度
既然一个因子不够用,那就加因子。多因子模型的核心思想是:股票的收益受多个共同因子驱动。
一般形式是:
Ri = αi + βi1 × F1 + βi2 × F2 + ... + βik × Fk + εi
其中:
- F1, F2, ..., Fk:各个因子(比如市场、规模、价值、动量等)
- βi1, βi2, ..., βik:股票i对各因子的暴露度
- αi:超额收益(也就是因子解释不了的部分)
- εi:残差项(随机扰动)
多因子模型的好处是,你可以根据策略需求选择不同的因子组合。比如做市场中性策略,我们通常会选一些能解释大部分收益的因子,然后通过对冲掉这些因子的暴露,把纯粹的α剥离出来。
4.3 Fama-French三因子模型:业界标杆
1993年,Fama和French在CAPM的基础上加了两个因子,搞出了三因子模型。这可以说是量化金融领域最有影响力的模型之一。
三因子模型长这样:
E(Ri) - Rf = βi × (E(Rm) - Rf) + si × SMB + hi × HML
三个因子分别是:
| 因子 | 全称 | 含义 |
|---|---|---|
| 市场因子 | Rm - Rf | 市场组合收益减去无风险利率 |
| 规模因子 (SMB) | Small Minus Big | 小盘股收益减去大盘股收益 |
| 价值因子 (HML) | High Minus Low | 高账面市值比股票收益减去低账面市值比股票收益 |
为什么加这两个因子?Fama和French发现,历史上小盘股长期跑赢大盘股,价值股长期跑赢成长股。这两个现象无法用CAPM解释,所以它们被当作独立的因子加入模型。
4.4 用Python实现三因子模型
光说不练假把式。我们来看看怎么用Python跑一个三因子回归。这里我用的是statsmodels库,做OLS回归。
import pandas as pd
import numpy as np
import statsmodels.api as sm
# 假设我们有股票收益数据和三个因子数据
# df 包含: 'stock_return', 'market_factor', 'smb', 'hml'
# 准备自变量和因变量
X = df[['market_factor', 'smb', 'hml']]
y = df['stock_return'] - df['rf'] # 超额收益
# 加截距项(α)
X = sm.add_constant(X)
# 跑回归
model = sm.OLS(y, X).fit()
# 输出结果
print(model.summary())
# 提取关键参数
alpha = model.params['const']
beta_mkt = model.params['market_factor']
beta_smb = model.params['smb']
beta_hml = model.params['hml']
print(f"α = {alpha:.4f}")
print(f"市场因子暴露 = {beta_mkt:.4f}")
print(f"规模因子暴露 = {beta_smb:.4f}")
print(f"价值因子暴露 = {beta_hml:.4f}")
跑完回归后,你会得到每个因子的系数(暴露度)和α。α就是因子模型解释不了的那部分收益——如果α显著为正,说明你的选股能力不错;如果α接近零,说明收益基本被因子解释了。
4.5 因子模型的实战应用
因子模型在量化投资中主要有三个用途:
- 收益归因:搞清楚收益到底来自哪里。是选股能力强(α),还是运气好踩中了某个因子风口?
- 风险控制:通过控制因子暴露来管理风险。比如你不想承担小盘股风险,就把SMB的暴露调到零。
- 策略构建:根据因子预期来构建组合。比如你预测价值因子未来会走强,就多配一些高HML暴露的股票。
我记得有一次帮一个私募做策略诊断,他们的产品年化收益15%,看起来不错。但用三因子模型一拆解,发现α只有2%,剩下13%全是小盘股和价值因子的贡献。后来市场风格切换,这两个因子同时回撤,产品净值直接跌了20%。这就是不重视因子暴露分析的后果。
嗯,因子模型入门就聊到这里。它不是一个完美的工具,但绝对是量化投资中不可或缺的基础。你想想看,没有因子模型,你怎么知道你的收益到底是能力还是运气?