因子分类体系:宏观因子、风格因子、行业因子、统计因子、基本面因子
做量化这些年,我见过不少人一上来就堆因子。几百个因子往里塞,回测曲线漂亮得不行。结果实盘一跑,直接崩了。
为什么会这样?说白了,就是没搞清楚因子的分类体系。你想想看,连因子是什么类型都没弄明白,你怎么敢用它来预测收益?
今天我就把这五类因子掰开揉碎了讲清楚。这五类分别是:宏观因子、风格因子、行业因子、统计因子、基本面因子。嗯,咱们一个一个来。
核心观点:因子分类不是学术游戏。它直接决定了你的组合构建逻辑、风险归因方式、以及最终的实盘表现。
1. 宏观因子:市场的底层驱动力
宏观因子,说白了就是那些能影响所有资产价格的大变量。利率、通胀、GDP增速、汇率、信用利差——这些东西一动,整个市场都得跟着抖三抖。
我个人习惯把宏观因子分成两类:增长类和价格类。增长类看经济周期,价格类看通胀和利率。这两类因子组合起来,基本能解释大部分资产的长期走势。
实战经验:我在做多资产配置时,第一件事就是看宏观因子的状态。比如2022年,通胀因子飙升,利率因子跟着往上走。这时候你如果还重仓成长股,那基本就是送人头。我当时把组合里的久期砍了一半,换成了商品和通胀挂钩债券,才勉强保住了收益。
宏观因子的核心应用场景有两个:
- 资产配置:判断大类资产的长期方向
- 风险对冲:用宏观因子暴露来对冲系统性风险
但要注意,宏观因子的预测能力其实很弱。你想想看,如果能准确预测下个月的CPI,你早就是亿万富翁了。所以宏观因子更适合做风险归因,而不是做择时。
2. 风格因子:横截面的秘密武器
风格因子,这是咱们量化圈最熟悉的领域。价值、动量、质量、规模、低波、成长——这些因子解释了个股之间的收益差异。
我记得刚入行那会儿,觉得风格因子就是万能的。后来发现,风格因子也有失效的时候。比如2020年,价值因子跌成狗,动量因子也频繁反转。那段时间我回撤了15%,心里慌得一批。
风格因子的核心特征:
- 横截面属性:在同一时间点,不同股票在风格因子上的暴露不同
- 时序稳定性:风格因子的收益在长期是稳定的,但短期会剧烈波动
- 可投资性:可以通过构建多空组合来获取风格因子收益
重要提醒:风格因子之间不是独立的。价值和动量经常负相关,质量和低波高度相关。做组合时一定要考虑因子之间的相关性,否则你会以为自己做了分散化,实际上全押在同一个风险源上。
我个人建议,风格因子的数量控制在5-8个就够了。太多了反而容易过拟合。我见过有人搞了50个风格因子,回测曲线漂亮得不像话,实盘直接崩了。为什么?因为很多因子其实就是同一个东西的不同变种。
3. 行业因子:躲不开的板块效应
行业因子,这个好理解。同一个行业的股票,走势往往高度相关。你想想看,新能源板块涨的时候,宁德时代和比亚迪能差到哪去?
行业因子的处理方式有两种:
- 哑变量法:每个行业设一个0/1变量,属于该行业就取1,否则取0
- 行业指数法:直接用行业指数的收益率作为因子
我个人更倾向于哑变量法。为什么?因为行业指数本身也包含了风格因子的影响。比如消费行业指数,里面既有行业因素,也有质量因子、成长因子的影响。用哑变量法可以更干净地剥离出纯粹的行业效应。
避坑指南:我曾经在构建多因子模型时,把行业因子和风格因子一起放进去做回归。结果发现行业因子的系数全都不显著。后来才意识到,风格因子已经吸收了行业因子的解释力。正确的做法是:先对收益率做行业中性化处理,再跑风格因子模型。
行业因子的应用场景:
- 行业轮动:根据行业因子的动量或估值来做轮动
- 风险控制:控制组合在单个行业上的暴露,避免过度集中
4. 统计因子:数据说了算
统计因子,这是最"数学"的一类因子。主成分分析(PCA)、独立成分分析(ICA)、因子分析(FA)——这些方法不依赖任何经济理论,纯粹从数据中提取共同因子。
统计因子的优点很明显:解释力强。你拿1000只股票的收益率矩阵做PCA,前几个主成分就能解释60%-70%的方差。缺点也很明显:可解释性差。你很难说清楚第三个主成分到底代表什么。
我个人的经验是,统计因子更适合做降维和噪声过滤,而不是做投资决策。比如,你可以用PCA提取前10个主成分,然后用这些主成分来估计协方差矩阵,这样能有效避免协方差矩阵的估计误差。
小技巧:用统计因子做协方差矩阵估计时,记得做一下"去噪"处理。把特征值小于某个阈值的成分直接扔掉,只保留信号部分。我在实盘中用这个方法,组合的波动率降低了大概15%。
统计因子的代码实现其实很简单:
import numpy as np
from sklearn.decomposition import PCA
# 假设 returns 是 N只股票 x T个时间点的收益率矩阵
pca = PCA(n_components=10)
factors = pca.fit_transform(returns.T) # 提取前10个统计因子
loadings = pca.components_ # 因子载荷矩阵
# 解释方差比例
explained_ratio = pca.explained_variance_ratio_
print(f"前10个因子解释了 {explained_ratio.sum():.2%} 的方差")
5. 基本面因子:回归公司本质
基本面因子,这是最"传统"的一类因子。PE、PB、ROE、营收增长率、毛利率、资产负债率——这些指标直接来自公司的财务报表。
基本面因子和风格因子有重叠,但侧重点不同。风格因子更关注市场定价,比如价值因子看的是PB和PE的百分位。基本面因子更关注公司质量,比如ROE的高低、毛利率的稳定性。
基本面因子的核心优势:
- 逻辑清晰:好公司就应该有好价格,这个逻辑谁都懂
- 数据可靠:财务报表是经过审计的,造假成本高
- 长期有效:基本面因子在长期维度上表现稳定
但基本面因子也有硬伤:频率低。季报一年才四次,年报一年一次。你拿着季度数据去做日频交易,那基本是刻舟求剑。
我的建议:基本面因子适合做低频选股,比如月度调仓。如果你做高频交易,基本面因子基本没用。我自己的组合里,基本面因子占30%的权重,风格因子占50%,剩下的20%给行业因子和宏观因子。
各类因子的对比总结
| 因子类型 | 数据来源 | 更新频率 | 解释能力 | 可解释性 | 主要用途 |
|---|---|---|---|---|---|
| 宏观因子 | 宏观经济数据 | 月度/季度 | 高(系统性) | 高 | 资产配置、风险对冲 |
| 风格因子 | 市场交易数据 | 日度 | 中(横截面) | 高 | 选股、组合构建 |
| 行业因子 | 行业分类 | 日度 | 中(板块效应) | 高 | 行业轮动、风险控制 |
| 统计因子 | 收益率数据 | 日度 | 高(降维) | 低 | 协方差估计、噪声过滤 |
| 基本面因子 | 财务报表 | 季度 | 低(长期) | 高 | 低频选股、价值投资 |
嗯,这五类因子各有各的脾气。宏观因子管大局,风格因子管选股,行业因子管板块,统计因子管降维,基本面因子管质量。你不可能只用一类因子就把所有问题都解决。
我个人习惯的做法是:宏观因子定方向,风格因子选个股,行业因子控风险,统计因子做优化,基本面因子做验证。五类因子配合使用,才能构建出真正稳健的组合。