4. 多因子模型基础:线性多因子模型、因子暴露与因子收益率、Alpha与Beta分离
各位同学,今天我们进入多因子模型的核心地带。说实话,这部分内容我当年自学的时候绕了不少弯路。你想想看,一堆数学符号堆在一起,很容易让人头晕。但别怕,咱们今天把它拆开揉碎了讲。
多因子模型,说白了就是回答一个问题:股票的收益到底从哪来? 是市场整体涨了?还是它本身有什么特别之处?
4.1 线性多因子模型:从CAPM到多因子
最早的时候,大家觉得股票收益只跟市场有关,这就是CAPM模型。但我个人习惯认为,CAPM太理想化了。你想想,如果只靠市场一个因子,那茅台和ST股的区别在哪?
所以后来有了多因子模型。它的数学形式其实很简单:
r_i = α_i + β_i1 * f_1 + β_i2 * f_2 + ... + β_ik * f_k + ε_i
其中:
r_i是股票 i 的超额收益β_ij是股票 i 在因子 j 上的暴露f_j是因子 j 的收益率α_i是股票 i 的Alphaε_i是残差项
我在项目中遇到过很多新手,一上来就堆几十个因子。结果呢?过拟合得一塌糊涂。记住,因子不是越多越好,关键是每个因子都要有经济学含义。
核心要点:线性多因子模型假设因子收益与股票收益之间是线性关系。虽然现实世界没那么完美,但这个假设让模型变得可解释、可计算。做量化,有时候「有用」比「精确」更重要。
4.2 因子暴露与因子收益率
这两个概念,我建议你放在一起理解。因子暴露是「你有多像这个因子」,因子收益率是「这个因子本身赚了多少钱」。
举个例子:
- 因子暴露:某股票的市净率在所有股票中排前10%,那它在「价值因子」上的暴露就很高
- 因子收益率:这个月价值因子整体涨了2%,这就是因子收益率
计算因子收益率,最常用的方法是截面回归。代码实现如下:
import pandas as pd
import statsmodels.api as sm
# 假设我们有股票收益和因子暴露数据
# returns: 每只股票的收益
# exposures: 每只股票在各因子上的暴露
def estimate_factor_returns(returns, exposures):
"""
通过截面回归估计因子收益率
"""
# 添加截距项(代表Alpha)
X = sm.add_constant(exposures)
# 截面回归:每期做一次
model = sm.OLS(returns, X)
results = model.fit()
# 因子收益率就是回归系数
factor_returns = results.params
return factor_returns
避坑指南:我曾经犯过一个低级错误——直接用原始因子值做回归,忘了做标准化。结果因子暴露量纲不同,回归系数根本没法解释。记住,因子暴露一定要标准化,通常转成z-score。
4.3 Alpha与Beta分离
这是多因子模型最核心的应用之一。Beta是「靠天吃饭」的部分,Alpha是「凭本事吃饭」的部分。
怎么分离?很简单:
# 假设我们已经估计出了因子收益率
# factor_returns: 各因子的收益率序列
# betas: 股票在各因子上的暴露
def decompose_returns(stock_returns, factor_returns, betas):
"""
将股票收益分解为Alpha和Beta
"""
# Beta收益 = 因子暴露 × 因子收益率
beta_return = np.dot(betas, factor_returns)
# Alpha收益 = 实际收益 - Beta收益
alpha = stock_returns - beta_return
return alpha, beta_return
嗯,这里要注意:Alpha不是白来的。如果你发现某只股票持续有正Alpha,要么是你发现了真正的超额收益来源,要么是你的模型漏掉了某个重要因子。
重要提醒:Alpha和Beta的分离依赖于模型设定。如果你漏掉了关键因子,所谓的「Alpha」其实只是未被解释的Beta。这就是为什么因子选择如此重要。
4.4 知识体系结构图
下面这张图,是我自己总结的多因子模型知识框架。你把它存下来,以后每次做因子分析前看一眼,能少走很多弯路。
4.5 实战中的坑与经验
最后,分享几个我踩过的坑:
- 因子共线性:两个因子高度相关时,回归系数会变得不稳定。我建议用VIF(方差膨胀因子)做诊断,VIF大于5就要小心了。
- 因子收益率的时序相关性:如果因子收益率有自相关,说明市场存在某种动量或反转效应。这时候用Newey-West标准误调整一下。
- Alpha的统计显著性:别看到正Alpha就兴奋。算一下t统计量,如果绝对值小于2,那很可能只是随机波动。
我的习惯:每次建完多因子模型,我都会做一次「Alpha回测」——把样本内外的Alpha分布画出来。如果样本外的Alpha均值接近零,说明模型没问题。如果样本外Alpha显著为负,那就要反思是不是过拟合了。
好了,多因子模型的基础就讲到这里。记住,模型是工具,不是目的。真正重要的是你如何理解市场、如何构建有意义的因子。下次我们聊因子挖掘的具体方法,到时候见。