模型评价指标:IC / RIC 体系全解析
在 Qlib 的标准工作流中,数据被严谨地划分为不同阶段。我们不以收益率论英雄,而是通过预测相关性与稳定性来衡量模型从市场噪声中提取 Alpha 信号的能力。
一、数据集的划分与职责
在量化回测中,为防止未来函数和过拟合,必须严格遵守时间序列的划分:
1. Train(训练集)
- 角色:模型的「教科书」
- 用途:模型在此阶段通过历史数据(特征 $X$ 与标签 $y$)学习因子与未来收益率之间的非线性映射
- 目标:最小化训练损失(Loss),尽可能捕捉市场规律
2. Valid(验证集)
- 角色:模型的「模拟考」
- 用途:这是计算 IC/RIC 等指标的核心阶段。模型在未见过的数据上进行预测,验证集性能用于:
- 决定何时停止训练(Early Stopping)
- 指导超参数调优
- 判断模型是否过拟合
- 关键点:验证集的时间窗口必须紧随训练集之后,且不得参与梯度更新
二、核心定义:IC 与 Rank IC(RIC)
在验证集上,通过预测值向量与实际收益率向量的一致性来定义预判能力。
1. IC(Information Coefficient,信息系数)
- 计算:预测值与实际收益率之间的 Pearson 相关系数
- 维度:数值对数值的线性同步程度
- 局限:对异常值(极端涨跌)敏感,易受个别「妖股」干扰
2. Rank IC(RIC,秩信息系数)
- 计算:预测排名与实际收益率排名之间的 Spearman 相关系数
- 维度:位次对位次的先后顺序一致性
- 核心地位:量化选股的灵魂指标。不关心具体涨多少,只关心「谁比谁强」。采用排名制,天然具有鲁棒性,能有效过滤噪声
| 指标取值 | 业务含义 | 现实映射 |
|---|---|---|
| 1.0 | 完全正相关 | 预测排名与实际完全一致,近乎「上帝视角」 |
| 0.0 | 无相关性 | 预测随机,模型如同掷骰子 |
| -1.0 | 完全负相关 | 完美的反向指标,避开推荐即可获利 |
💡 量化经验:在 A 股日频选股中,验证集单日 Rank IC 均值达到 0.05 属于优秀,稳定达到 0.1 则为顶级信号。
三、稳定性评估:ICIR 与 Rank ICIR
仅有高 IC 均值还不够,更需要稳定的输出。ICIR 与 Rank ICIR 衡量的是预判能力的「性价比」:
1. 数学公式
ic.平均值 / ic.标准差
2. 深度解读
- 均值(Mean):代表平均预判水平(「肉多不多」)
- 标准差(Std):代表预判能力的波动(「坑深不深」)
- ICIR:本质上是 IC 的夏普比率
- 日频交易中,通常要求 $RICIR > 0.5$
- 高 ICIR 意味着模型在验证集上的表现不随市场环境大幅波动,净值曲线更平滑
四、Qlib 里相关代码
import pandas as pd
def calc_ic(pred: pd.Series, label: pd.Series, date_col="datetime", dropna=False):
"""
在验证集(Valid)或测试集上计算每日截面的 IC 和 Rank IC。
"""
df = pd.DataFrame({
"pred": pred,
"label": label,
"date": pred.index.get_level_values(date_col)
})
# 1. 分组计算 Pearson IC(线性相关)
ic = df.groupby("date").apply(lambda x: x["pred"].corr(x["label"]))
# 2. 分组计算 Spearman RIC(排名相关)
ric = df.groupby("date").apply(lambda x: x["pred"].corr(x["label"], method="spearman"))
if dropna:
return ic.dropna(), ric.dropna()
return ic, ric
# 性能指标汇总:通常在验证集(Valid)上运行
metrics = {
"IC Mean": ic.mean(),
"ICIR": ic.mean() / ic.std(),
"Rank IC Mean": ric.mean(),
"Rank ICIR": ric.mean() / ric.std(),
}五、根据指标筛选模型
在多模型集成(Ensemble Learning)阶段,如何科学地合并多个弱预测器的输出,是决定量化策略最终胜率的关键。原有的「简单平均」模式存在统计学缺陷,更合理的做法是采用「加权融合」。
5.1 原有方案的反思:简单平均的「信噪比稀释」
原方案:设定极高的准入门槛(如 25 选 3),对入选模型的结果做算术平均。
信号抹杀效应:
- 案例:模型 A 预测某股票收益为 6%(强看多),模型 B 预测 -1%(弱看空)
- 结果:算术平均后为 2.5%
- 弊端:模型 B 的干扰大幅削弱了模型 A 的高价值预判,优质 Alpha 信号被平庸模型的噪声掩盖
幸存者偏差与脆弱性:
过高的筛选标准(如仅保留前 10% 的模型)会导致集成系统样本量不足。一旦这些「精英模型」在实盘阶段出现阶段性失效(Regime Shift),整个策略将面临巨大回撤风险。
5.2 优化策略:宽进严出 + RICIR 加权
新策略的核心思想:放低准入门槛以保留多样性,通过统计性能(RICIR)分配话语权。
筛选准则:基础正向要求
不再追求极少数「天才模型」,而是确保入选模型具备基础的获利逻辑:
- 筛选条件:验证集(Valid)中四项核心指标 IC、ICIR、Rank IC、Rank ICIR 全部为正
- 逻辑:只要模型在统计意义上能提供正向贡献,即视其为「有益信号源」
核心算法:基于 RICIR 的动态权重
Rank ICIR 同时兼顾预测的准确性(均值)与稳定性(标准差),是衡量模型历史表现最公平的权重因子。
- 加权逻辑:每个入选模型的预测结果乘以其对应的 Rank ICIR 值,再归一化
- 优势:
- 强者恒强:预测又准又稳的模型在最终决策中占据主导地位
- 弱者降噪:表现平庸的模型虽入选,但其贡献被权重自动降解,仅作背景辅助
5.3 新旧策略对比
| 维度 | 旧方案:高门槛 + 简单平均 | 新方案:基础准入 + RICIR 加权 |
|---|---|---|
| 筛选哲学 | 精英主义(非黑即白) | 统计主义(按功行赏) |
| 信噪比处理 | 易被平庸信号稀释 | 通过权重自动屏蔽低效信号 |
| 多样性 | 较差,易过拟合特定行情 | 较好,保留不同因子的预测维度 |
| 风险抵御 | 依赖个别模型,容错率低 | 具备统计鲁棒性,抗风险能力强 |
| 实战映射 | 收益曲线易剧烈波动 | 收益曲线更趋近 45° 向上(高夏普) |
5.4 核心结论
在量化投资中,「正确的权重分配」比「寻找完美模型」更重要。通过将筛选门槛降至「全指标为正」,我们保留了市场中微弱但有效的 Alpha 信号;通过 Rank ICIR 加权,构建了一个自适应的「民主决策系统」,让最稳定、最可靠的模型掌握最终话语权。