回测:验证你策略的完整指南
一个在理论上看似出色的策略,可能在实盘中崩溃。回测能将好想法从幻觉中分离出来,前提是必须严谨地进行。本指南为你提供完整方法:数据选择、关键指标、需避免的陷阱以及能够带来差异的工具。

一个在理论上看似出色的策略,可能在实盘中崩溃。回测能将好想法从幻觉中分离出来,前提是必须严谨地进行。本指南为你提供完整方法:数据选择、关键指标、需避免的陷阱以及能够带来差异的工具。
一句话总结
回测是将策略应用于历史数据,以估计其稳健性的过程。做得好,它能揭示真实回撤、风险/收益比,以及策略失效的条件。做得糟,它会产出在历史上"完美",但在实盘中撑不过一个月的策略。两者的差别,取决于大多数业余交易者忽视的5到6条方法论原则。
部署前为何必须回测
三个根本原因:
- 过滤掉无价值的想法。 一个在10年中产生60%回撤的策略不具备可行性,无论收益率多高。回测在5分钟内就能揭示这一点。
- 校准资金管理。 了解交易的真实分布(平均盈利、平均亏损、连续亏损长度)可以让你正确地确定仓位大小。
- 建立必要的信心。 在没有看过策略历史表现的情况下交易,会导致你在首次回撤时放弃。严谨的回测提供坚持下去所需的背景。
回测并不保证未来表现。恰恰相反:它是过滤错误"好想法"的筛子。一个在回测中失败的策略,在实盘中成功的可能性极低。
一份稳健回测的组成部分
数据
| 数据类型 | 典型粒度 | 应用场景 |
|---|---|---|
| OHLC日线 | 每日1根K线 | 波段、持仓交易 |
| OHLC日内 | 1分钟到1小时 | 日内交易 |
| Tick数据 | 每笔成交 | 高频、剥头皮 |
| 订单簿 | 盘口快照 | 做市、套利 |
对大多数交易者而言,干净的日线或H1数据已足够。可靠来源:Bloomberg、Refinitiv、Polygon.io、Alpaca、EODHD,以及券商自身(Interactive Brokers、MetaTrader)。避免使用从大众网站爬取的数据,这类数据往往不完整。
三项预处理不可或缺:
- 对股票的股息和拆分进行调整。
- 在不进行粗糙插值的情况下填补缺口(节假日、停牌)。
- 检查异常值(从未存在过的50%影线)。
规则
要无歧义地记录每条规则。"RSI低时买入"无法执行。"日线RSI 14跌破30时收盘买入,突破70时卖出"才可测试。
四类规则:
- 入场:带有水平和时机的精确条件。
- 出场:止损、止盈、条件出场。
- 资金管理:仓位大小、单笔风险、最大并行数。
- 过滤器:趋势、波动率、时段、日期、新闻。
成本
这是最常被忽视的元素。一个每年100笔交易的策略,若回测不计入成本,会高估5%到15%的表现。
需要纳入的构成部分:
- 佣金:每笔交易0.5至5美元,因券商和品种而异。
- 点差:主要外汇1-2点,流动性高的期货1个tick,小盘股可高达0.5%。
- 滑点:日内通常0.5至2个tick,新闻触发的止损会更多。
- 隔夜融资费:杠杆CFD和加密货币。
关键指标
毛收益率并不够。六个指标用于诚实的评估:
| 指标 | 定义 | 最低可接受门槛 |
|---|---|---|
| 夏普比率 | 收益 / 波动率(年化) | > 1.0(理想 > 1.5) |
| 最大回撤 | 期间最坏累积亏损 | 通常 < 20-25% |
| 卡玛比率 | 年化收益 / 最大回撤 | > 0.5(理想 > 1) |
| 胜率 | 盈利交易% | 视R/R而定,通常35-60% |
| 平均R/R | 平均盈利 / 平均亏损 | 通常 > 1.5 |
| 盈亏比 | 盈利总和 / 亏损总和 | > 1.5(理想 > 2) |
如果平均R/R为3:1,30%胜率的策略也可以非常盈利。反过来,R/R为0.3:1的80%胜率策略是危险的(一笔差交易就能毁掉一长串连胜)。
需要警惕的陷阱
1. 过拟合
这是最阴险的陷阱。你测试了200种参数组合,留下最好的那个,策略在历史上显示出夏普3.5。三个月后实盘亏损15%。
症状:
- 在优化期内表现出色,其他时期平庸。
- 对参数极度敏感:EMA 21有效,EMA 22却炸。
- 可调参数数量 > 4-5个。
- 表现好到不真实(简单策略夏普 > 3)。
应对方法:
- 分割数据:70%训练,30%验证。在前者上优化,在后者上验证。
- 滚动前向分析:在滑动窗口上优化,在下一段上验证。
- 优先考虑简洁:最多2-3个参数。
- 在多个标的上测试:在EUR/USD上有效的策略,也必须能撑住GBP/USD。
2. 幸存者偏差
在当前的标普500成分上回测会忽略已被剔除的公司(常因破产)。结果会高估当时的实际表现。对个股策略,使用历史成分库(Compustat、CRSP)。
3. 前视偏差
使用决策时刻无法获得的信息。常见示例:在当前K线尚未结束时,就在该K线上计算移动平均。这种偏差会人为抬高表现。
4. 不具代表性的市场环境
仅在2017-2021年上回测会忽视一个持续上涨的环境。到2022年,许多此类"无敌"策略爆掉了。至少覆盖一个完整周期(包含2008或2020年在内的10-15年)。
一个仅覆盖近期牛市的回测不是回测,而是幻觉。一项测试的价值在于揭示策略在市场对你不利时的表现。
2026年可用的工具
| 工具 | 优势 | 劣势 | 价格 |
|---|---|---|---|
| TradingView(Pine Script) | 庞大社区,上手快 | 免费版有回测时长限制 | 免费 + 15-60美元/月 |
| MetaTrader(MQL4/5) | 外汇标准,券商免费 | 专有语言,调试痛苦 | 免费 |
| Python(Backtrader、vectorbt、zipline) | 完全灵活,数据科学生态 | 学习曲线,基础设施 | 免费 + 数据费用 |
| QuantConnect | 云端,多资产,庞大数据宇宙 | 高级功能需订阅 | 免费 + 25-200美元/月 |
| Obside | 无需代码,20年回测 < 1分钟,AI副驾 | 面向自主-系统化混合策略设计 | 免费增值 |
选择取决于你的技术水平和目标。追求速度和易用性:Obside或TradingView。追求最大灵活性:配合vectorbt或Backtrader的Python。
三种方式:手动、代码化、自动化
手动回测。 你在历史图表上手工应用规则。对理解你的策略有教学价值。对认真的验证而言太慢且易受认知偏差影响(通常3年数据需50-100小时)。
代码化回测。 你编写实现规则的代码(Python、Pine、MQL)。精确、可重现,但需要开发者技能。简单策略预计3-15小时。
AI辅助回测。 你用自然语言描述策略,AI生成代码并运行测试。总耗时数分钟。这是自2024年以来随着先进语言模型而普及的方法。
从回测到上线
经过验证的回测是必要条件,而非充分条件。部署前还有四个步骤:
- 模拟交易:30-90天的实时模拟,以验证执行延迟并确认表现。
- 滚动前向实盘:用象征性资金(账户的1-5%)运行1-3个月。
- 渐进放量:若表现符合预期,每30天将规模翻倍。
- 持续监控:出现异常回撤或与预期偏离时发出告警。
这种递进方式可降低令人不快的意外风险(实际滑点比预期更糟、券商延迟、回测未覆盖的事件)。
用Obside在几分钟内测试你的策略
传统回测要花数天:数据采集、写代码、调试、分析。借助Obside,你用自然语言描述策略,在20年多资产历史数据上启动回测,在1分钟内得到夏普、回撤与稳健性。AI副驾解释结果并给出情境化的改进建议。免费创建你的Obside账户,今晚就验证你的第一个策略。
仅供教育用途。不构成投资建议。交易存在风险,包括可能的本金损失。
常见问题
可靠回测最少需要多少年数据?
理想情况下10到15年,至少包含一次重大危机(2008、2020)。5年可以用于快速概念验证,但在此范围内不要得出强结论。日内策略所需绝对年数较少,但需要更细的数据(分钟或tick粒度)。
回测结果好就保证策略能行吗?
不能。回测过滤掉差想法并提供风险框架,但不是保证。即便是历史上最优的策略,如果市场体制改变(长期低波动、央行大规模干预等),也可能失败。
我可以优化多少个参数?
在能上线的策略中最多2-4个。超过这个数量,过拟合风险就变得严重。如果你的策略需要7个"优化过"的参数,它很可能在历史上被曲线拟合。
是否需要在多个标的上回测?
需要,这是稳健性测试中最好的之一。一个只在EUR/USD上有效却在GBP/USD上失败的策略,很可能被曲线拟合。真正的策略至少能在3-5个同类品种上撑住。
滚动前向还是经典回测?
只要可行就选滚动前向。你在一个滑动窗口(例如12个月)上优化,在接下来的一段(3个月)上验证,然后向前滑动并重复。这更贴近周期性调整策略的交易者的现实。
回测对期权也适用吗?
适用,但有复杂性:正确建模隐含波动率、价差上的滑点、到期。对此类情境,专业平台(CBOE LiveVol、OptionsAlpha)优于通用工具。