4. 线性模型回顾与局限:线性回归在因子测试中的应用、多因子模型(Fama-French)、线性模型无法捕捉非线性关系的痛点
各位同学,今天我们聊一个看似基础、但实际坑特别多的话题——线性模型。
你可能会想:「线性模型?不就是 y = wx + b 嘛,有啥好讲的?」
嗯,我当年也是这么想的。直到我在实盘里被线性模型狠狠教育了一顿,才明白:线性模型不是不能用,而是你得知道它什么时候该用、什么时候该扔。
4.1 线性回归在因子测试中的应用
先说说线性回归在因子测试里的角色。说白了,我们做因子测试,就是想回答一个问题:这个因子到底有没有预测能力?
线性回归是最直接的验证工具。我个人习惯的做法是:
- 把因子值作为自变量 X
- 把下一期收益率作为因变量 y
- 跑一个简单的 OLS 回归
代码大概长这样:
import statsmodels.api as sm
# X: 因子值矩阵,y: 下期收益率
X = sm.add_constant(factor_values)
model = sm.OLS(y, X).fit()
print(model.summary())
# 重点关注 t 统计量和 p 值
这里有个关键点:t 统计量的绝对值大于 2,通常意味着因子有统计显著性。 我在项目中遇到过很多次,因子看起来挺漂亮,一跑回归 p 值 0.3,直接废掉。
4.2 多因子模型(Fama-French)
聊完单因子测试,咱们看看多因子模型。Fama-French 三因子模型,你肯定听过:
R = α + β₁·MKT + β₂·SMB + β₃·HML + ε
这个模型的核心思想是:股票的收益可以被几个系统性因子解释。 市场风险、市值大小、估值高低——就这三板斧。
后来还加了动量因子(UMD),变成了四因子。再后来 Fama 和 French 自己又加了盈利因子和投资因子,搞出了五因子模型。
说实话,这些模型在学术界很流行,但在实战中,我个人觉得有点「过拟合」的味道。我曾经用 A 股数据跑过五因子模型,结果发现:有些因子的显著性在不同时间段完全不一样。
| 因子 | 2010-2015 | 2016-2020 | 2021-2024 |
|---|---|---|---|
| MKT(市场) | 显著 | 显著 | 显著 |
| SMB(市值) | 显著 | 不显著 | 显著 |
| HML(估值) | 显著 | 显著 | 不显著 |
| UMD(动量) | 不显著 | 显著 | 显著 |
你看,同一个因子在不同时间段的表现天差地别。这就是线性模型的第一个局限:它假设因子和收益之间的关系是稳定的。 但市场哪有什么稳定可言?
4.3 线性模型无法捕捉非线性关系的痛点
好了,终于到了今天的重头戏——线性模型的致命伤:它只能捕捉线性关系。
你想想看,市场里有多少关系是线性的?
- 换手率和收益: 低换手率可能意味着没人关注,高换手率可能意味着过度交易。中间某个区间才是最优的。这不是线性,这是倒 U 型。
- 市值和收益: 小市值股票收益高,但也不是越小越好。微盘股流动性差,一买就涨停,一卖就跌停。这也不是线性。
- 波动率和收益: 低波动率股票往往有溢价,但高波动率股票也不一定差。这关系复杂得很。
线性模型面对这些情况,只有一个办法:假装它们不存在。 它会强行画一条直线,结果就是:
- 在中间区域拟合得还行
- 在两端完全跑偏
- 整体 R² 低得可怜
我给大家画个图,直观感受一下:
看到没?红色虚线是真实的非线性关系,蓝色直线是线性模型硬拟合出来的。在因子值处于中间区域时,两者差别不大。但一旦因子值跑到两端,线性模型的预测就完全失准了。
核心痛点总结:
- 线性模型假设关系是单调的——因子越大收益越大,或者因子越小收益越大。但现实中很多关系是 U 型、倒 U 型、S 型。
- 线性模型无法捕捉交互效应——比如市值因子和动量因子组合在一起,效果可能 1+1 > 2。线性模型只能把它们各自的效果加起来。
- 线性模型对异常值极度敏感——一个极端值就能把回归系数拉偏。我见过有人因为没做 winsorize,跑出来的因子系数符号都是反的。
那怎么办?
嗯,这就是我们后面要讲的内容了。深度学习就是来解决这些问题的——它能自动学习非线性关系、交互效应,而且对异常值的鲁棒性也更强。
但别急着跳过去。我想说的是:线性模型不是没用,它是个很好的基线。 我个人的工作流程是:
- 先用线性模型跑一遍,看看因子有没有基本预测能力
- 如果线性模型效果不错,再考虑用深度学习进一步挖掘非线性信号
- 如果线性模型效果就很差,那大概率是因子本身有问题,不是模型的问题
记住一句话:深度学习不是万能药,它只是比线性模型多了一点点「想象力」。
好了,线性模型的回顾就到这里。下一节我们正式进入深度学习的世界——看看神经网络是怎么一步步从线性走向非线性的。
公众号:蓝海数据掘金营,微信deep3321