每个交易者心中都有一个看起来很不错的策略。入场有道理。逻辑感觉很严谨。但当他们用真实资金试盘时,就会奇怪为什么结果看起来完全不同。缺少的那一步,几乎总是回测。
回测是指将交易策略应用于历史价格数据,以了解它的表现如何。这是交易者最接近实验室的东西。与其冒着资本风险来发现策略是否有效,历史数据提供了一个受控环境来测试想法、衡量绩效,以及在一分钱真实交易前识别弱点。
但回测也是许多交易者欺骗自己的地方。如果做得不当,它会产生看起来在纸面上很壮观但在实盘市场中崩溃的结果。理解如何正确回测,更重要的是如何诚实地解释结果,是交易者能开发的最有价值的技能之一。
手动与自动回测
回测有两种基本方法,各有明显的权衡。
手动回测
手动回测涉及逐根K线滚动查看历史图表、识别符合策略规则的设置、记录入场和出场,以及手工或用电子表格计算结果。这很慢。对单一策略在一个市场的彻底手动回测可能需要数天甚至数周。
优势在于对理解的深度。手动回测的交易者学会了读取价格行为的方式,这是自动测试者永远无法做到的。他们对设置在实时中的实际样子(包括代码策略用清晰逻辑处理但实盘交易者必须即时解释的混乱、模糊信号)会产生直觉。
手动回测最适合于裁量策略、基于模式的入场,以及仍在学习一致性识别设置的交易者。
自动回测
自动回测使用软件将编码策略应用于历史数据,并在几秒钟内生成结果。常见平台包括MetaTrader的Strategy Tester、TradingView的Pine Script回测器,以及Python中的自定义脚本(使用Backtrader或Zipline等库)。
优势在于速度和规模。自动回测可以在几分钟内跨越50种工具运行20年数据的移动平均线交叉策略。它消除了人类只选择有利设置或无意中跳过亏损交易的倾向。每个信号都会被采取,每个结果都会被记录。
缺点是编码策略迫使简化。像"趋势看起来很强"或"成交量感觉不对"这样的细微差别很难转化为规则。自动测试的速度使过度优化变得危险容易,这个问题在下面有详细讨论。
手动与自动回测
| 因素 | 手动 | 自动 |
|---|---|---|
| 速度 | 慢(数天/数周) | 快(数分钟/数小时) |
| 样本数量 | 通常50-200笔交易 | 数千笔交易 |
| 所需技能 | 图表阅读 | 编码/脚本 |
| 最适合 | 裁量策略 | 规则型系统 |
| 精选风险 | 较高(人为偏差) | 无(采取所有信号) |
| 过度优化风险 | 较低 | 较高 |
| 直觉建立 | 强 | 弱 |
真正重要的关键指标
回测生成大量数字。不是所有这些数字都值得同等关注。以下是分隔有用结果和噪音的指标。
净利润/总回报。底线。策略赚钱了吗?这是起点,但单独来看也是最具误导性的指标。返回200%但沿途有70%回撤的策略,与返回80%但只有15%回撤的策略不同。
胜率。盈利交易的百分比。与许多初学者的假设相反,单独的胜率几乎对策略质量没有任何说明。40%胜率的策略如果赢家显著大于输家,可能高度盈利。80%胜率的策略如果20%的输家是灾难性的,也可能是灾难。胜率只有在风险回报比的背景下才有意义。
利润因子。总利润除以总亏损。利润因子高于1.0意味着策略赚钱。高于1.5通常被认为是扎实的。在大样本上高于3.0应该引发怀疑,而不是庆祝。
最大回撤。权益曲线中最大的峰值到谷值的下跌。这可以说是实际可行性最重要的指标,因为它回答了这个问题:这个策略在恢复前造成多大的痛苦?最大回撤50%的策略只需要100%的收益就能打平,大多数交易者在恢复之前就放弃了。
夏普比率。风险调整后的回报,计算为平均回报除以回报的标准差。越高越好。夏普比率高于1.0是可以接受的,高于2.0是强的。它惩罚通过过度波动实现回报的策略。
交易数量(样本数量)。这是大多数交易者忽略的指标,也是决定其他任何指标是否有意义的指标。
回测指标快速参考
| 指标 | 测量内容 | 良好范围 | 危险信号 |
|---|---|---|---|
| 净利润 | 总损益 | 正数 | 长期负数 |
| 胜率 | 盈利交易% | 40-65% | 高于85% |
| 利润因子 | 总利润/总亏损 | 1.3-2.5 | 高于4.0 |
| 最大回撤 | 最坏权益下跌 | 低于25% | 高于50% |
| 夏普比率 | 风险调整回报 | 高于1.0 | 低于0.5 |
| 交易数量 | 样本数量 | 200+ | 低于30 |
样本数量问题
如果一个策略产生15笔交易,其中12笔获胜,胜率为80%。这听起来很棒。但几乎没有意义。
有15笔交易,随机概率可能从一个没有真正优势的策略中轻易产生80%的胜率。抛硬币15次,得到12个或更多正面的概率大约是3%。这不是天文数字。运行30种不同的策略,其中一种可能会凭纯运气达到这些数字。
统计显著性需要量。作为粗略指南:
- 低于30笔交易:结果基本上没有意义。太小而无法区分技能和随机性。
- 30-100笔交易:仅方向指示。策略可能有优势,但信心很低。
- 100-200笔交易:结果开始变得有信息意义。绩效中的模式开始稳定。
- 200+笔交易:合理信心的最低阈值。样本越大,指标就越接近策略的真实绩效。
这就是为什么高频策略更容易在统计上验证。每天产生20笔交易的剥头皮系统可以在两个月内积累1,000个数据点。每月进行2-3笔交易的波段交易策略需要数年数据才能达到相同的信心水平。
曲线拟合:困住每个人的陷阱
曲线拟合,也称为过度拟合,是回测不转化为实盘交易的最常见的单一原因。它也是当你陷入其中时最难识别的陷阱。
曲线拟合发生在交易者继续添加规则、过滤器或参数调整,直到回测看起来完美的时候。RSI入场阈值从30调整到27。波动性过滤器消除了表现最差的三个月。一个时间限制切掉了亏损的交易时段。每项调整都改进了回测数字。每项调整也使策略更具体到它所测试的历史数据,而不太可能适用于它从未见过的数据。
核心问题是这样的:历史数据包含信号(真实、重复的市场模式)和噪音(随机、一次性事件)。健壮的策略捕捉信号。过度拟合的策略记忆噪音。
过度拟合策略的警告信号:
- 策略有超过5-6条规则或过滤器
- 参数奇怪地具体(入场在14:37,RSI在27.3,止损在1.7 ATR)
- 权益曲线可疑地平滑,几乎没有回撤
- 胜率高于80-85%
- 当任何单个参数稍微改变时,绩效显著下降
- 策略只在一个工具或一个时间周期上有效
一个有用的经验法则:如果一个策略在其关键参数改变10-20%而不崩溃的情况下无法生存,它可能是过度拟合的。健壮的策略对参数不敏感。一个50/200周期能工作的SMA交叉,也应该合理地与52/205一起工作。如果它只与一个确切的组合相符,结果是数据的人工产物,而不是真正优势的反映。
样本内与样本外测试
针对曲线拟合的标准防御是将历史数据分为两个部分。
样本内数据用于开发和优化策略。这是测试规则、调整参数和策略成形的沙箱。
样本外数据被保留,未触及,直到策略最终确定。一旦策略被锁定,它就会在这个保留数据上进行测试。如果绩效保持,就有理由谨慎相信。如果它崩溃,该策略可能对样本内期间进行了过度拟合。
常见的分割是70/30:在70%的数据上开发,在30%上验证。一些交易者使用前向行走分析,它重复地在滚动样本内窗口上优化并在下一段测试,在不同市场条件下提供多个样本外结果。
关键规则:样本外数据只能使用一次。交易者看到样本外结果并返回调整策略的那一刻,该数据不再是样本外的。它已被污染。这是一个微妙但毁灭性的错误,它经常发生。
夸大结果的数据偏差
即使是结构合理的回测,如果基础数据有缺陷,也可能产生误导性结果。
幸存者偏差
大多数股票数据库只包含目前存在的公司。数百家破产、退市或以白菜价收购的公司都缺失了。使用今天成分股的"标普500股票"进行的回测并不是测试历史上存在的标普500。它在测试精选的赢家名单。这系统地夸大了回报,并使策略看起来比它们在实时中的表现要好。
向前看偏差
向前看偏差发生在回测使用在交易时不会得到的信息时。例子包括使用修订的经济数据(GDP数据定期在几个月后修订)、应用在完整数据集上计算的指标,或基于一天的收盘价入场当那个价格直到会话结束才为人所知时。
在自动回测中,向前看偏差经常通过编码错误混入。使用来自K线N的数据计算信号并在K线N上入场(而不是N+1)的脚本在每个信号中都有向前看偏差。
点差和佣金忽视
令人惊讶的是,许多回测假设零交易成本。对于每月进行3-4笔交易的波段交易者来说,这可能不会实质上改变结果。对于每天进行20笔交易的剥头皮者来说,即使每笔交易1点的点差也能将盈利系统变成亏损系统。始终包括现实的点差、佣金和滑点估计。如有疑问,高估成本而不是低估。
前向测试:通往实盘交易的桥梁
通过回测和样本外验证的策略在值得真实资本之前仍有一个更多的障碍:前向测试,也称为模拟交易。
前向测试是指在演示账户上或使用模拟成交实时交易策略。与回测不同,前向测试发生在策略从未见过的数据上,在实时展开的市场条件下。它不仅测试策略逻辑,还测试执行现实:交易者能否在实时中实际识别信号?成交是否现实?当没有能力向前滚动并偷看接下来会发生什么时,策略是否仍然有效?
最小前向测试期取决于策略的时间框架。日交易策略应至少前向测试1-2个月。波段交易策略需要3-6个月来积累足够的交易。目的不是完全复制回测结果,而是确认策略在回测期望的合理范围内执行,考虑头寸大小和执行的正常变动。
策略验证管道
| 阶段 | 目的 | 期限 | 通过标准 |
|---|---|---|---|
| 样本内回测 | 开发和优化规则 | 历史(70%数据) | 正期望值,合理指标 |
| 样本外回测 | 对未见数据验证 | 历史(30%数据) | 绩效在样本内的20-30%内保持 |
| 前向测试(模拟) | 在实时条件中确认 | 1-6个月实时 | 结果与回测一致 |
| 实盘(小规模) | 证明执行可行性 | 1-3个月小资本 | 无意外滑点或成交问题 |
| 实盘(全规模) | 部署策略 | 持续 | 持续监控和审查 |
现实结果看起来像什么
回测教给人的最有用的事情之一是校准。从未进行过回测的交易者往往有非常不现实的期望。进行过大量回测的交易者知道真正的优势看起来像什么,它通常是温和的。
50-60%胜率和1.3到2.0之间利润因子的策略是真正扎实的。这听起来可能不令人兴奋,但在数百笔交易中加上纪律风险管理,它会产生有意义的回报。90%以上胜率的策略几乎总是有隐藏的风险:它们经常赢得小额,然后在罕见但灾难性的亏损中全部亏回(甚至更多)。期权卖出策略是这种模式的经典例子。
好的回测不证明策略将有效。它证明策略值得进一步测试。目标不是确定性;而是基于证据的知情信心。
常见回测错误
除了上面涵盖的主要陷阱,这些错误经常破坏回测质量:
- 在太短的时间段上测试。仅在牛市上测试的策略从未经过压力测试。使用包括至少一个完整市场周期的数据:牛市、熊市和横盘条件。
- 优化到完美。回测中最佳的参数设置几乎永远不是向前最佳的参数设置。目标是健壮的,不是最优的。
- 忽略制度变化。在趋势市场中回测的趋势跟踪策略看起来会很出色。问题是它在横盘条件下的表现如何。在不同的市场环境中进行测试。
- 假设即时成交。在实盘交易中,限价单会错过,市价单会滑点。建立现实的成交假设,特别是在波动时期。
- 没有假设的回测。随机测试指标和参数组合直到某些工作是数据挖掘,而不是策略开发。从关于策略为什么应该工作的逻辑论文开始,然后测试数据是否支持它。
关键要点
回测不是通往盈利交易的快捷方式。它是一个过程,将值得进一步测试的策略与应该被抛弃的策略分开。如果做得当,它可以让交易者避免在经不起仔细推敲的想法上浪费数月和大量资本。
- 手动回测建立直觉;自动回测建立统计信心。大多数认真的交易者都使用两者。
- 样本数量是一切。来自少于30笔交易的结果是噪音。目标是200+笔交易以获得有意义的数据。
- 曲线拟合是未检查优化的默认结果。通过样本外测试、参数敏感性分析和诚实的自我评估来对抗它。
- 前向测试不是可选的。在冒真实资本风险前,它是最终的验证步骤。
- 现实的优势是温和的。55%胜率和1.5利润因子的策略值得交易。95%胜率和5.0利润因子的策略几乎肯定好得不真实。
免责声明:本内容仅供教育目的,不构成财务建议。交易涉及重大亏损风险。过往表现不保证未来结果。