backte.st

回测中的过拟合:为什么漂亮的结果在实盘中常常失效

为什么测试大量变体会让噪声看起来像优势、报告中的警示信号,以及减少过拟合的简单习惯。

过拟合(曲线拟合)是指你的规则描述的是某段历史样本中的噪声,而不是会重复出现的规律。这是回测中看起来很棒的策略在真金白银下令人失望的最常见原因。

它是怎么发生的

每当你测试一个变体(换一个 RSI 阈值、换一条均线、再加一个过滤条件),并保留看起来最好的那个,你就是在搜索。搜索得足够多,总会有东西纯属偶然地看起来不错,就像很多人一起掷硬币,总有人会连续掷出十次正面。

问题不在于某一次测试,而在于你跑过又忘掉的测试次数。David Bailey 和 Marcos López de Prado 等研究者对此有大量论述,其中包括 收缩夏普比率 这样的方法,它会按背后的尝试次数来调整结果。

报告中的警示信号

去掉最佳交易检验

Backte.st 的 去掉最佳交易 检验会在去掉收益最高的五笔交易后,重新计算已平仓交易的复合收益。如果策略仍然赚钱,说明结果分布在许多交易中。如果变成亏损,说明大部分利润来自少数极端值,而这恰恰最难重复。

减少过拟合的习惯

  1. 测试前先写下规则。 决定你期待什么以及原因,然后只测一次。
  2. 选择简单的规则。 条件越少,拟合噪声的方式就越少。
  3. 留出一段期间,只用一次。 参见 样本外测试。
  4. 检查邻近参数。 真实的效应很少只依赖于某一个精确数字。参见 参数稳健性。
  5. 在多个市场上测试。 只在一个代码上有效的规则值得怀疑。Backte.st 允许用同一套规则运行最多 10 个市场。
  6. 记下尝试次数。 如果你测试了二十个变体,就要比只测试一个时更严格地评判胜出者。

实际看起来是什么样

在 实验室 中搭建一个像 RSI 反转这样的策略,在几只股票上运行,并调整阈值直到某个市场看起来很棒。然后看检验:未见期间或邻近参数常常会变成弱点。这就是变得可见的过拟合。

在实验室中试试

无需代码,用指标搭建策略,在几个市场上运行,用你自己的规则查看这项检验。免费,并在你的浏览器中运行。

打开实验室