第三节:单因子测试框架——IC分析、IR分析、分层回测、多空组合收益
各位同学,今天我们来聊聊单因子测试框架。说实话,这个框架是量化选股的基石,也是我入行时花最多时间啃的一块硬骨头。我记得刚做研究员那会儿,领导丢给我一个因子库,说「跑一遍测试,看看哪些能用」。我当时以为就是算个相关系数就完事了,结果被现实狠狠教育了一顿。
单因子测试,说白了就是回答三个问题:这个因子有没有预测能力?预测能力稳不稳定?能不能用来赚钱? 下面我按实战流程,把四个核心模块拆开讲。
一、IC分析:因子与收益的相关性
IC(Information Coefficient)是因子测试的起点。它衡量的是因子值与未来收益之间的相关性。我个人习惯用Spearman秩相关系数,因为对极端值不敏感,更稳健。
计算公式很简单:
IC = corr(因子值_t, 收益率_{t+1})
但这里有个坑——截面IC和时序IC要分清楚。截面IC是每个时间截面上,所有股票的因子值与收益的相关系数;时序IC是单只股票的历史因子值与收益的相关系数。我们做多因子选股,主要看截面IC。
实战经验:我建议你计算IC时,至少用过去24个月的滚动窗口。太短了噪声大,太长了反应迟钝。另外,IC的均值要大于0.02才算有统计意义,低于这个值基本就是随机波动。
IC分析的结果通常用一张热力图展示,横轴是时间,纵轴是因子,颜色深浅代表IC值大小。嗯,这里我贴一张我常用的IC分布图:
二、IR分析:IC的稳定性
IC只告诉我们相关性的大小,但没告诉我们这个相关性是否稳定。这时候就要看IR(Information Ratio)了。
IR = IC的均值 / IC的标准差
你想想看,如果一个因子IC均值是0.05,但标准差也是0.05,那IR=1,说明有一半的时间IC是负的,这你敢用吗?我个人的经验是:IR至少要大于0.5才值得进一步研究,大于1.0才算优质因子。
避坑指南:我曾经遇到一个因子,IC均值高达0.08,IR却只有0.3。后来一查,原来是2015年牛市那几个月贡献了全部收益,其余时间全是负的。这种「一招鲜」的因子,实盘会死得很惨。
IR分析还有一个变种——RankIC的IR。因为RankIC本身对极端值不敏感,所以RankIC的IR比普通IC的IR更可靠。我建议你两个都算,如果差异很大,说明因子值存在异常值干扰。
三、分层回测:验证单调性
IC和IR都是统计指标,但实际交易中,我们更关心因子的单调性。说白了,就是因子值高的股票,收益是不是真的比因子值低的股票好?
分层回测的做法:
- 每个月末,把所有股票按因子值从大到小排序
- 等分成N组(通常5组或10组)
- 每组等权买入,持有到下个月末
- 计算每组的累计收益
理想情况下,第1组(因子值最高)收益最高,第5组(因子值最低)收益最低,中间组依次排列。这就是单调性。
| 分组 | 年化收益率 | 年化波动率 | 夏普比率 | 最大回撤 |
|---|---|---|---|---|
| 第1组(高因子) | 18.5% | 22.3% | 0.83 | -15.2% |
| 第2组 | 14.2% | 21.8% | 0.65 | -18.7% |
| 第3组 | 10.8% | 20.5% | 0.53 | -22.1% |
| 第4组 | 7.5% | 19.2% | 0.39 | -25.6% |
| 第5组(低因子) | 3.1% | 18.6% | 0.17 | -30.4% |
你看上面这张表,第1组到第5组,年化收益从18.5%一路降到3.1%,单调性非常漂亮。但要注意,如果中间某两组收益倒挂了,比如第2组比第1组还高,那这个因子就有问题——可能是分组太粗,也可能是因子本身非线性。
注意:分层回测一定要做行业中性化处理。我见过有人拿银行股和科技股一起分层,结果因子值高的全是科技股,收益高是因为行业本身好,跟因子没关系。这种「伪单调性」会害死人。
四、多空组合收益:最后的实战检验
分层回测看的是单调性,但实际交易中,我们更关心多空组合的收益。做法是:做多第1组,做空第5组,计算这个组合的收益曲线。
多空组合的好处是:
- 剥离市场风险:多空对冲后,大盘涨跌的影响基本被消除
- 纯因子收益:剩下的就是因子本身的选股能力
- 可交易性:如果多空组合收益稳定,说明因子可以用于构建市场中性策略
我习惯用下面这张图来展示多空组合的净值曲线:
你看这条曲线,稳步向上,回撤小,这就是一个优质因子的多空组合表现。如果曲线像过山车一样大起大落,那说明因子不稳定,实盘很难拿住。
我的习惯:多空组合的夏普比率至少要大于1.5,我才会考虑把这个因子纳入最终模型。低于这个值,说明因子收益不够补偿交易成本。别忘了,A股做空成本可不低,融券费率、印花税、冲击成本,加起来一年至少吃掉2-3个点。
五、整体框架图
最后,我把整个单因子测试框架画成一张流程图,方便你理解各模块之间的关系:
这张图展示了完整的测试流程:从原始因子数据出发,经过清洗预处理,然后并行进行IC、IR和分层回测三个维度的分析,最后汇总到多空组合收益这个终极检验。每一步都有严格的量化标准,任何一个环节不达标,这个因子就要被淘汰。
好了,单因子测试框架就讲到这里。记住,IC看相关性,IR看稳定性,分层看单调性,多空看实战性。四个维度缺一不可。下次你拿到一个新因子,按这个流程走一遍,基本就能判断它是不是「真金子」了。
公众号:蓝海资料掘金营,微信deep3321