2. 因子分类体系:基本面因子、技术因子、另类因子、宏观因子的划分与特点
做多因子模型这些年,我最大的感触就是——因子分类搞不清楚,后面全是糊涂账。
你想想看,市面上有成百上千个因子,怎么管?怎么选?怎么组合?
我个人习惯,先把因子分成四大类:基本面因子、技术因子、另类因子、宏观因子。这四类各有各的脾气,也各有各的坑。
2.1 基本面因子:最老牌,也最稳
基本面因子,说白了就是看公司本身好不好。估值、盈利、成长、财务质量,这些都算。
我记得刚入行那会儿,带我的老工程师说了一句话,我一直记着:「基本面因子是慢变量,但也是长变量」。什么意思?就是它不会天天变,但一旦变了,影响是长期的。
- 估值类:PE、PB、PS、PCF
- 盈利类:ROE、ROA、毛利率、净利率
- 成长类:营收增速、利润增速、EPS增速
- 财务质量:资产负债率、现金流覆盖率、存货周转率
这里有个坑,我踩过。基本面因子有个致命弱点——数据频率低。季报一出,数据才更新一次。你想想看,三个月才刷新一次,中间市场早就变了好几轮了。
所以我现在做基本面因子,一定会做一件事:做预期调整。用分析师一致预期替代历史数据,能提前1-2个月捕捉信号。
2.2 技术因子:短频快,但容易过拟合
技术因子,就是看价格和成交量。动量、反转、波动率、换手率,这些都属于技术因子。
这类因子有个特点:信号频率高。日线、分钟线,甚至tick级数据都能用。适合做短线策略。
但问题也很明显——过拟合风险极高。你随便调几个参数,就能在历史数据上跑出漂亮的曲线。但一到实盘,立马现原形。
举个例子,动量因子。很多人直接用过去N天的收益率。但N取多少?20天?60天?120天?
我建议你试试这个思路:不要只用一个窗口,用多窗口加权。
# 多窗口动量因子示例
def multi_window_momentum(close, windows=[5, 20, 60]):
"""
多窗口动量因子
windows: 短、中、长三个窗口
返回:加权动量得分
"""
import pandas as pd
import numpy as np
# 计算各窗口收益率
rets = {}
for w in windows:
rets[f'mom_{w}d'] = close.pct_change(w)
# 加权合成(短窗口权重低,长窗口权重高)
weights = [0.2, 0.3, 0.5]
mom_score = sum(rets[f'mom_{w}d'] * w for w, weight in zip(windows, weights))
return mom_score
这样做的好处是:既保留了短期动量的敏感性,又兼顾了长期趋势的稳定性。我在实盘中用这个方法,夏普比率比单窗口提升了约0.3。
2.3 另类因子:信息差的最大来源
另类因子,是最近几年最火的方向。为什么?因为传统因子已经卷得差不多了,超额收益越来越薄。
另类数据包括:
- 舆情数据:新闻情感、社交媒体热度、股吧评论
- 供应链数据:上下游关系、供应商集中度
- 卫星数据:停车场车流量、工厂烟囱排放
- 支付数据:信用卡消费、电商交易
- 招聘数据:岗位数量、薪资变化
但另类因子也有个大问题——数据清洗成本极高。我做过一个舆情因子项目,光数据清洗就占了60%的时间。原始数据里全是噪声:广告、水军、重复内容……
做另类因子,我建议你记住一句话:数据质量 > 数据数量。宁可少用几个数据源,也要保证每个数据源的质量可控。
2.4 宏观因子:大方向对了,细节才重要
宏观因子,看的是整个经济环境。利率、汇率、通胀、GDP、PMI,这些都属于宏观因子。
这类因子有个特点:影响范围广,但信号频率低。一个月甚至一个季度才更新一次。
很多人觉得宏观因子没用,因为信号太慢了。但我不这么看。宏观因子决定了资产配置的大方向。你想想看,如果利率进入上升周期,成长股的压力就大;如果PMI持续扩张,周期股就有机会。
举个例子,利率因子怎么用?
# 利率因子对行业配置的影响
def rate_sensitivity_adjustment(rate_change, industry_betas):
"""
根据利率变化调整行业权重
rate_change: 利率变化(bp)
industry_betas: 各行业对利率的敏感度
"""
# 利率上升,降低高敏感度行业权重
adjustment = -rate_change * industry_betas / 100
# 归一化
adjustment = adjustment / adjustment.sum()
return adjustment
这里要注意:宏观因子不能单独用。它的信号太粗,必须结合其他因子一起用。我习惯把宏观因子作为条件变量,用来调整其他因子的权重。
2.5 四类因子的对比与协同
说了这么多,我们来总结一下这四类因子的特点:
| 因子类型 | 数据频率 | 信号周期 | 相关性 | 主要风险 |
|---|---|---|---|---|
| 基本面因子 | 低(季度) | 长(3-12个月) | 中等 | 数据滞后 |
| 技术因子 | 高(日/分钟) | 短(1-60天) | 低 | 过拟合 |
| 另类因子 | 中(日/周) | 中(1-6个月) | 极低 | 数据质量 |
| 宏观因子 | 低(月/季) | 长(6-24个月) | 高 | 信号粗糙 |
你看,这四类因子其实是互补的:
- 基本面因子提供长期价值锚
- 技术因子捕捉短期交易机会
- 另类因子提供信息差优势
- 宏观因子决定大方向
我个人习惯,一个完整的因子组合,至少包含这四类中的三类。只靠一类因子,很难持续跑赢市场。
嗯,因子分类这块,今天就聊到这儿。下一节我们聊聊因子数据的获取与清洗,那又是另一番天地了。