4. 模型评估体系
在Stacking与Blending实战中,模型融合往往能把单模型的AUC从0.72提升到0.78,但如果你只盯着AUC选模型,很可能选出一个“回测漂亮、实盘崩溃”的组合。金融场景的评估体系与通用机器学习有本质差异:标签不平衡、样本量有限、交易成本真实存在、收益分布厚尾。因此,本章要建立一套“统计指标+金融指标”双轨评估框架,让融合模型既具备判别能力,又具备可交易性。
一、核心原理:为什么金融场景需要双轨指标
通用分类指标(准确率、AUC、F1)衡量的是“预测对不对”,而金融指标(夏普比率、最大回撤、信息系数)衡量的是“预测能不能赚钱、赚得稳不稳”。两者缺一不可:AUC高但IC低,说明模型排序能力弱;IC高但最大回撤大,说明策略在极端行情下脆弱。Stacking的元学习器如果只用AUC做早停,很容易过拟合验证集的噪声,导致实盘换手率飙升、回撤扩大。
关键认知:在金融融合模型中,AUC是“入场券”,夏普比率和最大回撤是“生存线”,信息系数是“信号纯度计”。三者共同决定一个Stacking集成是否值得上线。
二、指标定义与计算口径
下面用一张表把六类指标的口径、适用场景和陷阱说清楚。注意:所有指标都必须基于“样本外滚动窗口”计算,禁止用全样本拟合后再评估。
| 指标 | 计算口径 | 金融场景适用性 | 常见陷阱 |
|---|---|---|---|
| 准确率 Accuracy | 预测正确样本 / 总样本 | 仅当涨跌样本接近1:1时可用 | 类别不平衡时虚高,如99%跌样本下全预测跌也有99% |
| AUC | ROC曲线下面积,衡量排序能力 | 适用于二分类信号强弱排序 | 对极端不平衡仍稳健,但无法反映阈值选择后的盈亏 |
| F1 | 2×Precision×Recall/(Precision+Recall) | 适用于关注少数类(如暴涨/违约)的场景 | 阈值敏感,需配合业务成本矩阵调参 |
| 夏普比率 Sharpe | (年化收益-无风险利率)/年化波动率 | 衡量风险调整后收益,融合策略核心指标 | 假设收益正态,厚尾时低估尾部风险 |
| 最大回撤 Max Drawdown | 净值从峰值到谷底的最大跌幅 | 衡量策略生存能力与资金容量 | 需区分回撤持续期与恢复期,单看幅度不够 |
| 信息系数 IC | 预测值与未来收益的截面相关系数 | 衡量因子/信号预测能力,Stacking元特征筛选利器 | IC均值高但IC_IR低时,信号不稳定 |
三、方法流程:从单模型到Stacking的评估流水线
在实战中,建议按以下五步构建评估流水线,确保融合模型在统计与金融两个维度都过关:
- 数据切分:采用时间序列滚动切分,训练集、验证集、测试集按时间先后划分,禁止随机打乱。Stacking的元学习器必须用“折外预测”训练,避免信息泄漏。
- 基模型筛选:对每个基模型计算AUC、F1和IC,剔除AUC低于0.55或IC均值低于0.02的弱模型。
- 元学习器训练:用基模型的折外预测作为特征,训练逻辑回归或LightGBM元学习器,早停指标优先选“验证集IC”而非AUC。
- 回测评估:将融合信号转为仓位,扣除双边千分之三交易成本,计算年化收益、夏普比率、最大回撤和Calmar比率。
- 稳健性检验:分年度、分行业、分市值组计算IC_IR,若某组IC_IR低于0.3,说明融合模型在该子域失效。
# 滚动窗口评估示例(伪代码)
for train_end in pd.date_range('2020-01-01', '2023-12-31', freq='Q'):
train = data[:train_end]
test = data[train_end:train_end+pd.Timedelta(days=90)]
base_preds = [m.fit(train).predict(test) for m in base_models]
meta_pred = meta_learner.fit(oof_preds, y_train).predict(base_preds)
ic = spearmanr(meta_pred, test['forward_return']).correlation
sharpe = backtest(meta_pred, cost=0.003).sharpe
print(f"{train_end.date()} IC={ic:.3f} Sharpe={sharpe:.2f}")
四、案例场景:AUC提升但夏普下降的融合陷阱
某量化团队用Stacking融合了XGBoost、LSTM和逻辑回归三个基模型,测试集AUC从0.74提升到0.79,但回测夏普比率从1.8降到1.1,最大回撤从12%扩大到23%。复盘发现:元学习器在验证集上过拟合了2021年小市值行情的噪声,导致融合信号在2022年大盘蓝筹行情中频繁反向。解决方案是:将元学习器的早停指标从AUC改为“IC_IR”,并加入行业中性化约束,最终AUC微降至0.77,但夏普回升到2.1,最大回撤收窄至9%。
误区警示:不要用测试集的夏普比率去反向调参,那等于用未来信息优化历史。正确做法是:在验证集上确定融合结构和超参数,测试集只做一次最终评估。
五、误区复盘与实操建议
最后总结四个高频误区,并给出可落地的修正动作:
- 误区一:用准确率选融合模型。修正:金融标签常为1:9甚至1:99,准确率无意义,改用AUC+IC双指标。
- 误区二:忽略交易成本。修正:回测必须扣除双边千三以上成本,高频融合信号尤其敏感。
- 误区三:IC均值高就认为信号好。修正:同时看IC_IR(IC均值/IC标准差),IC_IR低于0.3说明信号不稳定。
- 误区四:最大回撤只看幅度。修正:记录回撤持续期和恢复期,若恢复期超过6个月,资金容量会大幅缩水。
实操建议:在Stacking元学习器的训练日志中,同时打印AUC、IC、IC_IR和验证集夏普比率。若AUC上升但IC_IR下降,立即停止训练并回退到上一轮权重。这套“双轨早停”机制能有效避免融合模型在实盘中失效。