第二章:因子分类体系
做量化投资这些年,我最大的体会就是:因子分类这事儿,看着简单,做起来全是坑。你想想看,市场上几千只股票,每天上亿条数据,如果没有一个清晰的分类框架,那跟瞎子摸象没什么区别。
我个人习惯把因子分成四大类:宏观因子、风格因子、行业因子、主题因子。这四类各有各的脾气,咱们一个一个说。
2.1 宏观因子:经济的脉搏
宏观因子,说白了就是整个经济大环境的温度计。我刚开始做量化的时候,总觉得宏观因子太虚,不如技术指标来得实在。直到有一次,我重仓了一个周期股策略,结果央行突然加息,三天亏了15%。嗯,从那以后我再也不敢小看宏观因子了。
宏观因子主要分三类:
- 经济增长因子:GDP增速、PMI、工业增加值、社零数据
- 通胀因子:CPI、PPI、核心通胀率、大宗商品价格
- 利率因子:基准利率、国债收益率、信用利差、SHIBOR
核心逻辑:宏观因子是所有因子的"背景音乐"。经济增长好,价值因子往往表现不错;通胀起来了,大宗商品相关因子就活跃;利率一降,成长股就蹦跶。
我曾经犯过一个错误:把CPI和PPI放在同一个因子模型里。结果两个变量高度相关,模型直接炸了。后来我才明白,宏观因子之间相关性很强,建模时一定要做多重共线性检验。
2.2 风格因子:股票的"性格"
风格因子是我最常用的。你想想看,股票跟人一样,各有各的性格。有的股票天生就便宜(价值),有的就是涨得快(动量),有的稳如老狗(低波)。
我常用的风格因子有五个:
| 因子名称 | 核心逻辑 | 常用指标 | 我的经验 |
|---|---|---|---|
| 价值因子 | 便宜就是硬道理 | PE、PB、PS、股息率 | 注意区分"真便宜"和"价值陷阱" |
| 动量因子 | 强者恒强 | 过去6-12个月收益率 | 动量容易在震荡市里翻车 |
| 质量因子 | 好公司才有好回报 | ROE、毛利率、负债率 | 质量因子在熊市里最抗跌 |
| 规模因子 | 小盘股有超额收益 | 市值、流通市值 | A股的小盘效应比美股明显 |
| 低波因子 | 稳扎稳打 | 过去1年波动率、Beta | 低波因子长期有效,但短期可能跑输 |
避坑指南:我曾经把动量因子和低波因子放在一起做多因子模型,结果发现这两个因子天然冲突——动量喜欢追涨,低波喜欢避险。后来我做了因子正交化处理,才解决了这个问题。
2.3 行业因子:赛道决定命运
行业因子,说白了就是"选对赛道比选对马更重要"。我记得2019年,我同时看好两个股票,一个在半导体行业,一个在纺织行业。结果半导体那个涨了200%,纺织那个跌了10%。同样的选股逻辑,不同的行业,天壤之别。
行业因子的分类标准:
- 申万一级行业:28个行业,最常用
- 中信行业:29个行业,机构用得比较多
- GICS行业:全球标准,做跨市场策略时必用
我个人习惯用申万一级行业,因为它在A股市场覆盖最全。但要注意,行业分类每年都会调整,比如2021年申万就把"食品饮料"拆成了"食品"和"饮料"两个行业。做回测的时候一定要用当时的行业分类,不然会有前视偏差。
2.4 主题因子:风口上的猪
主题因子是最难把握的,但也是收益最高的。你想想看,2020年的新能源、2021年的元宇宙、2023年的AI,哪个不是涨得让人眼红?
主题因子的特点:
- 时效性强:一个主题可能只火3-6个月
- 波动大:涨得快,跌得也快
- 难以量化:很多主题因子靠的是"概念",不是数据
重要提醒:主题因子最容易踩坑。我曾经在2021年追了"碳中和"主题,结果买在了最高点,亏了30%。后来我总结了一个原则:主题因子只做右侧交易,等趋势确认了再进场。
2.5 因子分类框架图
下面这张图是我自己整理的因子分类框架,每次做策略之前我都会看一眼,提醒自己不要漏掉某个维度。
2.6 因子之间的相互作用
这里我要说一个很多人忽略的问题:因子之间不是独立的。你想想看,利率上升的时候,价值因子往往表现好,成长因子就吃瘪。这就是因子之间的"跷跷板效应"。
我总结了几组常见的因子关系:
- 利率 vs 成长:利率越低,成长因子越强
- 通胀 vs 价值:通胀上升,价值因子受益
- 经济增速 vs 动量:经济好,动量因子有效
- 波动率 vs 低波:市场波动大,低波因子吃香
实战建议:做多因子模型的时候,一定要做因子相关性矩阵。我一般设定阈值0.6,超过这个值的两个因子,要么只留一个,要么做正交化处理。不然模型会出大问题。
2.7 一个简单的因子分类代码
下面是我常用的因子分类代码,用Python写的。这个代码的作用是把因子按照类别打上标签,方便后续建模。
# 因子分类函数
def classify_factor(factor_name):
"""
对因子进行分类
返回: 'macro', 'style', 'industry', 'theme'
"""
macro_factors = ['GDP', 'CPI', 'PPI', 'PMI', '利率', 'M2', '社融']
style_factors = ['PE', 'PB', '动量', '波动率', '市值', 'ROE', '股息率']
industry_factors = ['申万', '中信', 'GICS', '行业']
theme_factors = ['新能源', 'AI', '元宇宙', '碳中和', '半导体']
for keyword in macro_factors:
if keyword in factor_name:
return 'macro'
for keyword in style_factors:
if keyword in factor_name:
return 'style'
for keyword in industry_factors:
if keyword in factor_name:
return 'industry'
for keyword in theme_factors:
if keyword in factor_name:
return 'theme'
return 'unknown'
# 使用示例
factors = ['GDP增速', 'PE_TTM', '申万一级行业', 'AI概念']
for f in factors:
print(f"{f} -> {classify_factor(f)}")
这个代码虽然简单,但我在实际项目中用了好几年。后来数据量大了,我改成了用配置文件来管理因子分类,但核心逻辑没变。
2.8 本章小结
因子分类这事儿,说白了就是给市场"拍X光片"。宏观因子看骨架,风格因子看肌肉,行业因子看器官,主题因子看神经。四者结合,才能看清市场的全貌。
我个人建议,刚开始做因子研究的朋友,先从风格因子入手。因为风格因子数据好拿、逻辑清晰、回测方便。等风格因子玩熟了,再慢慢加入宏观和行业因子。主题因子嘛...嗯,这个要看缘分,别强求。
公众号:蓝海数据掘金营,微信deep3321