返回知识库
策略方法
2026-05-14
量化回测完全指南
回测的原理、常见陷阱和最佳实践
回测
策略验证
回测在验证什么?
回测(Backtesting)是用历史行情与规则,重放策略若在那时交易会怎样——得到净值曲线、收益、夏普、最大回撤、IC 等统计量。它是研究阶段最主要的证据链,但不能代替实盘:成交、冲击成本、停牌、涨跌停等都可能让真实结果偏离仿真。
可把回测理解成三句话:
- 可重复:同一数据、同一规则,应得到同一结果(便于 debug 与对比实验)。
- 有边界:只覆盖已发生的历史;外推「未来也会这样」需要额外逻辑(样本外、滚动、压力情景)。
- 对表不对路:曲线好看不等于可交易,还要看换手、容量、规则是否与真实制度一致。
更完整的学习顺序见《学习目标与学习路径》;因子与特征层面见《因子投资入门》《Alpha 因子体系》。
典型流水线(与 Qlib / 本面板)
一条常见的 训练 + 评价 + 组合模拟 流水线大致为:
数据与标签 → 特征(如 Alpha158)→ 模型训练 → 预测分数
→ 信号分析(IC / Rank IC)→ 组合生成(如 TopK)→ 回测绩效
- 信号层:关心预测与未来收益是否对齐(IC)。
- 组合层:关心排序怎么变成持仓、换手与约束(如 TopK-Dropout)。
- 绩效层:关心净值、风险指标与成本假设是否可信。
本面板侧重把这条链「拧在一块」:运行策略、历史记录、敏感性分析、滚动回测 等 Tab 对应你在不同阶段要答的问题。
常见陷阱与对策
| 陷阱 | 表现 | 可操作的缓解 |
|---|---|---|
| 过拟合 | 训练段极好,测试段崩塌;对参数极度敏感 | 简化模型与特征、交叉验证、时间切分(绝不用未来训过去)、在 敏感性分析 里看指标是否「好得不自然」 |
| 前视偏差 | 用到当时尚未发布或不可得的数据、或标签与特征时间对齐错误 | 严格按「时点 t 只能看到 ≤t」构造特征;核对标签定义(如 Qlib 默认 label 与持有期) |
| 幸存者偏差 | 股票池只有「活下来的」,退市/长期停牌被抹掉 | 使用包含退市样本的完备 universe,或用指数成分的历史快照做股票池 |
| 成本低估 | 回测收益偏高、换手一上来实盘亏 | 显式设佣金、滑点、最小价差;高换手策略对成本更敏感 |
| 看似可成交 | 小市值、涨停无量仍按收盘价「成交」 | 检查涨跌停、流动性、成交量过滤是否与假设一致 |
时间与样本切分(最重要习惯)
严谨研究几乎总是:训练 / 验证 / 测试 在时间轴上切开,且测试集只评一次、不回头调参。进阶做法包括:
- 滚动 / 扩展窗口:每隔一段时期重训,用下一小段做样本外(与面板 滚动回测 叙事一致)。
- 不同 regime:牛熊切换时策略失效很常见;单一时段亮眼可能只是风格运气好。
读结果时在问什么
- 收益:总收益 与 年化 是否在同口径、同区间可比?
- 风险:最大回撤 与 卡玛 是否匹配你能承受的路径?
- 预测质量:IC 是否稳定,还是只靠少数日期「撞大运」?
- 可实现性:换手、持股数、集中度与 仓位、回撤控制 是否一致?
小结
回测是在历史里做受控实验:要把数据与规则的时点对齐、把偏差和成本摊在阳光下,再用时间切分与样本外检验防过拟合。它和因子研究、组合规则、风险管理 是一条绳上的不同阶段,不要孤立地看某一条净值曲线。