2、标签定义基础:什么是标签(Label),分类标签与回归标签的区别,常见金融标签类型(涨跌、波动率、风险等级)
在量化回测中,标签(Label) 是监督学习的核心——它是模型试图预测的目标变量。标签的质量直接决定了特征工程的方向和回测结果的可靠性。本章从标签的本质出发,厘清分类与回归标签的差异,并深入解析金融场景中最常见的三种标签类型。
2.1 什么是标签(Label)
标签是数据集中每个样本对应的“正确答案”。在量化金融中,标签通常代表未来某个时间窗口内的市场状态或资产表现。例如:
- 分类标签:未来5日是否上涨(涨/跌)
- 回归标签:未来20日的累计收益率(连续值)
- 排序标签:未来波动率的分位数排名
标签的构造过程称为“标签校准”,它必须与回测的时间轴、交易频率和风险目标严格对齐。错误的标签定义会导致模型学习到虚假规律(过拟合)或无法捕捉真实信号(欠拟合)。
核心原则:标签必须反映你真正关心的交易目标。如果目标是最大化夏普比率,那么标签不应只是简单的涨跌方向,而应包含风险调整后的收益信息。
2.2 分类标签与回归标签的区别
分类标签和回归标签在数学形式、损失函数、评估指标和金融应用上存在本质差异。下表总结了关键区别:
| 维度 | 分类标签 | 回归标签 |
|---|---|---|
| 输出形式 | 离散类别(如 0/1、-1/0/1) | 连续实数(如 -0.05 ~ 0.12) |
| 损失函数 | 交叉熵、Hinge、Focal Loss | MSE、MAE、Huber Loss |
| 评估指标 | 准确率、精确率、召回率、F1、AUC | R²、RMSE、MAE、IC(信息系数) |
| 金融典型场景 | 涨跌方向预测、突破信号、风险等级 | 收益率预测、波动率预测、流动性成本 |
| 对噪声的敏感度 | 相对鲁棒(离散化可过滤部分噪声) | 敏感(极端值会严重扭曲模型) |
| 回测实现复杂度 | 较低(只需判断类别) | 较高(需处理仓位大小、止损止盈) |
选择分类还是回归标签,取决于你的交易策略类型:
- 趋势跟踪/择时策略:通常使用分类标签(涨/跌),因为只需判断方向。
- 统计套利/做市策略:回归标签更合适,因为需要精确预测价差或收益率大小。
- 风险平价/组合优化:回归标签用于预测波动率和相关性矩阵。
实战建议:在回测初期,优先尝试分类标签。分类任务对数据质量要求更低,且评估指标更直观。当分类模型达到稳定性能后,再逐步过渡到回归标签以获取更精细的信号。
2.3 常见金融标签类型
金融量化领域最常用的标签类型包括涨跌标签、波动率标签和风险等级标签。下面逐一解析其构造方法和适用场景。
2.3.1 涨跌标签(Direction Label)
涨跌标签是最基础的分类标签,通常定义为未来 h 个交易日的收益率符号:
# 示例:未来5日涨跌标签(Python伪代码)
def create_direction_label(close_prices, horizon=5, threshold=0.0):
future_return = close_prices.shift(-horizon) / close_prices - 1
label = (future_return > threshold).astype(int) # 1=涨, 0=跌
return label
变体包括:
- 三分类标签:涨(>1%)、平(-1%~1%)、跌(<-1%),用于过滤震荡行情。
- 动量标签:基于过去收益率符号的延续性,如“连续3日上涨后是否继续上涨”。
- 阈值标签:设定收益率阈值(如2%),只有超过阈值才视为有效信号。
2.3.2 波动率标签(Volatility Label)
波动率标签可以是回归标签(预测具体波动率数值)或分类标签(预测波动率等级)。常见构造方法:
# 示例:未来20日已实现波动率(回归标签)
def realized_volatility(returns, window=20):
return returns.rolling(window).std() * np.sqrt(252) # 年化波动率
# 示例:波动率分位数分类(高/中/低)
def volatility_quantile_label(vol_series, q_low=0.3, q_high=0.7):
label = np.zeros(len(vol_series))
label[vol_series > vol_series.quantile(q_high)] = 2 # 高波动
label[(vol_series > vol_series.quantile(q_low)) &
(vol_series <= vol_series.quantile(q_high))] = 1 # 中波动
label[vol_series <= vol_series.quantile(q_low)] = 0 # 低波动
return label
波动率标签在期权定价、风险管理和仓位调整中至关重要。
2.3.3 风险等级标签(Risk Level Label)
风险等级标签通常结合多个风险因子(波动率、最大回撤、VaR、Beta等)进行综合评级。典型构造流程:
- 因子计算:计算每个样本的波动率、下行风险、尾部风险等指标。
- 标准化:将各因子映射到0~1区间(如使用分位数排名)。
- 加权合成:按业务权重合成综合风险得分。
- 离散化:将得分划分为3~5个等级(如低风险、中风险、高风险)。
注意:风险等级标签的构造容易引入“未来信息”。例如,使用全样本分位数进行标准化会导致样本内数据泄露。正确的做法是使用滚动窗口或扩展窗口计算分位数。
2.4 标签类型选择决策流程
下面的SVG图展示了从交易目标到标签类型的完整决策路径,帮助你在实际项目中快速确定标签定义方向。
2.5 标签构造的常见陷阱
即使理解了标签类型,实际构造中仍容易踩坑。以下是三个最常见的错误:
| 陷阱 | 错误示例 | 正确做法 |
|---|---|---|
| 未来信息泄露 | 使用未来数据计算标签(如用未来20日数据计算波动率时使用了未来价格) | 确保标签只使用截止到当前时刻的数据,或使用严格的滚动窗口 |
| 标签不平衡 | 牛市中90%的样本都是“涨”标签,模型学到永远预测涨 | 使用时间序列交叉验证、重采样或代价敏感学习 |
| 标签与特征时间错位 | 特征使用t日数据,标签使用t日收益率(同步预测) | 特征必须滞后于标签:特征用t日,标签用t+1日及以后 |
最佳实践:在构造标签后,始终进行“标签回溯测试”——随机抽取100个样本,人工验证标签是否与未来实际走势一致。这一步能发现大部分数据泄露和逻辑错误。
2.6 标签与特征工程的协同
标签定义直接影响特征工程的方向:
- 涨跌标签:特征应侧重趋势指标(移动平均、MACD、RSI)和动量因子。
- 波动率标签:特征应包含历史波动率、成交量变化、VIX指数、GARCH模型输出。
- 风险等级标签:特征需覆盖多维度风险因子(Beta、最大回撤、偏度、峰度、尾部风险)。
下面的SVG图展示了标签与特征工程之间的双向反馈关系:
在实际项目中,标签定义不是一次性工作。随着回测结果的反馈,你可能需要调整标签的阈值、时间窗口或分类方式,从而驱动特征工程的迭代优化。这种“标签-特征”协同进化是量化策略开发的核心能力。