因子投资基础:从定义到实战
因子投资,说白了就是找规律。你想想看,为什么有些股票涨得好,有些就趴着不动?背后一定有原因。这个原因,就是我们说的「因子」。
我个人习惯把因子理解为「能解释股票收益的共同特征」。比如市值大的公司和小公司,长期表现就不一样。这就是一个因子——规模因子。
因子的定义与分类
因子到底是什么?我给它一个比较接地气的定义:因子是能够系统性地解释资产收益差异的、可观测的变量。
嗯,这里要注意,不是随便找个变量就能叫因子。它得满足几个条件:
- 系统性:不是个别现象,而是影响一大片股票
- 持续性:不是今天有明天没,得长期有效
- 可解释:背后得有经济逻辑,不能是纯统计巧合
- 可投资:你能基于它构建投资组合
因子分类上,我一般分成三大类:
| 类别 | 典型因子 | 逻辑 |
|---|---|---|
| 宏观因子 | 利率、通胀、GDP增长 | 影响整个市场 |
| 风格因子 | 价值、动量、质量 | 解释股票间差异 |
| 统计因子 | PCA提取的主成分 | 纯数学驱动 |
因子投资的发展历史
因子投资不是凭空冒出来的。它的发展脉络,我捋一捋:
- 1960年代:CAPM模型诞生,市场因子是唯一解释变量。那时候大家觉得,风险就是市场波动。
- 1970-80年代:发现CAPM解释不了很多现象。小公司效应、价值效应开始被关注。
- 1992年:Fama和French提出三因子模型,正式把规模因子和价值因子纳入框架。这是里程碑。
- 2015年:五因子模型发布,加入了盈利和投资因子。模型更精细了。
- 现在:因子动物园时代,成百上千个因子被挖掘出来。
我曾经在项目中复盘过A股的因子表现,发现一个有意思的现象:很多在美股有效的因子,在A股效果完全不同。比如低波动因子,在A股长期是负收益。这说明因子有市场特异性。
多因子模型简介
多因子模型的核心思想很简单:一个因子不够,那就多来几个。
Fama-French三因子模型
这个模型长这样:
R_i - R_f = α + β₁(R_m - R_f) + β₂(SMB) + β₃(HML) + ε
其中:
- R_m - R_f:市场超额收益(市场因子)
- SMB:小市值减大市值(规模因子)
- HML:高账面市值比减低账面市值比(价值因子)
我刚开始用这个模型时,觉得它太简单了。后来发现,简单恰恰是它的优势。三因子能解释大部分股票收益的横截面差异,R²经常能到80%以上。
Fama-French五因子模型
五因子在三因子基础上加了两个:
R_i - R_f = α + β₁(R_m - R_f) + β₂(SMB) + β₃(HML) + β₄(RMW) + β₅(CMA) + ε
- RMW:高盈利减低盈利(盈利因子)
- CMA:低投资减高投资(投资因子)
因子暴露与因子收益
这两个概念是因子投资的核心。我举个例子你就明白了:
假设你买了一只小盘价值股。它的收益可以拆成两部分:
- 因子暴露:这只股票对规模因子和价值因子的敏感度。比如规模因子暴露是0.8,价值因子暴露是1.2。
- 因子收益:因子本身在某个时间段的表现。比如这个月规模因子涨了2%,价值因子涨了1%。
那么这只股票的因子贡献就是:0.8 × 2% + 1.2 × 1% = 2.8%。剩下的部分就是α和残差。
计算因子暴露,通常用时间序列回归:
import statsmodels.api as sm
# 假设你已经有因子收益率数据
# returns: 股票收益率序列
# factors: 因子收益率矩阵
X = sm.add_constant(factors)
model = sm.OLS(returns, X).fit()
exposures = model.params[1:] # 因子暴露系数
alpha = model.params[0] # 超额收益
因子收益的计算相对简单。如果你有因子组合的收益率数据,直接取均值或累计值就行。但要注意频率问题——日频因子收益和月频因子收益,统计特性差别很大。
知识体系总览
下面这张图,是我自己梳理的因子投资知识框架。你看一眼,应该能对整个章节有个全局把握:
因子投资这条路,说难不难,说简单也不简单。关键是理解背后的逻辑,而不是盲目跑回归。我见过太多人,因子库里有几百个因子,但真正能稳定赚钱的没几个。
记住一句话:因子是工具,不是信仰。用得好,它是你的利器;用得不好,它就是过拟合的陷阱。
公众号:蓝海资料掘金营,微信deep3321