1. 量化回测基础
1.1 量化回测的定义
量化回测(Quantitative Backtesting)是指利用历史市场数据,在模拟环境中执行交易策略,以评估其表现、风险特征和统计显著性的过程。它是量化策略开发中不可或缺的验证环节,通过将策略逻辑应用于过去的数据,回答一个核心问题:“如果我在过去按照这套规则交易,结果会怎样?”
核心公式: 回测 = 策略逻辑 × 历史数据 × 模拟执行环境
一个完整的回测系统通常包含以下组件:
| 组件 | 说明 | 关键要素 |
|---|---|---|
| 数据层 | 历史行情数据(OHLCV、Tick、订单簿) | 数据清洗、复权处理、生存偏差 |
| 策略层 | 信号生成逻辑与交易规则 | 入场/出场条件、仓位管理 |
| 执行层 | 模拟撮合与订单管理 | 滑点、手续费、流动性限制 |
| 评估层 | 绩效指标与风险度量 | 夏普比率、最大回撤、胜率 |
1.2 回测在策略开发中的核心作用
回测是量化策略开发的基石,它贯穿从想法到实盘的整个生命周期。没有回测,策略开发就如同盲人摸象,无法客观评估策略的有效性。
行业共识: 一个成熟的量化策略,其开发时间分配中,回测与验证通常占据 60% 以上的精力,远高于策略构思(10%)和实盘部署(30%)。
回测在策略开发中的核心作用体现在以下四个维度:
- 验证策略有效性 — 检验策略逻辑在历史数据中是否具有统计显著的盈利能力,排除随机性带来的虚假信号。
- 参数优化与选择 — 通过遍历参数空间,寻找最优参数组合,避免过拟合与欠拟合。
- 风险暴露识别 — 量化最大回撤、波动率、尾部风险等指标,评估策略在不同市场环境下的稳健性。
- 比较基准建立 — 与基准策略(如买入持有、同类策略)进行对比,判断超额收益的来源。
| 开发阶段 | 回测角色 | 典型输出 |
|---|---|---|
| 策略构思 | 快速验证假设 | 初步收益曲线、信号分布 |
| 策略开发 | 参数调优与鲁棒性测试 | 参数热力图、敏感性分析 |
| 策略评估 | 绩效归因与风险度量 | 夏普比率、最大回撤、IC/IR |
| 策略上线 | 样本外验证与压力测试 | 样本外表现、极端行情测试 |
1.3 回测与实盘的区别
回测与实盘之间存在本质差异,理解这些差异是避免“回测是神,实盘是鬼”悲剧的关键。以下从多个维度进行对比:
| 维度 | 回测环境 | 实盘环境 | 差异影响 |
|---|---|---|---|
| 数据质量 | 历史数据,可能存在生存偏差、前视偏差 | 实时数据,存在延迟、缺失、异常值 | 回测高估收益,实盘表现打折 |
| 执行成本 | 固定滑点与手续费,忽略市场冲击 | 动态滑点、流动性成本、订单簿深度 | 回测低估交易成本 |
| 市场影响 | 假设交易不影响价格 | 大单交易会推动价格 | 回测忽略流动性风险 |
| 心理因素 | 无情绪干扰,完全理性执行 | 恐惧、贪婪、犹豫等人性弱点 | 实盘执行偏差 |
| 环境变化 | 固定市场结构(固定规则、固定参与者) | 市场微观结构持续演变 | 历史规律可能失效 |
⚠️ 常见陷阱: 许多初学者在回测中获得亮眼收益后直接实盘,结果遭遇大幅亏损。核心原因在于回测中未充分考虑滑点、手续费、流动性限制以及策略过拟合。建议在回测与实盘之间加入至少 3-6 个月的样本外模拟交易或小资金实盘验证。
为了量化回测与实盘的差距,业界常用回测-实盘衰减系数来估算:
# 回测-实盘衰减系数估算示例
backtest_sharpe = 2.5 # 回测夏普比率
live_sharpe = 1.2 # 实盘夏普比率
decay_ratio = (backtest_sharpe - live_sharpe) / backtest_sharpe
print(f"衰减系数: {decay_ratio:.2%}") # 输出: 衰减系数: 52.00%
降低回测与实盘差距的核心手段包括:
- 保守化假设:在回测中主动增加滑点(如 2-3 个 tick)和手续费(上浮 20%-50%)。
- 样本外验证:严格区分训练集、验证集和测试集,避免数据泄露。
- 压力测试:使用极端行情数据(如 2015 年股灾、2020 年疫情崩盘)检验策略韧性。
- 模拟交易桥接:在回测与实盘之间设置模拟交易阶段,校准执行模型参数。
关键认知: 回测不是用来证明策略“一定赚钱”的工具,而是用来排除无效策略、暴露潜在风险、建立对策略行为模式理解的框架。优秀的量化团队会将回测视为“假设检验器”而非“印钞机”。