优化的力量在于它允许您测试数百种可能的参数设置,以便找到最有利可图的。 然而,与所有强大的事物一样,它也可能被滥用。 与杠杆一样,如果严格控制,优化有能力增强策略并回报丰厚的利润,否则它可能会破坏策略和一个人的帐户。
在寻找最佳参数的过程中,很容易将数据与历史进行拟合,从而获得仅对历史有效的“暴利”错觉。 这称为过度优化,而且很容易做到,几乎不可避免。 在这篇文章中了解过度优化 MT4 智能交易系统 (EA) 的风险是什么,以及如何避免过度优化的危险欺骗。
过度优化的自我欺骗可能是危险的。 它会产生一种错误的 EA 盈利能力,鼓励我们内心的贪婪在真实账户上尝试我们的“乌托邦式”EA——从而使我们的账户受到实际上是一个真正可怕的系统的火焰的影响,可以将其烧毁 .
放弃优化是愚蠢的,因为我们将错过为潜在盈利策略找到最佳参数设置的机会,而可能会被错误的任意参数设置所困。 然而,越过界限进入过度优化及其危险的后果是非常容易的。 我们如何找到中庸之道?
仅仅因为我们在优化过程中发现了一些潜在的脏东西并不意味着我们必须把婴儿和洗澡水一起倒掉。 只要采取措施降低过度优化的风险,优化就值得追求。
可以采取五个步骤来最大程度地减少过度优化:
步骤#1:尽可能优化少数参数。
不要添加不必要的规则组合(指标、信号、退出和过滤器)。 随着您添加到策略中的每条附加规则,您都增加了将策略曲线拟合到历史数据的可能性。
步骤#2:最佳参数的探测参数也应该是有利可图的。
每当您优化参数以找到有利可图的参数时,请确保周围的参数也有利可图。 如果指标的最佳长度为 18,请确保低于 (15, 16,17) 和高于 (19, 20, 21) 的周围参数也是有利可图的。 如果最优值任一侧的任何参数都无利可图,这应该是一个危险信号。
第 3 步:优化大型数据集(历史、柱和交易)。
您正在优化的历史记录越小,曲线拟合就越容易。 曲线拟合您正在优化的较大时间范围也容易得多。 一般来说,时间范围越大,您必须优化的历史记录就越多,因为您需要更多的历史记录才能获得可靠的柱样本大小。 时间范围越小,您需要处理的历史越少,因为您有更多的柱线。 但是,您仍然需要了解一些历史,因为历史显示了市场中的不同行为。
步骤#4:最佳参数应该适用于样本外(向前走)数据。
最佳参数是否适用于样本外数据,即来自另一个非重叠时间段的数据?
当您根据历史数据对系统进行测试时,“保存”一些时间段的历史数据总是有用的,这些数据将用于其他测试目的。 通常,有两种类型的数据:样本内数据和样本外数据。 样本内数据是最初用于测试和优化的数据; 样本外数据是已经保存的数据。 为进一步测试保存数据对于评估过程非常重要。
因此,您为自己提供了之前未在优化模型中使用过的数据。 因此,样本外数据不会影响您的系统,您将能够了解您的交易系统的真实表现。 简而言之,您将看到您的系统在真实交易中的可能行为。
在开始任何优化或回测之前,您应该保存一些历史数据,这些数据将用于样本外测试。 例如,您可以将历史数据拆分为三部分,留出一部分用于样本外测试。
那么你应该只使用剩下的两部分历史数据(样本内数据)进行初始测试和优化。 从图1可以看到,时间线上的历史数据有三分之一留作样本外测试,另外两部分作为样本内数据用于初始测试。
例如,您可以在 2000-2008 年的数据上测试您的系统,这将是您的控制样本历史,然后当您找到最佳参数时,您可以在 2008-2010 年的“向前”历史集上测试它们。 如果你的最优参数在样本外数据中表现不佳,这意味着它被过度优化了。
线上的数据放置顺序不是很典型:通常,样本外数据不是在测试开始时,而是在正向性能之前。
一旦您在样本内数据上测试了您的系统,您就可以继续该过程并将系统应用于样本外数据。 这样做是为了让您有机会比较样本内和样本外数据的系统性能结果。
相关性是在样本内和样本外数据的趋势和表现之间寻找相似性的过程。 几乎所有交易平台都允许您比较在测试期间创建的有关系统性能的报告。 如果数据集之间的相关性很高,那么您的策略很可能会成功,并在远期性能测试和实时交易中显示出良好的结果。
如果两个数据集之间的相关性不明显,如左图所示,则系统很可能由于过度优化而无法在实时交易中正常运行。 如果相关性强(右图),您可以继续并执行称为前向性能测试的附加测试。
第 5 步:最佳参数应适用于正向性能数据。
正向性能测试是测试系统性能的另一种工具。 这组样本外数据通常被称为纸上交易,因为所有操作都是“虚拟”执行的。 在远期性能测试期间,模拟了实时市场中的一种可能情况,系统根据其参数和逻辑工作,就像实时交易一样。 这意味着记录任何利润、损失、进入和退出,但不执行任何实际操作。
请记住:尽可能准确地遵循系统逻辑非常重要,否则您将无法评估前向性能测试结果。 您应该诚实地指定所有交易进入和退出,没有任何例外,也没有任何解释。 只有在这种情况下,您才能正确评估系统。
许多经纪商都可以选择开设一个虚拟交易账户,您可以使用该账户进行练习:开仓交易、计算盈亏等。该账户允许您测试您的系统,而不会面临损失真实资金的威胁。
如果所有数据集之间具有良好的相关性,您的系统就可以将其用于实际交易。