第27章 回溯测试
大部分人都知道回溯测试很重要,但是很少有人知道如何进行回溯测试。回溯测试是一个对你外汇交易获得成功非常重要的基本面工具,它就是收集一系列数据或事件,然后将它们运用于我们想要测试的交易策略或交易系统中,来检验策略或系统的有效性。关键问题是既然绝大部分熟知内幕的外汇交易者都知道回WJ 测试很关键,那些交易新手,甚至是经验丰富的交易老手为什么都不充分加以利用呢?
有两个答案。一个是很多人觉得这个过程很枯燥或无聊。他们不明白这一过程的重要性,或者只是无所谓,他们更喜欢直接带着他们的策略冲进市场一一通过模拟账户甚至是真实账户。这是一个巨大的错误。最终,这些人都会持续亏损。毫无例外!为什么会这样呢?因为贪婪、急躁、喜欢走捷径以及他们对生活的态度让他们喜欢冒险,然后盲目地进入市场。在打爆他们的第一个胀户之后,就陷入沮丧。
还有一类人会进行回溯测试,但是这些人不知道如何实现它的功能。这些人都很积极,但是良好的意愿并不能产生好的结果。他们中有些人也会以失败收场。
这两类交易者都亏损,因为这项工作是高度个性化的。没有人在旁边告诉你应该做什么,尤其是不应该做什么。所以没有分析或弄明白的错误就堆积起来。我敢肯定的是,如果在使用模拟账户以及随后的实盘账户中给予足够和适当的指导,就可以挽救成千上万的钱。请记住一点,模拟账户的交易与实盘交易有些许区别。我们已经在本书中用了一个章节来讨论这个话题。
这就是为什么即使在模拟账户中做了大量练习后获得良好的交易结果,也并不能自动保证你在实盘账户中不会犯错,因为你缺乏经验,也缺乏如何深入理解一个交易策略并跟进遭遇的错误的指导。
如果你没有正确地进行回溯测试,你就很有可能成为一个永恒的失败者。如果你试图在没有通过统计验证绩效的情况下,在真实市场实施一种交易方法,你就只会亏掉你自己的钱。
为什么回溯测试如此重要呢?
1. 因为它会给你一个关于你使用的工具及其有效性,以及在建仓和平仓时成功的概率在统计学上的确定性。
2. 因为它可以降低你对入场的恐惧。
3. 因为当你交易外汇时各你需要对你的策略保持高度的自信和信任,因为你知道市场上什么事情都有可能发生一一并且很多时候, 是在你最不经意的时候。
4. 因为它可以让你在实盘交易之前就识别并修正你系统中可能存在的缺陷,并找到你系统运用的最佳市场状况。
5. 因为外汇交易者不是预言家。不要试图在你的账户上玩赌博游戏,靠直觉或者预感交易。采用一个完全被证明有效的方法才是负责任的态度,而这恰恰是一个交易者必备的一项基本特质。
简而言之,回溯测试就是将一个交易策略运用到历史数据上的行为。通过测试它们在历史数据上的表现,你可以验证你交易方法的全部参数和规则。并且根据你的交易结果,改进条件提升你的系统性能。
参数必须包括时间框架,预期收益和最大允许亏损,盈利目标以及基于技术面或基本面指标的入场和出场条件。要对整体盈利能力,盈利单和亏损单的百分比,以及风险报酬比的结果进行分析。
回溯测试方法
手动回溯测试
这是3 个方法中最慢的一个,涉及通过历史数据来提升,写下交易信号井记录计划的入场价和出场价。这个方法受制于一张走势图上可容纳的数据数量。手动回溯测试会要求你进行精确的记录,这将有助于你积累很好的经验,将外汇交易当作事业来做。
说实在的,这不是今天市场的现实。大部分回溯测试方法都需要在分笔成交数据( tick dala) 上运行,才能测试出有效性或准确率。这意味着每当市场价格发生变化, 你的电脑系统就要储存那个信息。你能想象试着手动储存这么多信息是什么样吗?我无法想象这种情况。即使是电脑进行回溯测试,也会遇到困难。事实上,回溯测试工作量太大,常常会让电脑崩溃。有太多的数据和时间点需要处理。
软件回溯测试
在我看来,这是回溯测试一个交易策略的最佳方法,因为这种软件可以自动处理数据,并且运算速度更快,也可以处理更长时间的数据。你可以经历和实盘交易相同的情况,就好像你在进行实盘交易一样,还能略以更高的速度来回测试并且为数据输出设置更适合的速度。
数据储存器是我在为交易者创建一个用于个人外汇交易的专属软件用户界面时,我所创建的最关键的一个部分。因为我在开发软件时,我必须创建后端软件,储存器和一周7 天一天24 小时的数据中心。因为我可以获得所有的技术,所以我能创建我自己的数据储存器。我可以在我们的测试实验室利用这些数据,这让我比那些小资金的个人客户拥有明显的优势。我过去与大众分享了我知道的一切,这本书也一样。
程序化回溯测试
用你策略的所有规则和参数创建一个程序化界面,是3 种方法中最复杂的一个,但是如果你最终打算用交易机器人或者自动交易系统的方式来交易,这个方法就很有用。电脑根据你的系统规则进行交易。
这种回溯测试的速度是最快的,因为你不需要看着走势图展开。它的计算和交易都根据你设定的参数自动进行,而你只会看到最终结果。
它存在一些限制。首先它很难精确地编写系统,其次, 在交易机器人决定交易时,它只考虑实时数据。你还需要手动查看它做的一些交易,以确定这个程序真的在按你的规则进行交易,并且你可能必须进行很多调整,直到交易机器人完全准确地解读整个交易状况。
前向测试
很显然,它不是回溯测试,但它也是一种测试方式,所以我要放在本章节中讨论一下。你可以为你的交易做得最棒的事情之一就是前向测试你的策略。你可以用你的智能交易系统、其他交易机器人、手动系统等进行这个测试。
基本上你要做的就是拿着你的交易机器人或交易计划然后严格执行。但是这次不是采用过去的信息并回溯测试你的策略,而是采用实时数据并根据实时数据进行交易。你可以在实盘账户或者模拟账户中进行这种测试。但是当进行这种交易时,你需要盯着你的电脑屏幕。这样, 你才能知道真正发生了什么,以及你的交易是如何建仓和平仓的。你将可以看到经纪商玩的一些花样。我喜欢连续前向测试我的交易机器人和系统达几个月,甚至几年。这样,当我在做自己的研究时,我可以看到随着市场买报价和卖报价变化,这个系统是怎么工作的,而不是根据收盘后的静态数据进行测试。
如何进行回溯测试
首先它需要做出一些努力,但是一旦你发展出一个完整的模板,它对评估任何策略都有帮助。
你的交易方法必须明确定义,并且拥有特定的、非主观性的入场和出场规则一一基于指标或价格形态发出的信号。你不能采用太多指标,因为指标太多可能发生冲突,影响决策。然后,你需要根据你个人交易风格,选择评估的货币对以及特定的时间框架。例如,如果你只交易某一特定时段,那么这个时段就应该是进行回溯测试的时段。
有了这些数据,你就可以在Excel 中设定一个模板,显示你交易的货币对及其入场和出场价格。你还需要列出最大的盈利和最大的亏损。这些信息对于你的分析都是至关重要的。你可以把所有最大的盈利当作一系列事件,可以从中获得平均值及其标准差。这将提供一些统计上的置信区间相关数据,以便你确定自己的盈利目标。
最大亏损方面也是一样,它必须按照如下方式思考: 在平仓前或者选择不平仓, 等待头寸由亏损变为盈利之前,我的方法能承受多少点的亏损(也就是说,找到更为精确的止损位) 。
关键问题是我应该评估多少数据? 我个人认为要获得有效的结果,200 到400 笔交易(差不多历时3 到5 个月,具体多少取决于你的交易风格)是回溯测试的最低要求。这当然需要花费很多精力,但是这是一个很好的策略测试体系,它将有助于你找到持续盈利,而不仅仅盈利数周或数月的最好的交易系统。
永远记住,你的盈利水平必须大于你的止损。如果你的交易方法或风格是赚35 点,亏40 点,那么你的资本承受了相当高的风险。还有更糟糕的一一一赚5 点然后亏损20 点,这是非常不合理的,这种系统必须丢弃。
我测试了所有类型的策略,甚至包括那些宣称准确率达99.9% 的策略,我发现某些时候确实如其所说,但是这些系统的问题在于当你真的开始实盘交易后,你无法得到相同的交易结果。你会注意到的第一件事就是,有些经纪商开始玩我在本书中提过的那些花招。所以,你的自动交易系统打算做的交易无法全部实现。
猜猜怎么回事?是测试结果被改了。现在你有了新的变量。你还有一些被过度吹捧的策略的止损幅度巨大,所以如果你愿意承受300到400点的亏损,那么你也可以获得一些成功。不过,你最好有一个大账户,这样,你就可以承受这个单次大幅亏损。
有些策略是采取负风险报酬比的交易方式。这种策略会冒100 点的风险来博取10 点的盈利,并且会连续8 笔交易盈利,然后又连续2 笔交易亏损。现在,你处于混乱之中。你不能悖逆良好的资金管理原则。那是至高无上的。所以在你回溯测试时, 一定要在你的系统中对其进行测试。
总之,构建一个良好的回溯测试策略,有4 个基本步骤:
1. 获得耍测试的货币对的适当和最完整的历史市场数据。
2. 决定你将用作入场和出场信号的指标和指标系列。
3. 确立你的交易规则。
4 . 通过适当改变交易规则的参数,比如总资本、保证金水平、最大单次亏损幅度、最大收益、连续亏损或盈利笔数,以及不同的杠杆和点差等,不断完善你的策略。
外汇交易模拟器
学习、发展并优化你的交易策略,需要大量练习和重复,并不断进行优化。外汇交易模拟器是专门用来再现实时市场状况的软件,让你可以模拟外汇交易。它是对训练并提升你的交易技能非常有用的工具。通过这个工具,你可以对你的交易方法树立信心,并且不需要拿真实资金冒险就能比较几个不同的交易策略。
有了这样一个工具,你就可以在任何时候加载并回顾历史数据,并且你想进行多少次就多少次。这允许你对某个货币对的行为的理解进行连续的训练,包括识别走势图形态、价格行为和信号等,不断地重复直到你对市场行为的解读以及你方法的绩效感到自信。
有些交易者认为带着模拟账户直接进入市场进行前向测试会更好。但是,使用外汇模拟器可以让你在短短几天内,就跑完几个月的数据,还可以将你的工作限定在特定的市场时段并且在不问时间框架下进行测试。另外,如果你想在模拟账户中测试一个交易策略,你首先需要知道自己到底在做什么,那些你通过使用模拟器获得的交易自信和市场经验是非常宝贵的。
还有一些独立、特定的测试软件程序可以选用,当然还有具有策略测试功能的交易平台,你也可以找到允许在你选择的交易平台上进行测试的测试插件。它们中有些是免费使用的,其他则必须一次性购买或者订购。如果你的交易平台允许你回到过去同时将走势图向前移动一根蜡烛线,你就可以进行手动回溯测试,虽然这种方法要慢一些。外汇交易模拟器允许你设置更快的市场分笔成交数据序列速度,这样,你可以只运用你真正需要的时间并且测试更大的数据范围,甚至可以长达几年。
模拟器还可以用于自动回溯测试交易策略。你需要在自动化模块上完整设定你的交易规则,而交易结果将取决于历史数据以及你选择的时间段的参数,在测试期间你不会对结果有所干扰。如果你的交易方法适合被自动化,那么这将是获得准确评估的最快方式。
回溯测试与前向测试的优势
· 节约时间。好几年的数据只需要几天时间就可评估完毕,这让你可以随时修改任何参数然后重新进行测试。
· 统计更准确。在模拟账户中,你犯的任何错误都会被记录下来,并扰乱你的策略统计结果,而模拟器允许你回去纠正错误井重新开始。另外,假设你的方法要求你每天在市场收盘时建仓,而你在模拟账户中恰好错过了1 次或几次,那么你的统计结果就变样了。
· 没有时间限制。即使市场收盘或者在周末期间,你也可以进行测试,并且想暂停就暂停,暂停之后可以继续。选择外汇模拟器,你就可以自如控制时间。
避免回溯测试错误
回溯测试交易策略最常犯的一个错误,就是在做决策时用估计的信息来替代还没有获得的信息。例如,有些软件程序会给你预估的收盘数据。如果你的方法要用到收盘价,那么你就必须等到你使用的时间框架上的蜡烛线真正收盘,才能进场建仓。
要避免这种错误,你需要确保只使用在特定时点可获得的准确信息,尤其是当你使用自动交易系统时(避免未来参数干扰) 。为走势图价格演变选择自动更新功,能就可以做到这一点。在手动回溯测试中会更容易查看。
还有一个常犯的错误是在测试中使用太多变量,比如太多指标(过度优化) 。这在过去一段时间可能表现良好,但是当这个策略运用于未来时,可能就会成为一个问题。让你的策略简单点好。
最后,你的交易策略应该能够有力地对抗任何意外事件——当市场对特定基本面事件做出反应并且表现异常时。你应该如何保护自己并获得良好的回溯测试结果呢?可以通过预估这类事件发生的可能性以及随后激烈的市场反应:
· 提高回溯测试结果的亏损预期,并且查看这个交易策略在新的市场条件下是否仍能盈利。
· 在你允许的最大风险水平的基础上,提高每笔交易的预期风险水平。在某一时刻,你可能遭遇意外事件,亏损会扩大。
· 设定适当的你能接受的最大风险水平和最大单次亏损幅度。一定要根据你的方法在较长一段时间所经历的最大单次亏损幅度来计划你的最大单次亏损幅度。提高未来最大亏损幅度的预期比例。
越强大的交易策略,越能够面对各种各样的市场状况, 盈利性也越强。也有一些策略很难进行回溯测试,特别是那些依版趋势线和一些不能充分量化的技术形态的交易策略。最后,你必须接受在真实市场状况下,因为市场的非理性或者某些基本面事件的不可预见性,有时你的交易策略的表现会不如预期那样好。
MT 交易平台回溯测试
在前面章节讨论过,我曾用MT 交易平台来测试智能交易系统和自动交易策略。在这里,我想讨论一些我在用这个软件平台进行回溯测试时遭遇的主要情况。
我注意到如果你用MT 交易平台来进行大量的回溯测试,你的电脑最终会越来越慢。你要做的就是定期关闭MT 交易平台,然后再重新开启。我曾遇到采用相同的参数进行多次回溯测试,却得到不同的结果的情况。我一个IT 界的朋友告诉我MT 交易平台存在某种内存泄露( Memory Leak) (指由于错误或不完备的代码造成一些声明的对象实例长期占有内存空间,不能回收。Memory Leak 会造成系统性能下降,或造成系统错误。一一译者注) 。关闭和重启这个程序就可以解决这个问题,所以当你回溯测试很多策略时请记得这样做。
我在网上看过很多讨论这个MT 策略测试器的帖子和留言。它的工作方式有很多优点,也有很多缺点,并且就像我提过的,还有一些固有的问题。但是如果你想运行智能交易系统的一些不同的参数,分开进行测试是一个较好的办法。
有一个地方要注意,这个系统是有缺陷的,它有时候不会下单交易。这个策略测试器会测试你的智能交易系统,但是在实盘账户中,有些交易不会被采纳,因为经纪商向你发送了比如元效价格或者服务器忙的错误信息。所以这会在一定程度上扭曲测试结果。
MT 交易平台历史数据中心
· 当你使用MT 交易平台的策略测试器时,一定要尽可能采用最好的数据。要获得最佳的结果,你需要将效率最大化。如果你打算利用每一个成交价格,那么你需要按照如下方式操作,以确保你得到了最完整和准确的数据。当你进行测试时如果发现存在数据误差。那么你需要调整你的历史数据。
想要调整你的历史数据,可以进入工具菜单,打开历史中心然后双击,左栏中你想要回溯测试的货币对。接下来,你会看到一个不同时间框架的列表。你刚开始应该从1 分钟的时间框架开始。1分钟时间框架就是分笔成交数据,所以这会为你的回溯测试提供最完整的数据。如果你在首次打开电脑后下载最新的数据,你会获得更好的建模数据。
想要获得最准确和最完整的数据来进行回溯测试,最好的办法就是打开你的MT 交易软件,然后让它尽可能长时间地运行。这会带来真正的实时数据。如果哪个经纪商能给你开一个永不过期的模拟账户,那么你就赚大了。你可以让这个模拟账户一直运行。这样,你的模拟账户就可以收集数月的实时数据,让你的回溯测试结果更准确有效。
回溯测试记录
在我进行回溯测试时,我都会做一个记录。从另一方面来说,也不是保存记录,如果你使用MT 交易平台或其他一些软件平台,他们有一个优化器可以帮助你为你的策略找到最佳的设置。我个人是很喜欢做记录的。
无论我采用什么策略,我都要回溯测出每一个变量。在回溯测试过程中,一定要把所有结果记录下来。从货币对开始,然后依次测试所有的变量。可以尝试所有不同的时间框架,然后是所有不同的市场状况。
资金管理参数是你需要测试的重要参数。要分别对每一个参数进行测试,比如止损和盈利目标等。
回溯测试是交易的重要组成部分。适当花些时间在交易的这一阶段,将有助你将盈利潜力最大化。