3. 金融预测任务与评价指标
在把 Transformer 用于金融多变量时序之前,必须先回答一个比模型结构更根本的问题:我们到底在预测什么,又用什么标准判断预测得好不好? 很多项目失败并非模型不够深,而是任务定义与评价指标错位——用回归的 MSE 去优化一个本质是分类的趋势判断,或用单点准确率去衡量一条需要靠交易兑现的收益率曲线。本节把金融预测任务拆成三类目标,并给出与之匹配的指标体系和回测评估方法。
一、三类预测任务的本质差异
金融时序预测通常落在三个层次上,它们的输出空间、噪声结构和可用信息完全不同。
- 趋势预测(方向分类):输出未来一段时间的涨/跌/震荡,本质是分类任务。标签常由收益率阈值离散化得到,例如
sign(r_{t+h})或三分类阈值切分。它关心“方向对不对”,对幅度不敏感。 - 收益率预测(数值回归):输出未来 h 期的收益率数值,本质是回归任务。金融收益率信噪比极低,R² 往往接近 0,因此更应关注方向命中率与风险调整后收益,而非单纯 MSE。
- 波动率预测(风险回归):输出未来已实现波动率或方差,本质是回归任务但可预测性显著更高。波动率具有聚集性和长记忆性,Transformer 的注意力机制在捕捉多尺度波动依赖上有天然优势。
二、任务与指标匹配关系
下表给出三类任务对应的标签构造、常用指标与注意事项,可作为建模前的检查清单。
| 任务类型 | 输出形式 | 标签构造 | 核心指标 | 常见陷阱 |
|---|---|---|---|---|
| 趋势预测 | 类别概率 | 阈值离散化 sign(r) | Accuracy、F1、AUC | 类别不平衡导致虚高准确率 |
| 收益率预测 | 连续数值 | 未来 h 期对数收益 | MAE、IC、方向命中率 | MSE 被极端值主导 |
| 波动率预测 | 连续正值 | 已实现波动率 RV | RMSE、QLIKE、MSE | 忽略波动率非对称性 |
三、分类与回归指标的正确用法
分类指标中,准确率在金融场景极易误导:当上涨样本占 70% 时,全预测上涨即可得 0.7 准确率。因此应优先看 F1、AUC 与混淆矩阵,并关注少数类召回。回归指标中,MSE 对大误差敏感,适合波动率这类量级稳定的目标;而收益率预测更适合 MAE、IC(预测值与真实值的秩相关)以及方向命中率。
# 收益率预测常用评估片段
from scipy.stats import spearmanr
import numpy as np
ic = spearmanr(y_pred, y_true).correlation # 信息系数
hit = np.mean(np.sign(y_pred) == np.sign(y_true)) # 方向命中率
mae = np.mean(np.abs(y_pred - y_true))
print(f"IC={ic:.4f} Hit={hit:.4f} MAE={mae:.6f}")
波动率预测推荐使用 QLIKE 损失,它对低估波动率的惩罚更重,更贴近风险管理需求:
# QLIKE: 对波动率低估更敏感
qlike = np.mean(np.log(y_pred**2) + (y_true**2) / (y_pred**2))
四、回测评估:从指标到真实收益
离线指标好不代表能赚钱。回测评估要把预测信号转成持仓,再计算风险调整后收益。核心流程是:信号生成 → 仓位映射 → 交易成本扣除 → 绩效统计。常用指标包括年化收益、夏普比率、最大回撤与换手率。
- 用趋势预测概率生成多空仓位,例如概率大于 0.6 做多、小于 0.4 做空。
- 按日频调仓并扣除双边交易成本(如 5bp)。
- 计算净值曲线,统计夏普、最大回撤与卡玛比率。
- 与买入持有基准对比,确认超额收益来源。
五、误区复盘与实操建议
最后总结三个高频误区。第一,用回归指标优化分类目标:趋势预测若用 MSE 训练,模型会倾向于输出接近均值的值,方向判别力下降,应改用交叉熵或 Focal Loss。第二,忽略交易成本与滑点:高频调仓的策略在扣除成本后往往由盈转亏,回测必须内生化成本。第三,用同一指标横跨三类任务:波动率预测看 QLIKE,收益率预测看 IC 与命中率,趋势预测看 F1 与 AUC,指标错配会让模型选择完全走偏。
当任务定义与评价体系清晰后,Transformer 的建模才有明确优化方向:趋势预测关注分类头与阈值校准,收益率预测关注低信噪比下的正则化与集成,波动率预测关注多尺度注意力与正值约束。下一阶段的特征工程与数据管线,都将围绕这三类目标展开。