3、因子衰减的量化度量:IC衰减曲线、因子收益衰减半衰期、Rank IC衰减速度
聊到因子衰减,很多人第一反应是「看IC是不是变低了」。嗯,这没错,但太粗糙了。
我个人的习惯是,把衰减这件事拆成三个维度来看:IC衰减曲线、因子收益衰减半衰期、Rank IC衰减速度。这三个指标,说白了就是告诉你——你的因子还能活多久,以及它死得有多快。
3.1 IC衰减曲线:因子的「心电图」
IC衰减曲线,是我每次做因子归因分析时必看的第一张图。它记录的是因子在不同持有期下的预测能力变化。
举个例子。你算了一个因子,用它来预测未来1天的收益,IC是0.05。那未来5天呢?10天呢?20天呢?把这些IC值连成一条线,就是IC衰减曲线。
我在项目中遇到过一只高频因子,IC在第1天高达0.08,但到了第3天就跌到0.01以下。这种因子你只能做T+0,持仓过夜就是送钱。反过来,有些基本面因子,IC在第1天只有0.02,但到了第20天还能维持在0.015以上——这种因子适合做中长线。
3.2 因子收益衰减半衰期:给因子「算寿命」
这个概念是从物理学借来的。半衰期,指的是因子收益衰减到初始值一半所需要的时间。
怎么算?很简单。你先把因子在不同持有期下的累计收益算出来,然后找到那个「收益减半」的时间点。
# 伪代码示例:计算因子收益衰减半衰期
def calc_half_life(cumulative_returns):
# cumulative_returns: 不同持有期的累计收益数组
half_value = cumulative_returns[0] / 2
for i, ret in enumerate(cumulative_returns):
if ret <= half_value:
return i # 半衰期(以持有期为单位)
return len(cumulative_returns)
你想想看,如果一个因子的半衰期是3天,那意味着3天后它的预测能力就只剩一半了。半衰期越短,因子衰减越快,你需要更频繁地调仓。
我曾经跟踪过一个动量因子,半衰期从最初的10天,慢慢缩短到5天,最后只剩2天。嗯,这就是典型的「因子被市场充分挖掘」的信号。后来我果断把它从策略里移除了。
3.3 Rank IC衰减速度:排名的「记忆长度」
Rank IC和普通IC的区别在于,它关注的是排序能力,而不是数值本身。说白了,就是你的因子能不能把股票排对队。
Rank IC衰减速度,衡量的是这种排序能力随时间消失的快慢。计算方法和普通IC类似,只不过把原始值换成了排名。
| 持有期(天) | 普通IC | Rank IC | Rank IC衰减率 |
|---|---|---|---|
| 1 | 0.050 | 0.048 | - |
| 5 | 0.035 | 0.033 | 31.3% |
| 10 | 0.020 | 0.019 | 60.4% |
| 20 | 0.008 | 0.007 | 85.4% |
从上表可以看出,这个因子的Rank IC在第20天时已经衰减了85%以上。这意味着,如果你持仓超过20天,因子的排序能力基本就没了。
3.4 三者的关系与实战应用
这三个指标不是孤立的。我一般会放在一起看:
- IC衰减曲线告诉你「衰减的形状」——是线性、指数还是阶梯式?
- 半衰期告诉你「衰减的速度」——几天减半?
- Rank IC衰减速度告诉你「排序能力的持久性」——排名还能撑多久?
举个例子。如果IC衰减曲线是缓慢下降的,半衰期很长,但Rank IC衰减速度很快——这说明什么?说明因子虽然整体预测能力还行,但排序能力已经乱了。这种情况下,你可能需要做分层处理,或者改用非线性模型。
下面这张图,是我自己常用的因子衰减分析框架。它把三个指标串在了一起,方便快速定位问题。
最后说一句。这三个指标不是算一次就完事的。市场在变,因子也在变。我自己的做法是,每个月跑一次全量分析,把衰减曲线、半衰期、Rank IC衰减速度都更新一遍。一旦发现某个指标出现异常,就立刻启动预警流程。
公众号:蓝海资料掘金营,微信deep3321