第四章:因子分类体系
做多因子模型,第一件事是什么?
不是找数据,不是调参数。而是——搞清楚你手里的因子,到底属于哪一类。
我见过太多人,上来就堆几百个因子,结果回测漂亮,实盘一塌糊涂。为什么?因为因子之间互相打架,你根本不知道哪些是重复的,哪些是互补的。
今天我们就来聊聊因子分类这件事。说白了,就是给你的因子「上户口」。
4.1 为什么需要分类?
你想想看,一个厨房里,盐和糖长得差不多,但用法完全不同。因子也一样。
我个人习惯,拿到一个新因子,先问三个问题:
- 它解释的是什么风险?
- 它的数据来源是什么?
- 它和经济逻辑怎么对应?
这三个问题,其实就是三种分类方式的起点。
核心观点:因子分类不是学术游戏,而是实战工具。分类对了,组合构建、风险归因、绩效分析才能落地。
4.2 基于经济意义的分类
这是最直观的分类方式。说白了,就是看因子背后有没有「人话」能讲通的经济逻辑。
4.2.1 风格因子
这类因子大家最熟悉。价值、动量、质量、规模、低波……
我在项目中遇到过一件事:有个团队把「市净率倒数」和「股息率」都归为价值因子,结果两个因子相关性高达0.85。嗯,这其实是在重复造轮子。
风格因子的特点是:
- 有长期溢价(至少学术上这么说)
- 在不同市场间可复制
- 有明确的投资逻辑
| 风格因子 | 典型指标 | 经济逻辑 |
|---|---|---|
| 价值 | BP、EP、CFP | 市场过度反应,低估股票回归 |
| 动量 | 过去12个月收益(剔除最近1个月) | 趋势延续,信息缓慢扩散 |
| 质量 | ROE、毛利率、杠杆率 | 好公司有护城河 |
| 低波 | 过去60个月波动率 | 彩票效应,高波动被高估 |
我的经验:风格因子之间不是独立的。比如低波和动量经常负相关。做组合时,一定要算一下因子间的相关系数矩阵。
4.2.2 宏观因子
这类因子和宏观经济挂钩。利率、通胀、GDP增速、信用利差……
我曾经犯过一个错:直接用CPI同比作为通胀因子,结果发现它对股票收益的解释力几乎为零。后来才意识到,市场定价的是「预期外的通胀变化」,不是通胀本身。
宏观因子的难点在于:
- 数据频率低(季度甚至年度)
- 滞后性强
- 需要做预期差处理
4.2.3 另类因子
这是近几年最火的方向。卫星图像、社交媒体情绪、供应链数据、专利文本……
说白了,就是「别人还没用上的数据」。我有个朋友用招聘网站的数据预测公司业绩,效果居然比分析师一致预期还好。
但要注意:另类因子的信噪比极低。你想想看,1000条推文里可能只有1条是有用的信号。
避坑指南:我曾经用新闻情绪做因子,回测年化超额15%。结果实盘时发现,新闻数据有1天的延迟,等信号出来,价格已经反应完了。嗯,从那以后我再也不信「实时情绪」了。
4.3 基于统计的分类
经济意义分类很直观,但有个问题:它依赖人的主观判断。两个研究员可能把同一个因子归到不同类别。
统计分类就不一样了。它让数据说话。
4.3.1 主成分分析(PCA)
PCA的核心思想:把一堆相关因子,压缩成几个不相关的「主成分」。
我习惯用PCA做两件事:
- 降维:从100个因子降到10个主成分
- 去噪:扔掉解释方差最小的那些成分
# 一个简单的PCA示例
import numpy as np
from sklearn.decomposition import PCA
# 假设我们有100个因子,500个时间点
X = np.random.randn(500, 100)
# 保留95%方差
pca = PCA(0.95)
X_pca = pca.fit_transform(X)
print(f"原始维度: {X.shape[1]}")
print(f"压缩后维度: {X_pca.shape[1]}")
print(f"解释方差比: {pca.explained_variance_ratio_.sum():.2%}")
注意:PCA出来的主成分没有经济含义。你没法说「主成分1是价值因子」。它只是一个数学构造。
4.3.2 因子聚类
另一种思路:用聚类算法把因子分组。比如K-means、层次聚类。
我做过一个实验:把A股常见的200个因子做层次聚类,结果发现——
- 第一大类:估值相关(PB、PE、PS……)
- 第二大类:动量相关(各种窗口期的收益)
- 第三大类:波动相关(各种波动率指标)
有意思的是,有些「另类因子」被分到了传统类别里。这说明它们本质上并不「另类」。
4.4 两种分类方式的对比
| 维度 | 经济意义分类 | 统计分类 |
|---|---|---|
| 可解释性 | 高(有逻辑支撑) | 低(黑箱) |
| 客观性 | 低(依赖主观判断) | 高(数据驱动) |
| 稳定性 | 高(逻辑不变) | 低(样本变化,结果变化) |
| 实战价值 | 适合风险归因 | 适合因子筛选 |
我个人建议:两种方法结合着用。先用经济意义分类做初筛,再用统计方法做验证。
4.5 一张图看懂因子分类体系
4.6 实战中的分类策略
说了这么多理论,到底怎么用?
我分享一个自己常用的流程:
- 第一步:经济意义打标签——每个因子手动标注「风格/宏观/另类」
- 第二步:统计验证——用PCA看这些标签是否合理,有没有跨类别的因子
- 第三步:相关性检查——同类因子间相关性 > 0.7 的,只保留一个
- 第四步:稳定性测试——滚动窗口做聚类,看分类结果是否随时间变化
一个小技巧:我习惯把因子分类结果存成一个配置文件。每次新增因子,先跑一遍分类流程,再决定是否加入模型。这样能避免「因子动物园」的问题。
嗯,因子分类这件事,说难不难,说简单也不简单。关键是找到适合你策略的方法。别盲目追求「全」,也别偷懒「随便分」。
记住:分类是为了用,不是为了分。
公众号:蓝海资料掘金营,微信deep3321