按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
利用过去的资料进行测试,可以让使用者了解,交易系统在实际运用中可能遇到的状况以及大体的绩效。不要相信某套系统的性能绝对没问题,完全不需要测试。一套系统如果不适用于过去的市场状况,就没有理由相信它能够适用于未来。也就是说,在你拿自己的资金冒险之前,多少应该了解交易系统的各种可能的表现。测试过程中,如果发现系统只能勉强持平,甚至是亏损,应立刻放弃,以避免除了浪费时间外,又造成其他的损失。值得注意的是,历史测试是不能告诉你系统的未来绩效。一套系统在测试过程中,即使表现很完美,也不能保证在实际运用中不会发生严重亏损。
但只要经过适当的测试,你就可以了解,系统可能发生的最大连续亏损的程度。也许连续两个月发生10笔亏损交易,最大损失超过1 万美元。如果过去发生此种情况,就没有理由相信将来不会重演。了解一些系统的最糟的情况,可避免实际运用时才发现,自己的资本无法承受或交易风格不愿意承受这类损失,而导致被迫中途放弃一套原本可以成功的系统。交易系统确实可能发生连续损失,这属于正常现象。因此,一定要了解连续亏损的严重程度。
历史测试经常发生的错误
在进一步讨论历史测试方法前,我想先花点时间来说明在测试过程应避免的一些常见错误。有时,避免错误是学习正确方法的捷径。如果能够避免错误,所作所为自然就会正确。举例来说,我的苏非猫并不知道只能在特定的柱子上磨爪子,但经过学习后,明白了它不能在沙发、窗帘、地毯、家具或我的脚上磨爪子。于是,它能够选择的地方被局限到一个地方。现在,我只要能够想办法让它了解,早上5 时并不是舔我的脸、说早安的适当时间,那么一切就都没有问题了。稍后会阐述正确的做法,不过现在先来讲讲一些坏习惯。
不知道如何评估测试结果 历史测试完成后,最常见的错误就是不知该如何评估测试的结果。除非能够作出有效的评估,否则,你根本无法判断系统的功能。一些人特别重视测试记录中的最高净报酬或最高胜率,可一旦系统的最大连续亏损过高,上述数据就没什么意义了。评估过程必须综合考虑一些东西,如:交易笔数、每笔交易的平均获利、连续发生亏损的交易笔数、最大单笔亏损、最大单笔获利、平均交易笔数、报酬分配状况等等。只有综合考虑以上因素,才能判断出一套交易系统是否适用,或判断该系统相对于其他系统的操作绩效。
曲线套入与过度最佳化 测试结果是否经过曲线套入,是评估系统绩效所需要考虑的重要因素。什么是曲线套入呢?简单地说,就是根据资料状况来设定系统策略。这是交易系统建构与测试过程中都可能发生的问题。如果你发现价格资料呈现明显的趋势,然后才建构一套买进和持有的系统,这就是曲线套入。建构系统的过程中,交易者可能特别注意走势图上适用其预定策略的资料,但有意无意之间却忽略其他不适用的资料。这样建构的系统,很可能只适用于某类市场状况;如果没有采用其他历史资料进行测试,这套系统显然不该被采用。过度最佳化则是另一个因素。系统建构过程中,如果对于参数设定要求十全十美,就可能发生过度最佳化的问题。举例来说,一套由两条移动平均构成的穿越系统,建构者可能会测试所有可能的均线组合,然后挑选一组绩效最佳的。这类系统未必适用,就如同精心培育的温室中的花朵,往往都禁不起残酷环境的考验。所以,测试过程中,不要为了取得较好的测试绩效而不断调整系统参数,因为这类系统通常都不适用于未来。
不质疑系统 不怀疑系统的测试结果,也是一种错误心态。某些交易者看到不错的测试记录,就觉得很满意了。实际上,使用者应尝试寻找系统的毛病或不正常的地方,观察是否有曲线套入的倾向,因为在事前了解这方面的问题,总要比实际遇到的好。系统的测试绩效很好,可能只是由一两笔交易造成。如果遇到不同的市场状况,这套系统还能发挥测试过程的绩效吗?测试过程对于滑移价差的假设是否合理?测试过程的交易样本数量是否足够?如果你不尝试质疑系统的绩效与缺失,实际运用中就可能遇到不必要的麻烦。对于一套看起来似乎没用的系统,不妨也抱着这种心态,研究其问题所在,看看自己是否能够进行修改。检讨一些无效的策略,也可以提高交易知识。任何假设或理论,都需要进一步研究与质疑,才能知道它是否成立。
测试资料或市况不足 资料不足是测试的另一种常见错误。测试交易笔数至少是30 笔,只有这样,测试结果在统计上才可以被接受。如果资料太少,很难判断测试结果究竟是偶然因素造成,还是交易策略确实有效。如果某套系统在测试过程中只发出6 个信号,即使其中5 个信号都成功,还是不能归纳出任何统计结论。这很可能代表严重连续亏损之后的连续获利。如果样本数超过30个,就可以在交易系统上做出有效的统计结论,测试结果不能完全由“巧合”或“运气”解释。测试过程采用的历史资料,还应该要充分反映实际的情况,包括各种可能发生的情形,不能只挑该交易策略最适用的行情。你需要知道该系统在上升趋势、下降趋势、区间盘整、波动剧烈、牛市走势等各种市场状况的表现。交易系统也应该在不同市场进行测试。如果某套交易策略确实有效,那就应该普遍适用于整个金融市场。
采用盘中资料进行测试,不要只取几个月的资料,时间最好拉长到几年。开始可以采用一年的资料,但一年期间并不够长,还不能做真正结论。很多系统经常在一年内有卓越表现,但3 年的绩效就惨不忍睹了。取得盘中价格资料的成本不低,测试过程也很浪费时间,因为你必须个别测试每种期货合约,可是金融交易本就不是便宜、简单的;只有投入时间、精力与资金,才可能取得好结果。
缺少外部样本 测试的价格资料不足,也会造成没有外部样本可供运用的问题。交易系统的测试过程中,我们通常会把价格资料分为两部分,一部分用来调整交易策略或设定参数,另一部分则用来做真正的测试。一套完整的交易策略,最后测试应采用全新的资料。如果就这段特定资料的测试做最后测试,交易系统通常都会针对其进行套人与最佳化。请注意,如果价格资料曾经用来调整策略或参数,绩效往往都很好,但重点是该系统在完全“陌生”环境下的表现 这也是外部样本的功能。选一些最能代表交易实况的价格资料,作为外部样本,以测试交易系统的表现。
忽略佣金成本与滑移价差 在交易系统测试过程中,使用者普遍会忽略佣金与滑移价差。因此,测试结果可能很好,但在实际运用时却发生亏损。这是因为测试过程并没有考虑到佣金费用与滑移价差。关于这些费用,预估必须切合实际,否则到时会让你大吃一惊。每笔交易都要佣金,经常也会出现滑移价差,所以测试过程就应该考虑到此类成本。一些短线交易者经常对滑移价差的估计不足,他们认为交易会撮合在信号发生的价位。事实上,当我利用市价单买卖股票时,成交价格经常较预期水平差30 美元以上。就我个人的经验来说,当市场发生特殊情况(如联邦储备银行突然宣布调整利率),数只股票曾经同时出现每股5 美元或更多的滑移价差。所以,纸上模拟操作的表现可能很好,但实际交易却只是小输小赢。一些看起来不错的交易系统,考虑佣金与滑移价差之后,结果却亏钱。千万不要忘了这些必然发生的成本,否则任何测试结果都不会
历史测试程序
曲线套入 我准备先来讨论曲线套入的主题,然后再讨论最佳化程序。先前,我提到曲线套入就是利用资料匹配系统。经过曲线套入之后,系统对于特定时期的特定资料,绩效看起来很好。举例来说,在走势图上看到某段时期的价格在特定区间内来回游走,你可以针对这种行情,建立一套交易系统,使其操作绩效特别好。你也可以编写一个滤网,让你恰好在市场崩溃前进场放空。操作绩效显然很好,但不是真的。在市场下次大跌之前,该系统还会发出类似的放空信号吗?你可以不断调整,使得交易系统与资料之间完全吻合,但问题是这套系统是专为这些资料而设计的,恐怕不能适用于其他资料。无论是哪段时期的资料,只要你愿意,都可以设计报酬率高达2 000 %的交易系统,但该系统对于未来行情完全无用。就交易者的立场来说,你所担心的是系统未来运用的绩效,而不是历史测试结果。这也正是我前边所说的,一套看起来不错的系统,为什么必须采用崭新资料进行测试的理由。唯有采用不同于系统编写过程与最佳化过程的资料,才是真正的测试。如采用曲线套入过程的资料进行测试,系统绩效当然会很好,但却未必适用于未来。总体来说,系统结构越复杂、交易方法越烦琐、测试绩效越过于理想,曲线套入的程度就越严重。
最佳化程序 最佳化程序是针对特定时期的资料,通过不断修正参数与指标,来提升系统的绩效。如果采用移动平均,使用者将不断调整移动平均的长度,来促进操作绩效。决定移动平均长度后,可能继续进行最佳化,希望找到某种突破滤网,使得绩效能够更进一步提高。总而言之,系统使用者可以一直调整参数与指标,使系统绩效有所提升。如果采用Trade Station ,这套软件可以帮你进行最佳化。只要几秒,Trade station 就可以告诉你任何指标在某特定时期内的最佳参数值。表面上看起来,这似乎是很不错的功能,但却很容易让你误解系统的真正绩效。
最佳化的目的,在于提升交易系统的获利能力,但一定要注意,不要做得太过火了。系统概念只需大致正确,而参数值究竟如何设定,并不太重要。最佳化过程,是希望找到一段看起来最好的参数值。举例来说,对于一套穿越近期最高价的突破系统,你希望找到最适用的回顾期间。你发现回顾期间越长,信号的获利能力越强,但回顾期间超过20 期后,就没有明显改善了。你因此而知道系统的回顾期间应该设定为20 左右,至少不应该是5 期。想要找到某个单一的最佳数据,是毫无意义的。因为资料不同,最佳数据也就不同。
就我而言,在最佳化过程中,我希望找到绩效最佳而且普遍适用的一些参数值,然后取其中平均数作为实际运用的数据。举例来说,如果12 期、14 期与17 期移动平均的效果最好,我很可能采用14 期或15 期。如果12 期、14 期与17 期的效果很好,但15期或16 期的效果不好,则意味着系统显然有间题,否则不应该发生这种现象。对于一套真正好的移动平均系统,不论选择5 期、7 期、10 期或15期结果都不应该相差太多。对于某组资料,如果14 期的绩效最好,这并不会特别吸引我的注意,因为我要找的是大体上有效的操作概念或方法,而不是某个绩效最佳的参数值。如果某个交易系统只能采用1 … 2 个参数值,这套系统应该不可靠,很可能经过曲线套入。
使用者可以通过最佳化程序来判断,交易系统是否适用各种不同的参数值,或只适用于特定参数值。市场具有随机性质,某个适用于过去的参数值,是否也会适用于未来呢?如果突破系统的某个缓冲滤网,曾经有效避开随机走势引发的突破,这个案例是否反映该滤网的真实功能呢?看着某份走势图,一些人可能会挑选一个当时最适用的滤网。可是如果采用其他的参数值,这个滤网是否仍然继续有效?这个滤网是否也适用于其他资料?采用不同时期的资料进行测试,甚至采用其他时间结构的资料,来反映不同的观察角度。如果你对于整体结果很满意,就可以采用外部资料进行测试。对于一套有效的系统,外部资料的测试结果应该大致相同。
外部样本 历史测试程序最重要的部分便是采用外部样本测试系统的功能。实际采用某套交易系统之前,绝对需要运用崭新的资料测试该系统:所谓“崭新”,是指系统建立与最佳化过程所使用之外的资料。在系统建立、测试与最佳化过程中,初学者最常见的错误之一便是同样采用所有可供运用的资料。如果手上只有3 年的资料,就直接利用这3 年的资料设定参数值,不知道还要留一些外部样本。如果总共只有3 年的资料,那么就只采用两年的资料,保留最后一年的资料不动,甚至不要用到相关的走势图。要假设最后一年的资料还没有发生,因为你不希望系统建构或最佳化过程受到外部样本的影响。唯有当你对于交易系统已经觉得很满意了,才利用最后一年的资料进行测试。请注意,外部样本至少必须能够产生30 个或以上的信号,否则测试结果不具统计意义。如果系统确实有效,外部样本的测试表现应该差不多;如果测试结果不够理想,就应该改变系统的基本构想,绝不是只修改参数值而已。外部样本是供你判断交易系统的效力,不是用来进行最佳化的,否则根本不需保留外部样本。我喜欢观察外部样本的走势图,进一步确认交易系统确实具有应有的功能。但如果你仍想调整交易系统,绝对不要受到外部样本的影响。
外部样本可以模拟真实世界,崭新的资料可以避免系统过度最佳化。经过最佳化之后,由于系统参数还没有碰到新资料,通过外部样本的测试,我们希望知道系统之所以有效,不是因为经过曲线套入,而是因为系统本身的功能。
资料运用 首先必须确定资料够用。针对6 个月的资料进行测试,没有太大意义,因为6 个月内可能发生任何古怪的事情,足以扭曲整个测试结果。另外,交易笔数至少30 个,否则测试结果不具统计意义。交易笔数越多,测试结果越可靠。如果交易笔数不够,只要一两笔极端交易就可以影响测试结果,使得一套平庸的系统看起来非常突出。你也希望知道交易系统在不同市场状况下的表现,所以要准备充分的相关资料。
把相关资料分为三等份是最理想的。系统建立过程中,使用第一部分的资料。系统初步建立完成之后,利用第二部分资料进行最佳化与相关调整。只有当交易系统已经完成,才利用第三部分资料进行测试。另一种可能性,是采用中间2 / 3 的资料进行系统的建立与最佳化,然后把最初1 / 6 与最后1 / 6 资料视为外部资本,供最后测试之用。不论采用哪种方法,系统建立过程使用的资料期间,最好等于外部样本期间,才能确定系统绩效在期间具有稳定性。
请注意,不同资料不要来自相同类型的市场状况。外部样本最好包括不同市场状况、不同股票、不同时间结构的资料。如果IBM 资料建立交易系统,不妨利用思科、美林、英特尔、沃尔玛百货、道琼斯指数、SP500 指数进行测试。如果测试结果很好,该系统应该普遍适用每只股票,不仅只针对IBM 而已。总之,资料必须包含各种不同的市场与市场状况。如果利用某10 只股票的资料进行测试,它们就不应该呈现相同的价格形态:某些股票应该呈现涨势,某些呈现跌势,另一些则是横向走势。这样才能有效模拟该系统将来碰到的真实环境。
系统效力评估
现在,让我们考虑历史测试最严肃的课题: 如何评估测试结果?如何判断某个交易系统确实是一套好系统?交易系统的期望报酬率,显然必须是正数,否则就不具胜算。图13…l 与13…2 是Trade station 评估其内部系统的绩效报告,格式颇具参考价值。虽然这两套系统都获利,但第二套MACD 系统的表现较好,不只因为其获利能力较强,而且还因为它具有很多可取的条件(稍后详细解释)。此处故意忽略滑移价差与佣金成本,稍后将讨论这两个因素对操作绩效的影响程度。
获利能力(净获利总额)
净获利总额代表系统最重要的操作成绩:是否能够赚钱。这两个例子都赚钱,净获利分别为7 025 美元与3。275 万美元。如果测试结果为负数,系统就必须重新设计,因为你不能期待该系统在实际运用上能够赚钱。评估交易系统的测试绩效时,每个人几乎都会先注意净获利总额,但其本身未必能完全反映系统绩效。当然,每个人都希望系统能够获利,而不是发生亏损。此外,你还想知道系统总共出现多少交易笔数、盈亏波动程度多大、最大连续亏损有多少、每笔交易平均获利多少等问题。如果上述系统的测试结果分别为获利5 万美元与1 万美元,虽然多数人都会挑选获利高的第一套系统(5 万美元,但第