3. 因子衰减的度量方法:自相关函数法、半衰期法、衰减系数法、信息衰减曲线

聊到因子衰减,很多人第一反应就是「看IC的衰减速度」。但说实话,光看IC是不够的。我做了这么多年量化,踩过最大的坑就是——你以为因子还在有效,其实它已经悄悄失效了

这一节,我带你系统梳理四种主流的度量方法。每种方法都有它的适用场景,也有它的局限性。你想想看,如果连因子什么时候失效都判断不准,那调优就无从谈起。

3.1 自相关函数法(ACF)

自相关函数法,说白了就是看因子值自己跟自己有多像。比如今天的因子值和昨天的因子值,相关性高不高?如果很高,说明因子变化慢,衰减也慢。

数学定义

ACF(k) = Cov(F_t, F_{t-k}) / Var(F_t)

其中 k 是滞后阶数。ACF 值越接近 1,说明因子越「粘性」。

我个人的经验

  • ACF 衰减到 0.5 以下时,因子基本就没什么预测能力了
  • 如果 ACF 在 0.8 以上持续很久,小心——可能是因子过度拟合了
  • 我习惯用 ACF 做第一道筛选,快速排除那些「假持久」的因子
核心要点:ACF 衡量的是因子自身的稳定性,不是预测能力。一个因子可能 ACF 很高,但 IC 很低——这种情况我见过不少。

3.2 半衰期法(Half-Life)

半衰期这个概念,是从物理学借来的。在因子分析里,它指的是因子预测能力衰减到一半所需的时间

计算步骤其实不复杂:

  1. 计算不同滞后期的 IC 值
  2. 拟合指数衰减模型:IC(k) = IC(0) × exp(-k / τ)
  3. 半衰期 = τ × ln(2)

举个例子

假设某因子的半衰期是 5 天
→ 第 5 天时,预测能力只剩一半
→ 第 10 天时,只剩四分之一
→ 第 20 天时,基本可以忽略了
我的习惯:半衰期低于 3 天的因子,我一般直接放弃。因为换手率太高,交易成本会吃掉所有收益。

避坑指南:我曾经用半衰期法筛选因子,结果发现某个因子的半衰期特别长,有 30 天。当时还挺高兴,觉得捡到宝了。后来才发现,这个因子根本就是「死因子」——它不衰减,是因为它本来就没预测能力。嗯,这里要注意:半衰期长 ≠ 因子好,还得结合 IC 绝对值来看。

3.3 衰减系数法(Decay Coefficient)

衰减系数法,其实是对半衰期法的一个补充。它用一个系数 λ 来表示因子衰减的速度:

λ = -ln(IC_k / IC_0) / k

其中 IC_k 是滞后 k 期的 IC 值,IC_0 是当期 IC 值。

λ 的含义

  • λ 越大 → 衰减越快 → 因子越「短命」
  • λ 越小 → 衰减越慢 → 因子越「持久」
  • λ ≈ 0 → 因子基本不衰减(但也要警惕是无效因子)
λ 范围 衰减速度 我的建议
λ > 0.3 快速衰减 只适合高频交易
0.1 < λ ≤ 0.3 中等衰减 适合中频策略
λ ≤ 0.1 缓慢衰减 适合低频/长周期策略
注意:衰减系数法对 IC 的估计误差非常敏感。如果样本量不够大,算出来的 λ 可能很不稳定。我一般要求至少 200 个交易日的 IC 数据,才会用这个方法。

3.4 信息衰减曲线(Information Decay Curve)

这个方法,是我个人最常用的。它把因子在不同滞后期的 IC 值画成一条曲线,直观地展示因子衰减的全过程。

画法很简单

  1. 计算滞后 1 天、2 天、3 天……的 IC 值
  2. 以滞后天数为横轴,IC 值为纵轴
  3. 把点连起来,就是信息衰减曲线

下面是我用 SVG 画的一个典型的信息衰减曲线示意图:

信息衰减曲线示意图 滞后天数 (Lag Days) 0 5 10 15 20 0 0.05 0.10 IC 快速衰减 中等衰减 缓慢衰减 半衰期线 (IC/2)

从这张图你能看到:

  • 快速衰减(红色曲线):IC 在 5 天内就掉到一半以下,这种因子只适合做短线
  • 中等衰减(蓝色曲线):IC 衰减比较平缓,适合周频或双周频策略
  • 缓慢衰减(绿色曲线):IC 能维持较长时间,适合月频甚至季频调仓
我的实战经验:信息衰减曲线最大的价值,是帮你决定调仓频率。比如你发现某个因子的 IC 在第 5 天就衰减到一半以下,那就别做周频调仓了,改成日频或者两日频更合适。

3.5 四种方法的对比与选择

说了这么多,到底该用哪个?我整理了一个对比表:

方法 优点 缺点 适用场景
自相关函数法 计算简单,直观 只衡量因子自身稳定性 快速筛选,排除无效因子
半衰期法 有明确物理意义 对 IC 估计误差敏感 确定调仓频率
衰减系数法 数值化,便于比较 需要足够样本量 因子库批量筛选
信息衰减曲线 可视化,信息丰富 需要画图,不够量化 深度分析,策略设计

我个人建议

  • 先用 ACF 做快速筛选,排除那些「假持久」的因子
  • 再用半衰期法或衰减系数法做定量分析
  • 最后用信息衰减曲线做可视化验证

三种方法结合起来用,基本不会漏掉什么。嗯,这里要提醒一句:任何单一方法都有盲区。我见过有人只靠半衰期做决策,结果选出来的因子全是「死因子」——半衰期长,但 IC 本来就低。所以,交叉验证很重要。

一个小技巧:如果你用 Python 做分析,可以用 statsmodels 库的 acf() 函数算 ACF,用 scipy 的 curve_fit() 拟合指数衰减模型。代码量不大,但效果很好。

好了,因子衰减的度量方法就讲到这里。记住一句话:没有完美的度量方法,只有适合你策略的方法。下一节,我们会聊如何根据这些度量结果,对因子进行调优——这才是真正考验功力的地方。


公众号:蓝海资料掘金营,微信deep3321