回测是交易中最具说服力的谎言。资金曲线向右上方倾斜,胜率看起来很健康,回撤感觉也可以承受。然后你实盘交易它,优势却悄然消失。这不是运气不好。回测会以系统性、可预测的方式夸大实盘表现,一旦你了解了这些失效模式,你就不会再对此感到惊讶。
本文假设你已经知道如何进行回测。如果你还不知道,请先阅读配套指南如何回测交易策略,其中涵盖了具体操作方法、样本量以及前向测试。在这里,我们要深入探讨一个更难的问题:为什么回测给你的数字几乎总是比你实际能赚到的要好。
回测是最好的情况,不是估计值
核心问题在于,回测不是一种中立的测量。它是一个过程的产物,在这个过程中你做出了几十个小选择,而每一个选择都有可能把乐观情绪渗入结果之中。你挑选了市场、周期、指标、参数、出场方式。每一个决定都是在对什么有效已有一定了解的情况下做出的。这种了解正是污染源。
从统计学角度看,你保留的结果并非从可能结果分布中随机抽取的样本。它是众多含噪抽样中的最大值。当你从一百个东西中挑选最好的那个时,你测量的不是技能,而是运气的上尾。接下来是产生这种向上偏差的机制清单。
回测夸大实盘表现的五种方式
| 偏差 | 如何夸大结果 | 如何发现它 | 修正方法 |
|---|---|---|---|
| 幸存者偏差 | 只测试了存活到今天的资产 | 检查资产范围是否为特定时点数据 | 使用包含退市股票的数据集 |
| 前视偏差 | 使用了交易时点不可能知道的数据 | 将每个信号追溯到其时间戳 | 对数据加延迟;在下一根K线填单 |
| 过拟合 | 众多调参运行中最好的那个,靠运气显得很棒 | 数一数你调了多少参数、试了多少次 | 减少参数;进行样本外测试 |
| 忽视成本 | 忽略了点差、滑点、佣金 | 用真实成本重新计算所有结果 | 为每笔交易建立来回成本模型 |
| 依赖市场周期 | 把某一个市场时代当成市场的普遍规律 | 记录所测试的利率和波动率环境 | 在牛市、熊市和高波动环境中都进行测试 |
数字说谎的五种方式
1. 幸存者偏差:你只测试了赢家
假设你回测一个简单的想法:在标普500股票下跌时买入。你拉取今天的指数成分股,下载它们的价格历史,并模拟在每次10%的回撤时买入。结果非常出色,因为这个策略看起来总能反弹。但实际并非如此。它看起来是这样,只是因为你测试中的每家公司都存活下来,才能出现在今天的指数中。
标普500每年大约替换20到25家公司。在长达20年的回测中,这意味着你从未见过的数百次成分股变更。你的测试从未在雷曼兄弟、贝尔斯登、安然或华盛顿互惠银行下跌时买入,因为它们下跌之后一路走低,直到被摘牌并从指数中清除。这个策略从未接触过那些失败者。"下跌总会反弹"这个结论,是由测试范围的构造方式预先设定的,而不是从数据中发现的。包含退市股票的特定时点数据是唯一真实可靠的修正方法。
2. 前视偏差:使用了你当时并不掌握的信息
前视偏差意味着你的模拟使用了在交易那一刻并不可获得的信息。一种微妙而常见的形式是时序错误。比如你的规则是"当日收盘价上穿50日均线时买入",而你的回测在当日收盘价成交这笔买单。但实际上,你在交易日结束之前无法知道收盘价,到那时你唯一能交易的价格是次日开盘价,而这个价格可能会对你不利地跳空。用信号价格而不是下一个可获得的价格来成交,可能会人为制造出并不存在的优势。
另一种经典形式是数据重述。公司盈利会被修正。如果你的回测使用了数据库中目前存在的最终修正后的每股收益数字,那么它实际上是在用交易当天并不知晓的数字进行交易,而当时只有最初公布的数字存在。这个规则说起来容易,但也很容易违反:每一项输入都必须延迟到该时间戳上可以知道的信息为止。
3. 过拟合与多重比较陷阱
基础操作指南涵盖了基本的曲线拟合问题。更深层的问题是统计学上的。如果你测试200种参数组合,并以5%的显著性阈值来判断每一个,那么大约有10个会纯粹出于偶然而看起来"显著",即使它们中没有一个真正具备优势。挑选表现最好的那一次运行,并不是找到了好的那个,而是找到了最幸运的那个。
一个有12个优化参数的策略,拥有足够的自由度去拟合几乎任何历史价格序列。它并没有学到关于市场的规律,而是记住了你样本中的特定噪声。诚实的经验法则直接由此而来:你调整的参数越多,尝试的组合越多,你应该对结果打的折扣就越大。一个只测试过一次的干净的三参数系统,比一个经过千次运行优化后胜出的十二参数系统更值得信任。
4. 对交易成本的忽视
点差、滑点和佣金是按每笔交易收取的,所以它们会随着交易频率而累积复合。假设零成本的回测,并没有在模拟你的策略,而是在模拟一个免费交易的幻想版本。设想一个短线系统,每次来回交易的毛利优势仅为0.10%,而在加上点差、滑点和佣金之后,现实的来回成本为0.12%。下图绘制了随着交易次数增加,毛回报与净回报的对比,为清晰起见使用了简单的累加回报。
同一策略,毛利与净利对比:微薄的优势被成本吞噬殆尽
看看会发生什么。在每年1000笔交易时,毛利回测显示出高达100%的惊人回报,而经过成本调整后的真实结果却是负20%。这个策略交易得越多,回测看起来就越好,而实际亏损的钱也就越多,因为每笔交易的优势从未能扛过每笔交易的成本。这就是为什么同样诱人的、毛利40%的高频系统,净利却可能牢牢地为负。成本还会悄悄扭曲回测报告出的风险回报比,因为每一次支付的点差都会缩小每一笔盈利交易的实际回报。
5. 对市场周期的依赖
一个从2010年到2021年回测的策略,几乎完全是在单一市场周期内测试的:零利率、量化宽松、低波动率,以及历史上最长的牛市。在那个世界里,下跌总会反弹,趋势总会持续,所以一个"学会"了这些行为的均值回归或趋势跟踪系统,实际上只是把那个特定周期当成了市场的永久法则来编码。然后2022年到来,伴随着加息、熊市和高波动率,这个策略遇到了它从未见过的情况。局限于单一时代的回测告诉你的,是策略在那个时代表现如何,而对于它在下一个时代将如何应对,几乎什么都没告诉你。
你应该对回测打多大的折扣?
你无法完全消除这种偏差,但你可以把它计入定价。把标题数字当作上限,并根据测试的构建方式对其打折。测试过程越"脏",打的折扣就应该越大。
在相信回测结果之前应该打多大折扣
| 回测特征 | 现实的处理方式 | 原因 |
|---|---|---|
| 只有样本内数据,单一市场周期 | 大幅折扣或直接舍弃 | 它从未见过不同的世界 |
| 10个以上优化参数 | 大幅折扣 | 它很可能只是记住了样本 |
| 假设零成本或忽略成本 | 可能会翻转正负符号 | 净值才是你唯一应该保留的数字 |
| 幸存者偏差已清理的资产范围 | 中等折扣 | 失败者已被悄悄移除 |
| 样本外、前向滚动测试、现实成本 | 轻微折扣,仍需实盘验证 | 这是你能得到的最接近真实的情况 |
真正有帮助的做法
这一切并不意味着回测毫无用处。这意味着回测是一个筛除坏想法的过滤器,而不是对好想法的承诺保证。有几种做法能有意义地缩小回测与现实之间的差距。保留模型从未接触过的样本外数据,并使用前向滚动测试。根据参数数量大力打折。有意在不同的市场周期中进行测试,包括那些糟糕的周期。并确认实盘执行确实能够达到回测所假设的成交价和仓位规模,因为一个悄悄依赖完美进场点、或忽视了你的仓位管理规则的系统,一旦真金白银投入其中,表现将会大不相同。
最后的过滤器是模拟交易,然后是小额实盘交易。回测生活在一个没有漏单、没有情绪、没有意外的世界里。真实执行是唯一能囊括这三者的测试。
关键要点
- 回测是众多含噪试验中最好的那一个,所以在你读到它之前,它就已经存在向上偏差。
- 幸存者偏差只测试了存活下来的资产;前视偏差用你当时并不掌握的信息进行交易。
- 过拟合程度随参数数量和尝试的组合数量而增加,应据此打折。
- 成本按每笔交易收取,可能把巨大的毛回报变成牢牢的净亏损。
- 单一市场周期的回测把那个周期编码成规律,一旦周期改变就会失效。
回测告诉你一个策略过去本可以奏效。它从不会告诉你它将来一定会奏效。这两句话之间的差距,正是大多数交易账户走向消亡的地方。
免责声明: 本内容仅供教育目的,不构成财务建议。交易涉及重大亏损风险。过往表现不能保证未来结果。