4. 回测基础与核心概念

在机器学习驱动的 Alpha 策略研发中,回测是把“模型预测能力”转化为“可交易策略表现”的第一道工程化关口。它并不是简单地跑一遍历史数据看收益曲线,而是用一套受控流程,回答一个核心问题:如果这套策略在过去某段真实市场环境中被严格执行,它大概会表现成什么样?理解回测的定义、目的与流程,并识别样本内/样本外、前视偏差、幸存者偏差、数据窥探等陷阱,是后续所有成本评估与实盘决策的地基。

一、回测的定义与目的

回测(Backtesting)是指基于历史行情、基本面或另类数据,按照预先设定的信号生成、仓位管理与交易规则,模拟策略在历史时间轴上的交易过程,并统计其收益、风险与成本特征。对 ML Alpha 策略而言,回测至少承担四项任务:

  • 验证预测信号的经济价值:模型 IC 高不等于能赚钱,需检验信号在扣费、换手、约束后的净值表现。
  • 估计风险暴露:最大回撤、波动率、行业/风格暴露、尾部损失等。
  • 评估交易成本敏感性:滑点、手续费、冲击成本对策略容量的影响。
  • 支持研究与迭代决策:为参数选择、特征筛选、模型上线提供可比较的基准。
回测的本质是“受控实验”:控制数据边界、交易规则与成本假设,让不同策略版本之间具备可比性。没有统一口径的回测结果,几乎无法用于决策。

二、标准回测流程

一个可复现的 ML Alpha 回测流程通常包含以下步骤,建议以配置化方式固化,避免“手工调参式回测”。

  1. 明确研究假设与交易宇宙:标的池、调仓频率、多空约束、行业中性等。
  2. 数据切分与特征工程:严格按时间切分,特征只能使用当期及之前可得信息。
  3. 模型训练与信号生成:在训练集拟合,在验证集调参,在测试集生成样本外信号。
  4. 组合构建:将预测分数转为权重,加入换手约束、个股权重上限等。
  5. 交易模拟与成本扣减:按成交假设计算手续费、滑点与冲击成本。
  6. 绩效归因与稳健性检验:分年度、分市场状态、参数扰动、成本压力测试。
# 典型回测配置片段(示意)
universe: "csi500"
rebalance: "weekly"
train_window: "2018-01-01 ~ 2021-12-31"
valid_window: "2022-01-01 ~ 2022-12-31"
test_window:  "2023-01-01 ~ 2024-12-31"
cost:
  commission_bps: 2.0
  slippage_bps: 5.0
  impact_model: "sqrt"
constraints:
  max_weight: 0.02
  turnover_limit: 0.30

三、样本内、样本外与前视偏差

样本内(In-Sample)是模型训练与参数搜索使用的数据;样本外(Out-of-Sample)是模型从未见过、用于最终评估的数据。二者必须按时间先后切分,不能随机打乱,否则会引入未来信息。常见做法是滚动窗口或扩展窗口:训练集随时间前移,验证集紧随其后,测试集始终位于最后。

前视偏差(Look-ahead Bias)指在回测中使用了当时尚不可得的信息。例如用当日收盘价生成信号却按当日开盘价成交,或用财报公告日之前的数据计算财务因子。ML 策略中尤其危险的是特征工程阶段的全样本标准化、全样本缺失值填充,它们会把未来分布信息泄露到过去。

任何“全样本”操作都要警惕:全样本均值方差、全样本分位数、全样本 PCA、全样本目标编码,若未按时间滚动计算,几乎必然造成前视偏差,使回测虚高。

四、幸存者偏差与数据窥探

幸存者偏差(Survivorship Bias)来自标的池构建:若只用当前仍上市的股票回测历史,就剔除了退市、被并购或长期停牌的样本,导致收益被高估。正确做法是使用“时点成分股”或包含退市记录的全历史数据库。

数据窥探(Data Snooping)指反复在同一份数据上尝试大量模型、因子与参数,最终挑出表现最好的组合,其样本外表现往往大幅衰减。它和多重检验问题同源:尝试次数越多,偶然“显著”的概率越高。控制手段包括:预留独立测试集、使用嵌套交叉验证、记录试验次数、对 Sharpe 做 Deflated Sharpe 调整等。

陷阱 典型成因 后果 缓解措施
前视偏差 全样本标准化、错误成交时点 回测收益虚高 滚动统计、严格对齐可得时间
幸存者偏差 只用当前成分股 高估收益、低估风险 使用时点成分股与退市数据
数据窥探 反复调参、多次试验 样本外衰减严重 独立测试集、试验记录、DSR
样本外失效 市场结构变化、过拟合 实盘与回测背离 滚动重训、压力测试、容量评估

五、案例场景:一次“漂亮”回测的复盘

某团队开发日频 ML Alpha 策略,回测 2019—2023 年夏普 3.2、最大回撤 6%。复盘发现三处问题:其一,特征标准化使用了全样本均值方差,属于前视偏差;其二,股票池取自当前沪深 300 成分股,退市与调出样本被剔除,存在幸存者偏差;其三,团队在两年内尝试了 400 余组超参数,最终报告的是最优组,属于典型数据窥探。修正后:改用滚动标准化、时点成分股、预留 2023 年作为独立测试集,夏普降至 1.1,最大回撤扩大到 14%,但这一结果才更接近真实可交易水平。

回测时间切分与三类偏差 样本内:训练 + 验证 验证集 样本外:独立测试集 2018 2022 2023 2024 前视偏差 全样本统计 / 错误成交时点 幸存者偏差 只用当前成分股 数据窥探 反复调参 / 多重试验 时间只能向前:训练 → 验证 → 测试,任何“回看未来”都会污染评估

六、误区与复盘清单

  • 误区一:回测收益越高越好。高收益若伴随高换手、高集中度或不可解释的因子暴露,往往不可持续。
  • 误区二:样本外只跑一次就够。单次样本外可能受特定市场状态影响,应结合滚动窗口与多市场状态评估。
  • 误区三:忽略成本与容量。ML Alpha 常偏中高频,成本假设偏差 2—3 bps 即可吞掉大部分超额收益。
  • 误区四:把回测当证明而非证伪。回测的首要价值是发现策略在哪些条件下会失效,而非确认它一定有效。
复盘建议:每次回测后固定记录数据版本、股票池口径、训练/验证/测试区间、成本参数、试验次数与主要结论。可复现、可审计的回测记录,比一次“漂亮”的净值曲线更有长期价值。