2. 标签口径定义

2.1 标签口径的概念

在量化回测与模型训练中,标签口径(Label Caliber)是指对原始市场数据或交易信号进行标准化、对齐和量化时所采用的度量基准与计算规则。它决定了“一个样本的标签值究竟代表什么含义”,是连接原始行情数据与监督学习目标之间的桥梁。

口径不统一会导致以下典型问题:

  • 样本错配:同一段行情因收益率计算方式不同,被赋予截然不同的标签值。
  • 模型偏差:模型学习到的是“口径噪声”而非真实市场规律。
  • 回测失真:训练集与回测集使用不同口径,导致绩效评估失效。
核心原则:标签口径必须在训练集、验证集、回测集上保持完全一致,且与交易执行逻辑对齐。

2.2 常见口径类型

根据量化策略的不同目标,标签口径主要分为三大类:收益率口径、波动率口径和风险调整口径。下表对比了它们的核心差异:

口径类型 度量对象 典型计算方式 适用场景
收益率口径 价格变化百分比 简单收益率 / 对数收益率 趋势跟踪、均值回归
波动率口径 价格波动幅度 真实波动幅度均值 (ATR) / 标准差 波动率交易、期权定价
风险调整口径 收益与风险的比值 夏普比率 / 卡玛比率 / 信息比率 组合优化、因子评价

2.3 收益率口径详解

收益率口径是最基础的标签类型,其定义直接影响模型对“涨跌”的敏感度。常见的两种计算方式为:

  • 简单收益率:\( R_t = (P_t - P_{t-1}) / P_{t-1} \),直观但分布不对称,存在向下偏倚。
  • 对数收益率:\( r_t = \ln(P_t / P_{t-1}) \),时间可加性好,分布更接近正态,适合统计建模。
实践建议:在机器学习模型中,优先使用对数收益率作为标签,因其能更好地处理多期复合收益,且减少极端值对模型训练的干扰。

2.4 波动率口径详解

波动率口径用于衡量资产价格的不确定性,常见口径包括:

口径名称 计算公式 特点
历史波动率 (HV) \(\sigma = \sqrt{\frac{1}{N-1}\sum (r_t - \bar{r})^2}\) 基于历史数据,滞后性强
真实波动幅度均值 (ATR) \(\text{ATR} = \frac{1}{n}\sum \text{TR}_t\) 包含跳空缺口,更贴近日内真实波动
已实现波动率 (RV) \(\text{RV} = \sqrt{\sum r_{t,i}^2}\) 高频数据,精度高,计算成本大
注意:波动率口径对数据频率极其敏感。使用日线数据计算 ATR 与使用 5 分钟线计算 RV,得到的标签分布可能完全不同。必须根据策略持仓周期选择匹配的频率。

2.5 风险调整口径详解

风险调整口径将收益与风险结合,用于评估“单位风险下的收益表现”。最常用的口径包括:

  • 夏普比率:\( \text{Sharpe} = \frac{E[R_p - R_f]}{\sigma_p} \),衡量超额收益与总风险的比值。
  • 卡玛比率:\( \text{Calmar} = \frac{E[R_p - R_f]}{\text{Max Drawdown}} \),侧重最大回撤风险。
  • 信息比率:\( \text{IR} = \frac{E[R_p - R_b]}{\sigma_{p-b}} \),衡量相对于基准的主动管理能力。

在模型训练中,风险调整口径通常作为多目标标签或约束条件使用,而非单一预测目标。

2.6 口径选择与模型训练的关系

不同的标签口径会直接影响模型的学习目标与收敛行为。下表总结了常见口径对模型训练的影响:

口径类型 标签分布特征 对模型的影响 推荐模型类型
简单收益率 右偏,有下界 -1 易受极端值影响,梯度不稳定 树模型 (XGBoost, LightGBM)
对数收益率 近似正态,无下界 梯度平滑,适合深度学习 LSTM, Transformer
ATR 正偏,厚尾 需做对数变换或分箱处理 回归模型 + 分位数损失
夏普比率 分布范围窄,集中在 [-2, 2] 直接回归效果差,建议排序学习 Pairwise Ranking

2.7 口径校准流程

为确保标签口径在回测与训练中的一致性,建议遵循以下校准流程:

  1. 定义口径规范:明确使用哪种收益率、波动率或风险调整口径,并记录计算公式。
  2. 数据对齐:确保所有样本的起始时间、复权方式、分红处理一致。
  3. 计算标签:按照规范批量计算训练集、验证集、回测集的标签值。
  4. 分布检验:检查标签的均值、标准差、偏度、峰度,确保三集分布一致。
  5. 回测验证:在回测集上使用相同口径计算绩效,与训练集标签进行相关性检验。
关键检查点:如果训练集标签均值与回测集标签均值差异超过 0.1 个标准差,说明口径存在系统性偏差,需要重新对齐数据或调整计算方式。
标签口径分类与关系图 标签口径 收益率口径 波动率口径 风险调整口径 简单收益率 对数收益率 历史波动率 ATR 夏普比率 卡玛比率 口径选择原则 训练集、验证集、回测集必须使用完全相同的口径定义 口径需与策略持仓周期、交易频率、风险偏好对齐

2.8 口径校准的常见陷阱

在实际项目中,以下陷阱最容易导致口径校准失败:

  • 幸存者偏差:只使用当前存活的股票计算标签,忽略了退市样本。
  • 前视偏差:在计算标签时使用了未来数据(如用未来价格计算当前收益率)。
  • 复权不一致:训练集使用后复权价格,回测集使用前复权价格,导致标签数值偏移。
  • 频率错配:用日线收益率训练模型,却在分钟线回测中应用。
严重警告:前视偏差是回测中最隐蔽的错误之一。例如,在 t 时刻计算标签时使用了 t+1 时刻的收盘价,模型会“看到未来”,导致回测绩效虚高。必须严格保证标签计算只使用截止到当前时刻的数据。
标签口径校准流程 1. 定义口径规范 2. 数据对齐 3. 计算标签 4. 分布检验 5. 回测验证 若分布不一致,返回步骤 1 或 2 重新校准 校准检查清单 ✓ 训练集、验证集、回测集使用同一口径计算公式 ✓ 所有样本的复权方式、分红处理、时间对齐一致 ✓ 标签分布(均值、标准差、偏度)在三集上无明显差异 ✓ 回测绩效与训练标签的相关性在合理范围内

2.9 代码示例:收益率口径计算

以下 Python 代码展示了简单收益率与对数收益率的计算方式,并对比了它们的分布差异:

import numpy as np
import pandas as pd

# 模拟价格序列
np.random.seed(42)
prices = 100 * np.exp(np.cumsum(np.random.normal(0, 0.01, 1000)))
df = pd.DataFrame({'close': prices})

# 简单收益率
df['simple_return'] = df['close'].pct_change()

# 对数收益率
df['log_return'] = np.log(df['close'] / df['close'].shift(1))

# 对比统计量
print("简单收益率均值: {:.6f}, 标准差: {:.6f}".format(
    df['simple_return'].mean(), df['simple_return'].std()))
print("对数收益率均值: {:.6f}, 标准差: {:.6f}".format(
    df['log_return'].mean(), df['log_return'].std()))

# 多期复合收益对比
multi_period_simple = (1 + df['simple_return'].iloc[1:251]).prod() - 1
multi_period_log = df['log_return'].iloc[1:251].sum()
print("250期简单复合收益: {:.4f}".format(multi_period_simple))
print("250期对数复合收益: {:.4f}".format(multi_period_log))
输出解读:对数收益率的均值略低于简单收益率,但标准差相近。在多期复合时,对数收益率通过累加即可得到总收益,而简单收益率需要连乘,计算效率更低且数值稳定性较差。