← Quant 101 总览
第 06 关 · 因子评价

因子好不好:IC 与 ICIREvaluating Factors with IC

上一关靠“看柱状图”判断因子好坏,太主观。这一关学会用一个数(IC)科学地量化:这个因子到底有多强、稳不稳。

1IC:信息系数

每个月,算“因子值排名下期收益排名 的相关性”(Spearman 秩相关)。

档位:|IC|>0.03 有点用,>0.05 不错。A 股月频单因子常年 >0.1 很难。

from scipy.stats import spearmanr
ic, _ = spearmanr(factor, fwd_return)   # 这一期的 IC

2ICIR:又强又稳的程度

ICIR = IC均值 / IC标准差,相当于因子的夏普。>0.3 算稳健;正负号代表方向。

3真实因子排行(很有料)

因子IC均值ICIR
动量-0.024-0.18
短期反转+0.0290.27
中期反转+0.0510.39
低波动+0.0880.53

结论一目了然:动量在 A 股负的(没用),反转、低波动才有效,低波动最强(“波动小的票反而涨得稳”,A 股著名有效因子)。累计 IC 曲线(图)持续向上 = 长期有效,低波动那条最陡。

4为什么 IC 0.088 这么小却能赚?

因为它是横截面的:对几千只票同时下注,每只只要有一点点小优势,小优势 × 大样本 = 稳定的超额。这跟“赌一只票涨跌”完全不同。

✍ 动手做

把“低波动”的窗口从 20 天改成 60 天,看 IC 变强还是变弱;再想想还能造什么因子。

小结

IC=因子值与下期收益的横截面秩相关,量化因子强弱;ICIR=因子的夏普;小IC靠大样本横截面也能赚。

各因子累计IC:线持续向上=长期有效,低波动最陡。
动手做 · 解题过程 + 参考答案先自己写,再点开对答案
1低波动因子,把回看窗口从 20 天换成 60 天,比 IC 稳不稳
思路 · 每月底对全市场算过去 W 日收益的波动率,取负当因子(越稳越看多);用 Spearman 相关算它和下月收益的 IC,每月一个;最后看 IC 均值和 ICIR=均值/标准差。换 W=20 与 W=60 对比。
from scipy.stats import spearmanr
import numpy as np
ics = []
for 每个月:
    seg = 过去W日的收益矩阵                       # shape: (W, 股票数)
    fac = -np.nanstd(seg, axis=0)                # 波动率取负 = 低波动因子
    fwd = px_next_month / px_t - 1
    ics.append(spearmanr(fac, fwd, nan_policy="omit")[0])   # 当月IC
ic = pd.Series(ics)
print(f"IC {ic.mean():+.3f}  ICIR {ic.mean()/ic.std():.2f}")
结果 · W=20:IC +0.085、ICIR 0.52;W=60:IC +0.090、ICIR 0.50。拉长窗口差别很小——说明低波动因子对参数不敏感,这是“不像过拟合出来的假信号”的好迹象。
← 上一关
横截面思维与第一个因子
下一关 →
多因子合成与组合构建