第5章 商品交易方法的测试
商品交易者有两种极端的类型。第一种人想尽快赚钱而迫不及待地开展交易,因此很少用最新历史数据来测试其新技巧以验证其有效'性。他们对于该交易技巧深信不疑,仅仅因为它的来源充满权威性,或因为他们看到该技巧在一些走势图中的绩效令人叹为观止。另一极端类型的交易者认为,过去有杰出业绩的技巧在未来也想必能够带来利润。依据他们的想法,某技巧的过去绩效越佳,则用之于实际交易时,它博取丰厚利润的机会也越大。上述两种想法对你的资金都同样危险。
根据联邦相关法律规定,凡是注册的商品交易顾问( Commodity Trading Advisor ,简称CTA) 必须向客户提出警告"过去绩效并不保证未来结果。"犹如其他重要的商品交易真理,这一事实人人皆知,但几乎没有人会真正地接纳它。假如我告诉你,我发现了大豆期货的某种特定价格形态,在过去5 年内出现这种价格形态后买入,则至少盈利5000 美元的概率高达80% ,你必然会对此感兴趣,是吗?假如我告诉你,相同的价格形态出现在棉花期货市场时,它有83% 的把握预测盈利35 00 美元以上的走势,你可能会更好奇,是吗?现在,你明白我的意思了吧?这种谬误如此普遍,在逻辑学中被归纳为"后此谬误",并有个奇妙的拉丁文名词" Post hoc ergo propter hoe" (后发者因之而发) 。这种谬误认为, B 发生在A 之后, 则A 就是B 的原因。
测试某商品交易系统历史数据如同试婚。它并不保证婚姻成功,但这是种绝佳方式,可以增进对双方关系的信心,并避免一些不愉快的意外。你可以通过测试历史数据,了解该系统的运作程序与局限性,使你受益良多。
在交易者拥有电脑前,有关历史数据的测试效果究竟如何,只能仰赖系统设计者的说法。在交易系统设计者拥有电脑之前,根本没有严格的测试,交易者只凭粗略的测试或信心去做交易。就目前而言,除了资金极少的交易者,大多数人在财务上均能够承担得起电脑与测试软件的花费,人们再也没有借口使用未经测试的想法来进行交易。然而。决定测试某系统仅是问题的开端。如果你想获得真实的结果,就必须了解如何测试。
K 数据的时间周期
测试者必须回答的第1 个重要问题是"使用何种数据" 。当然,你用来测试某系统的数据,必须符合将来使用该系统进行交易的时间周期。
多数系统使用日线数据。也就是说,这类系统会分析每天的4 个价格,以提供进、离场的指令:开盘价,亦即当天的第1 个交易价格;最高价,亦即当天的最高交易价格;最低价,亦即当天的最低交易价格;收盘价,亦即当天的收盘或结算价格。
在每天开盘时及收盘时经常有一段价格区间。那些指定以"开盘价"或"收盘价"进行交易的委托单, 其成交价格未必相同。以标准普尔500 指数期货为例来看,市场的收盘区间为250.00 ~ 250.30 。指定以收盘价买进的委托单,其成交价可能会在该区间的高档,在250.25 ~ 250.30 ;指定以收盘价卖出的委托单,其成交价则可能会在该区间下档,在250.00 ~ 250.05 。交易所会在收盘区间的中间价位附近决定一个结算价格。就本例而言,可能就是250.15 。交易所会在收盘之后的几分钟之内公布结算价格,即为收盘价。指定以收盘价进行交易的委托单,其实际成交价与收盘价之间的差值,便是第1章所提及交易成本中的"滑点"之一种。
开盘也有一段价格区间,其形成的原因是为了撮合交易厅内开盘买进与卖出的委托单。买方的成交价会位于此区间的高档,卖方则会成交在低档。一般所谓的开盘价,并不是取自此区间的中间价位,而是交易所当天报出来的第1 笔交易之成交价。
如果你的系统用于日内交易,则它或许会使用小时价格图,甚至5分钟图来拟订决策。你不能以日线价格数据测试该系统。因为这毫无意义。你必须得到"分笔成交价格明细",亦即以成交的先后顺序所列出的每一笔交易价格。然后,你可以根据所需的周期来区隔这些交易,从而使得每一小时或其他单位时间均有其开盘价、最高价、最低价与成交价。电脑测试软件中均提供这类的分笔成交价格明细,并可依据所需的周期来区隔这些数据。
某些较长期的系统则使用周线级别数据。就周线的数据而言,开盘价即是星期一(或该周第1 个交易日)的开盘价,最高价即是该周的最高价,最低价即是该周的最低价,收盘价即是星期五(或该周最后一个交易日)的结算价。虽然较难直接得到周线级别数据,但通常都是由日线级别数据来换算为每周的开盘价、最高价、最低价与收盘价。这也都是由电脑软件来处理的。
在交易所公布的数据中,另有两项数据可以在系统中使用:成交量与未平仓合约数。成交量是指每天交易的合约数量。未平仓合约数是指尚未平仓的合约数量。每当一位买家与一位卖家进场成交一手合约时(两者未必撮合于同一笔交易),则未平仓合约数增加一手。每当一位买家与一位卖家了结一手合约(两者未必撮合于同一笔交易),则未平仓合约数减少一手。
在同一时间内,每种商品均有数种不同交割月份的合约在市场中交易。交易所虽然公布每一种合约的成交量与未平仓合约数,但数据大多使用某种商品当天的总数量。价格方面的数据在当天即可取得, 但成交量与未平仓合约数的数据则在次日才会公布,而且通常是在隔日市场开盘之后。因此,成交量与未平仓合约数的数据总是落后一天。
这对交易系统需要利用当天的数据来提供隔日的交易信号而言,相对地降低了它们的重要性。在本书中,系统的交易信号不会考虑成交量与未平仓合约数。
数据类型
决定了使用日线级别数据来测试某系统后,测试者有关数据的决策问题仍未完全解决。历史模拟测试通常使用的日线数据有3 种: 实际合约数据、永续合约( perpetual contract) 。数据和连续合约数据。数据的选择会影响测试的程序与结果。
每项商品在任何一个交易日内都可能有2 ~ 12 个交易活跃的不同交割月份合约。举例来说,在1 月份的第1个星期内,你可以交易当年1 月、3 月、5 月、7 月、8 月、9 月或11 月交割的大豆合约,或隔年1月交割的大豆合约。利率与贵金属合约则涵盖未来两年之内的交割月。你选择哪些日线价格来进行测试呢?在回答这个问题之前,必须进一步解释投机者实际上如何选择不同交割月的合约以及这些合约在到期时的情况。
虽然市场中同时交易许多不同交割月份的合约,但技机交易主要集中于近月份合约。在合约到期月份的最后交易日之前,大多数市场均设有第一通知日(First Notice Day) 。在第一通知日的当天或其后,持有空头头寸的人可以(通过交易所)通知持有多头头寸的人,有意履行相关商品合约的交割(例如, 5000 蒲式耳的大豆) 。如果多头头寸的持有者确实希望接受交割,则他元须担忧。然而,多数参与期货交易的人都不希望履行交割或接受交割。他们会在第一通知日之前平仓,以避免交割。他们可以在下一个月份的合约上建立类似的头寸。交易者可以同时进行这两笔交易。结清最近月份的头寸,并于下一个月份重新建立相同的头寸,称为换月移仓(rolling over) 。
合约月份最接近当前时间但第一通知日尚未来临的合约,称为近月合约。许多金融期货并不进行交割,这些期货合约到期时以现金来结算。但是,为了避免结算流程困扰,这类期货投机者通常会在合约到期之前的几个星期出清头寸。如果他们希望继续持有该商品的头寸,则会通过换月的方式在下一个交易月份重新建立类似的头寸。合约逐渐接近到期时,上述的换月交易开始发生,近月合约的成交量与未平仓合约数将会下降,而下一交易月份的成交量与未平仓合约数则会上升。
某月份合约成交量与未平仓合约数代表该合约的流动性。市场流动性越高,则越容易找到买家与卖家,交易之间的价格变化也越小。投机者通常偏爱流动性最高的市场,在这样的市场交易时,从决定行动到实际开仓或平仓这段时间内价格滑移最小。最近月份通常都最具流动性,直至到期前几个星期。然后,下一个交易月份便会成为流动性最好的月份。在金融期货方面,例如美国短期国债、欧洲美元、美国长期国债,每年均有4 个合约月份, 3 月份、6 月份、9 月份与12 月份。在到期前一个月的最后一个星期前,那些最近的月份是最具流动性的。因此,在12 月的最后一星期至2 月份的最后一星期之间, 3 月合约是投机者所偏爱的市场。在2 月份的最后一星期至5 月份的最后一星期之间, 6 月合约交易最为活跃。其他月份依此类推。
因此,有关于先前所提及的问题一一应该选择哪个合约之数据,答案是未平仓合约数最高的月份。这是流动性最强的月份,也是投机者最偏爱的合约月份。
现在假定你要用1987 年的数据测试一套国债交易系统。如果你决定使用实际合约数据,那么会用到1987 年3 月份、6 月份、9 月份与12 月份交割合约的日线数据。在l 月1 日至2 月28 日之间,使用3 月份合约的数据; 在3 月1 日至5 月30 日之间,使用6 月份合约的数据,依此类推。每个月份的合约均需要一台电脑来测试。这意味着每年的测试均需要4 台电脑来进行。电脑的运行速度虽然极快,但每跑一次都甚为耗时,因为程序在某个时间都只能处理一个数据文件。然后,你必须将4 套结果合并起来,以观察全年的绩效。在某合约月份的末期,如何处理未平仓合约数也是一个问题。你可以了结即将到期的合约,并在下一个月份重新建立该头寸。但是在考虑下一个月份的数据情况下, 若该系统持有相反的头寸,这又将如何处理呢?你可以了结即将到期的合约,并等待下一个月份的新信号。但是,若该系统持有相同的头寸,则又将如何呢?在此空当期间,你可能因此而失去了绝佳的长期交易机会。在实际交易中,你可能会将该头寸换月, 并继续持有它。
在如何处理合约到期的问题上并无简单的解决之道,但仍有数种方法可供运用。有两种人工合成的合约不会到期。你可以使用其中一种,以其历史数据来测试系统,并产生交易信号。
罗伯特· 培累提厄( Robert Pelletier) 是商品系统公司( Commodity Systems Inc. ) 的老板,该公司拥有最受欢迎的商品数据库。他发明了一个永远不会到期的期货合约,被称为永续( perpetual )合约。对于每个市场,永续合约会锁定一个未来的固定日数,通常是91 天,然后再根据两种较远期的期货合约来计算该天的价格。它选择该天之前与之后的两个紧邻合约,并利用两种价格做某种数学平均值的计算。这项未来的平均价格便成为今天的永续合约价格。这种程序的优点是其价格行为相当平滑,并且可以消除合约转换之间的任何价格间隙。其缺点是永续合约价格与实际的可交易合约价格并无关联。它可以利用永续价格来测试其系统,再用实际合约价格来产生交易信号,或利用永续价格来产生交易信号,而用实际价格来下单。另一项缺点是商品系统公司是永续价格的唯一提供者。如果你希望将它们运用于交易中,就必须通过电脑数据机每天传输数据,而这必须付费。
另一种人为合约,它并不像永续合约那般人工化,被称为连续( continuous) 合约。连续合约使用最近月份在为期3 个月内的实际交易价格。需要转换合约时,则开始添加下一个合约的实际交易价格。为了消除两种合约在价格上的差距,你必须将其收盘价与原合约收盘价之间的差值予以调整,调整的时间在使用新合约价格的前一天。举例而言, 假定你在1987 年12 月1 日至1988 年2 月29 日之间交易欧洲美元,连续合约价格则是这段时间的3 月合约的实际交易价格,因为这正是投机者当时偏爱的合约月份。到3 月1 日,连续合约则转换为6月份合约,并开始在数据文件中纳入其价格。在转换日的前一天,两种合约的收盘价通常会出现差距。在1988 年2 月29 日,假定3 月份合约的收盘价为93.13 ,而6 月份的收盘价为93.00。为了在数据文件中保持2 月29 日与3 月1 日收盘价的正确关系,则先前的所有价格均需要扣减0.13 。经过如此调整,所有先前之开盘价、最高价、最低价与收盘价在该合约的实际交易期间内的相互关系仍可以保留。实际的换月发生于何处并不重要。最佳的理论日期则是下一个月份之未平仓合约超越最近月份的当天。
使用连续数据文件,将允许你每天都只输入并使用当天的近月合约数据。你的数据文件将始终反映近月合约的当前价格,而该合约是你最可能交易的月份合约。交易系统所产生的信号与止损,都会以你实际交易的近月合约来表示。在数据文件中,所有先前价格每天的关系会完全等于你当时在交易近月合约时的关系。经过多年的交易,连续数据与实际交易数据之间的唯一差异是价格水平,它们可能较高或较低。然而,在连续数据中,每天的开盘价、最高价、最低价与收盘价之间的差价(不论是当天或每天之间的差值)均会与其对应的近月合约相同。价格水平的差异不会影响交易信号,除非该系统是根据实际价格的百分比来计算交易信号,但以此方式来运作的系统不多。相对于实际的近月合约而言,使用连续数据计算出来的其他种类交易信号(例如,移动平均、价格形态以及其他类似指标)大致上均完全相同。
因为每当合约到期而向远期移仓时,连续化处理会消除合约之间的价格差异, 一定程度上使人们认为这会扭曲历史数据测试的结果。事实上,除了换月移仓时所发生的额外佣金费用,不论向远期移仓的次数有多少,使用连续合约所产生的历史测试结果大致上应该与使用实际合约的结果相同。以过去的结果来预测未来的绩效,其本身便不是一项十分精确的程序,在此情况之下,额外的佣金费用所造成的影响也就无关紧要。所以,使用连续数据文件来测试和交易,你并不会遗漏任何重要的事项。你可以因此而避免合约到期时的数据处理问题。如果你希望以人工方式来保存你的数据文件,你可以利用经纪商、报价机或报纸所提供的数据,而且无须付费。在本书中,所有测试的系统均使用连续合约。
测试的时间段
测试交易系统时需要考虑的另一个重要因素,便是选择测试历史价格的时间段。乍看之下,似乎是测试的时间段越长越好,但市场性质若随着时间而改变,则长期的测试可能导致负面的效果。记住,你仅能通过未来的交易来赚钱。因此你必须设计一套历史测试法,能够预测未来的交易。某套系统在1980 ~ 1983 年行情中曾经展现杰出的绩效,但在1988~1989 年的行情中,如果价格走势的性质已经发生了重大变化,则该系统在此期间的表现可能极差。
虽然你不断听到交易者评论说,近来在市场上做交易已经变得比过去更难,但这种态度与其说反映了市场真实情况的改变,毋宁说反映了评论者交易的成败。如果只观察市场的长期图形,你很难洞悉特定市场的价格行为发生了根本的变化,而这项变化足以影响交易系统的成败。当然,市场化性质肯定在变化。市场常常出现极长期的牛市与熊市。市场的价格波动会发生周期性的变化。最大的问题是,你不知道在未来究竟是要面对哪一类型的市场。所以,你的系统必须能够处理所有这些变化形态。
最好是选择足够长的时间段,使它同时涵盖牛市和熊市,而且要包含价格波动性高及低的情况。另一方面,你也要考虑测试上的方便。人们所拥有的时间十分有限。选择相对短的时间段,而花费较多的时间致力于测试,这或许会胜过选择20 年或30 年的数据时间段。
比测试时间段的长短更重要的是系统所产生的交易笔数。就统计上而言,所产生的交易笔数越少, 则测试越不足以信赖。统计学家在决定数据取样规模时所做的各种考虑,同样适用于商品交易者对系统的测试。如果你的测试时间段太短而无法产生至少30 笔的交易,则测试结果的可信度将会受到影响。有人认为,如果测试时间段相当长,则必然是值得信赖的测试。事实上,如果系统无法在测试时间段内产生足够的交易笔数,则测试时间段的长短并无意义。不论时间长短,测试所产生的交易笔数越多,则测试结果在统计上越可靠。统计上的可信度十分重要,因为这关系着你的历史测试结果在未来重复出现的概率。这也正是测试的全部目的所在。
相信5 年是相当不错的测试时间段。这应该可以提供完整的样本,涵盖完整的上升与下降趋势以及各种价格波动程度。最近5 年与未来的交易应该仍然有相当的关联。这个时间段可以提供足够的时间来产生充分的交易笔数,而且相对地说也不是很长的时间,测试可以快速完成。如果你使用很长期的交易系统,它每年仅能产生几笔交易,那你就得延长测试时间段,才能使测试的交易笔数接近30 笔。如果你使用相同的参数,就可以在几个不同的市场中累积交易笔数。本书所讨论的每一套系统,均是以5 年的时间段来进行测试。
为了避免测试发生扭曲的结果,你也必须注意数据在特殊时间段内所出现的不正常现象。如果这种价格行为因此而造成特别有利或特别不利的结果,而它们在未来重复发生的概率甚微,则此测试结果便没有多大用处。举例而言, 如1979 ~ 1980 年的白银暴涨行情,以及1987 年10 月19 日的股市崩盘。为了在本书中统一使用5 年测试时间段,并删除1987 年10 月份的数据,于是我选择的测试时间段为1982年7 月1 日至1987 年6 月3 0 日。
分段优化及测试
下一章将讨论优化问题,即通过测试可变参数的不同赋值来改进交易系统的过程。系统内的可变参数越多,进行越多的测试来搜寻最佳参数值, 则该系统在历史测试中的绩效越好。遗憾的是,当你用优化的方式得出极棒的历史测试成果时,你也将因此而减少该系统在未来重复其历史绩效的可能性。
防止过度优化的一个好方法是将历史数据做不同区隔,分别供优化与最终测试之用。举例而言,如果你拥有一组5 年的数据,你可以在前3 年使用优化,然后用最后2 年来测试该系统。
然而,这并不是完善的解决之法。首先,你如何决定优化与最后测试应该分别使用哪段时间呢? 如果你将最近期的数据留作最后测试之用,则在优化中可能使用过于陈旧的数据;反之亦然。其次,如果你就某组数据进行优化,并就另一组数据进行测试,这种过程重复的次数越多,那么你实际上是在对整组数据进行优化。最理想的情况是使用较陈旧的数据建立一套良好的系统,然后用最近的数据进行测试后证明该系统有效。如果你的系统能够产生统计上值得信赖的交易笔数,则该系统的测试绩效在未来便有相当的概率会重复出现。
在不同市场测试
商品交易系统的专业化成为时下的流行趋势。原因在于设计一套适用于不同市场的系统十分困难,而针对某单一市场设计一套拥有绝佳历史绩效的系统则相对简单。系统的设计者辩称,每个市场均有其特有的交易特性,因此都需要一套适用于自身的交易规则。然而,这是值得信服的理由吗?我将于第12 章详细讨论此问题。
交易成本
我曾在第1 章里经讨论交易的固有成本,这是交易者在通向盈利之路上难以克服的重大障碍。这些成本是佣金费用与滑点,后者包括买卖价差。在评估历史交易绩效时,这些成本经常容易被忽略。虽然交易成本相对于一笔成功的交易微不足道,但时间一长必然会积少成多。当你交易得越多,而平均盈利水平下降时,交易成本就显得非常重要。它们可能成为关乎整体盈亏的关键,具体则因交易系统与交易市场而有差别。因此,为了历史测试更为有效,你必须从实际出发,扣减佣金费用与滑点。
每位市场人士都必须考虑其本身的佣金费用,以得出合理的测试结果。如果你是通过折扣经纪商进行交易,则每笔交易的佣金费用少于25 美元。滑点则随着当时市场流动性的变化而有所不同。我以每笔交易100 美元来体现这些成本。某些交易者认为这个金额太高,而有些人认为又太低。在评估任何系统的绩效时,你必须知道要扣减掉多少佣金费用与滑点。你可以根据自己的经验调整上述金额。总之,为了模拟实际的交易状况,每笔交易都必须扣减某种合理的成本,否则测试便毫无意义。
测试日线数据时的特殊问题
以日线数据来进行测试时,有两项重要因素会干扰测试的精确度。为了评估历史测试的可信度,你必须了解这些问题,并知道如何用特殊的测试来处理。
我先前曾经讨论过设定止损单的概念,即在价格走势不利时止损出局以减少损失。因此,如果你在每蒲式耳2.00 美元的价位上建立玉米的多头头寸,决定将止损设于1.90 美元,如果止损单能够确切执行于1.90 美元,则每手合约的亏损将限于500 美元加佣金。有几种方法可以用来限制亏损。你可以开口委托单的方式递人止损单。这意味着当价格触及1.90 美元之后,你立即以市价卖出。如果你递入开口委托单,一旦价格跌至1.90 美元,交易厅的交易员会立即执行该委托。某些交易者偏爱使用心理止损,这意味着他们或其经纪人并未实际将委托单递入交易厅。他们会观察价格的变化,发现价格触及止损点时, 立即拨电话下达市价卖出的指令。
使用心理止损通常是因为以前使用开口止损单时造成不愉快的经验。行情经常在触发止损单之后,又恢复先前的走势,导致行情虽然最终朝向你所希望的方向运行,你却已经认赔离场了。有些时候你恰好在当天最极端的价位上被止损出局,而行情随即恢复其原有走势。这真是令人怒火中烧。在这种情况下很容易产生偏执的想法,认为其中必有阴谋,场内交易员故意将价格推至你的止损点,让你离场后再恢复原来的走势。你可能这样推想:如果你没递止损单,场内交易者便不知道你的止损价位,因此也不能对你施展阴谋。请相信我,市场不会出现针对你的阴谋。多数市场的规模都极为庞大,场内交易者并没有能力随意操纵它们。不论你是设定心理止损,或是将止损单递给场内经纪人,行情都一样可能触及你的止损点。
我并不赞成使用心理止损,有太多事情可能发生,从而破坏你的止损计划。你或你的经纪人可能未能及时发现价格已经触及离场点。当你发现了错误, 并试图更正时,亏损可能已经加大了。更可能发生的情况是, 止损价位出现时,你会找理由推翻你原来的计划。你可能会告诉自己:"如果2.00 美元是买进玉米的好价位,则1.90 美元当然更好。我应该再买进,而不应该认赔离场。我再稍微观望一会儿,价格说不定会回升。"它并未回升,结果你在1.70 美元离场,而亏损为之前预计的3 倍。
如果你使用机械式交易系统,就更没有理由使用心理止损。系统会在特定时点告诉你离场,或反转你的头寸。你必须遵从系统的指示。然而,即使你昕从我的建议下达了止损单,也不保证可以在你指定的价位或附近成交。如果价格在交易时段内触及你的止损点,那么在价格触及止损点与经纪人执行止损单之间可能会出现时间误差。除去不寻常的情况,在流动性好的市场该误差的金额都很小。
然而,从市场收盘到下一交易日开盘之间可能会发生一些事件,此时问题也就产生。假定在你持有玉米头寸时,价格跌至1.92 收盘。价格虽然接近你的1.90 止损点,但尚未到达。收盘之后市场传闻苏联今年将不再从美国进口玉米,改从其他国家进口。市场第2 天开盘时,价位可能降为1.82一一因为交易所对玉米每天的走势规定了10 美分的涨跌停板限额,当天的交易价格不能低于1.82 。由于这条令人震惊的消息使得该价位可能并无买盘,你的经纪人无法执行你的止损单,因为没有人愿意接手。最后,价格会进一步走低以吸引买盘,然后你离场了。你的亏损将会高于原先所计划的500 美元。这种所谓的"停板走势" (limit moves) 是交易的风险,虽然并不经常发生,然而在某收盘与隔日开盘问出现跳空缺口的现象则甚为普遍。这类跳空缺口会使你蒙受预期以外的亏损。
在测试交易系统的过程中,如果委托价位于开、收盘价的跳空缺口内,则测试者或电脑程序不得假定止损单能够以指定价位成交。以先前的例子说明,在消息传出之后,隔天早晨的开盘价若为1.86 ,则你设定于1.90 的止损单将成交于1.86 附近,而非1.90 。如果电脑程序设计者了解这种情况,则测试程序中很容易纳入正确的逻辑。为了尽可能确保精准的结果,你应该确定电脑程序已经考虑开盘跳空的现象。本书中的所有测试,对止损单的执行已经考虑了这类的开盘跳空缺口。
处理日线价格数据的另一项潜在困难则更不好处理。它来自价格数据的局限性。你虽然知道开盘价、最高价、最低价与收盘价,却不知道它们之间发生的先后顺序。
假定你以某套系统来交易标准普尔500 股指期货,使用300 点的止损转向,这意味着当你建立多头头寸,但行情出现300 点或者11500 美元的不利走势时,该系统即会要求你反手做空。你得在该价位上做空两手合约一一一手轧平原多头头寸,另一手建立新的空头头寸。如果行情振荡之后又回升,你还要采取相同的方式而建立多头头寸。假定你的多头头寸最初建立于250,你的止损转向则位于247 。如果在你进场的当天市场以250.50 收盘,隔天价格振荡走低,其开盘为248.50 ,最高为249, 最低为246 ,而收盘为246.25 。根据系统的规定,你的多头头寸在247 平仓, 并在该价位做空。另外,你会在250 设定止损转向。由于当天的最高价为249,因此你于247 做空之后,止损转向不可能被触及。
如果最高价是250.25,而非249,则问题便出现了。因为当天的低价低于247 的止损转向,所以247 的止损必然遭到触发。但是,在247做空之后,我们无法确定价格不会回升至250 而改持多头头寸,因为市场是246.25 收盘。如果我们在250 建立多头头寸,则价格必然又回挫而再度触及300 点的止损转向, 于是造成两笔额外的损失。图5-1 说明了这种不确定性。

在历史价格测试中, 有两种方法解决此问题。第一种方法,你可以规定该系统一天仅能进场一次,止损单则至隔天才有效,这也确保历史测试的明确性。而当系统在一天之内出现数笔交易信号时亦不至于产生困扰,因为系统根据规定仅准许在一天之内进行一笔交易。这种方法有所缺陷,在价格波动剧烈的行情中,在你进场的同一天之内,你可能希望离场或建立反向的头寸。如果必须等到隔日,你可能无谓地增加亏损或减少盈利。
另一种可能的方法是根据高、低价与开、收盘的关系,来推测高、低价发生的先后顺序。如果开盘价较接近最高价,则假定高价先于低价,而在低价出现之后,价格便未再回升至收盘价之上。如果开盘价比较接近低价,则假定低价先于高价,而在高价发生之后,价格便未再回挫至收盘价之下。图5-2 说明了这些假定的情况。这通常是行情发展的方式,这些假定将使测试的结果近乎精确,只要你不是用非常近的止损。相对于每天的平均价格幅度而言,你的止损设得越低,则你的系统在一天之内遭触发的价格笔数越多。如果仅使用日线的价格数据,则任何历史测试也元法精确地反映这类系统的实际绩效。

评估测试结果
人们对漂亮的定义以主观成分居多,与此类似的是,交易系统的绩效成功与否取决于观察者的观点。交易者甲可能偏爱总盈利额最高的系统,乙可能偏爱每笔交易平均盈利最高的系统,丙可能偏爱盈利交易百分比最高的系统,丁可能偏爱单笔最大亏损最低的系统,戊可能偏爱本金损失最小的系统。这些偏好都有合理的根据,因此电脑程序应将历史测试结果分门别类。表5-1 与表5-2 是不同电脑程序的评估报告实例,描述了最广为人们使用的绩效类别。



己平仓交易总笔数
测试期结束时,若有某些头寸尚未平仓,则需要另行处理。系统并未了结该笔交易,因此你不知道它最后的盈亏结果。如果未平仓头寸的净值相当大,将其完全忽略会扭曲系统的绩效。长线交易系统尤其会出现账面浮盈巨大的未平仓头寸,这也应该视为该系统的绩效。某些电脑程序会将测试结束后的未平仓净值分别列出。某些程序则会在测试的最后一天,将该头寸虚拟了结,并视之为另一笔己平仓交易。两种方法均可接受。
盈利(或亏损)交易总笔数
大多数电脑程序都允许你设定滑点与佣金费用,然后从所有交易中扣减。交易必须在扣除这些固有成本之后才可以界定其盈利。某些交易可能不赚不赔,但将它们单列出来会造成混淆。持平的交易应该视为亏损,必须创造某些利润的才能够视为盈利的交易。
盈利交易占总交易比例
盈利交易百分比是以盈利交易笔数除以已平仓交易笔数,再乘以100 。交易者通常都偏爱较高的盈利交易百分比。拥有相对较少的亏损交易有助于满足人们的自尊与虚荣。然而,就专业交易者而言,其盈利交易百分比经常低于40% 。他们的自尊心准许其接受较多的亏损交易笔数。较重要的考虑是单笔平均盈利同平均亏损金额之比。专业交易者的平均盈利总是远大于其平均亏损。如果你坚持较高的盈利交易百分比,就必须接受较大的亏损与较小的盈利。这已经违背了期货交易的基本原则: 尽早认赔,做足盈利。
已平仓交易累计盈亏额
全部已平仓盈利交易与全部已平仓亏损交易的总和。从总盈利中扣除总亏损,即是已平仓交易的累计盈亏。滑点与佣金费用必须考虑在内。这或许是比较交易系统效率的最普遍指标,但它可能造成误导。某个系统产生了大量的测试笔数,它虽然可以呈现巨额的总盈利,但它仍可能不是一套很有效率的系统。如果已平仓交易的平均盈利很小,则其承担错误的空间便十分有限。
未平仓头寸净值
测试结束时,交易系统可能仍持有未平仓头寸。若是如此,则电脑程序必须比较其进场价格与测试最后一天的收盘价格,以计算未平仓头寸净值。某些程序会将此金额视为另一笔已平仓交易,而不另外列入报告。如同我们先前所提及的,不可将其完全忽略。
己平仓交易平均盈利额
已平仓交易平均盈利是已平仓交易累计盈亏除以已平仓交易总笔数。这是我评估交易系统的效率时首先观察的数据。如果某系统在扣除100 美元的滑点与佣金费用之后,其巳平仓交易平均盈利低于200美元,则这套系统不会吸引我的注意。除非这是一套当日平仓的系统,即总是在开仓的当天平仓。一套当日平仓的系统若经过至少200 笔交易的测试,并在扣除100 美元的滑点与佣金费用之后,每笔交易若能够有100 美元以上的盈利,则该系统便十分诱人。
最大连续亏损交易笔数
一套良好的电脑程序会列出最长的连续亏损。这与资金最大回撤或许同时发生,或许不是。这仅考虑已平仓交易。任何系统与方法均有表现欠佳的时间段一一为了使用该系统,你必须能挺过这些困难时期。此数据以及资金最大回撤可以让交易者了解必须准备承受的痛苦程度。
资金最大回撤
资金最大回撤是指在整个测试时间段内,利用该系统进行交易可能发生的最严重的资金损失。电脑程序假定你将在情况最糟的时点开始交易,稍后又在最糟的情况下停止交易。它计算你将亏损多少金额。此项金额与最大连续亏损交易之金额可能相同,也可能不同, 因为在发生最大亏损的时间段内可以出现盈利的交易。滑点与佣金费用必须考虑在内,而且只计算己平仓交易。资金最大回撤可以根据盘中头寸净值或平仓后结果来计算,后者代表已平仓交易的可能最糟绩效,前者则包括未平仓头寸在内, 代表交易账户的可能最糟情况。
盈利交易平均盈利额
电脑程序计算盈利交易平均盈利时,只将盈利的交易加总,然后除以盈利的总笔数。滑点与佣金费用必须考虑在内。此项结果可以显示该系统让盈利交易继续成长的能力。你必须将它与下一项数值,即亏损交易平均损失做比较。
亏损交易平均亏损额
电脑程序计算亏损交易平均损失时只将亏损的交易加总,再除以亏损交易的总笔数。记住,持平的交易通常被视为亏损。滑点与佣金费用必须考虑在内。此项结果会显示该系统的认赔能力。
平均盈利/平均亏损之比
电脑程序将盈利交易平均盈利除以亏损交易平均损失。该比率若高于2 : 1 ,便称得上是不错的系统,但仍须考虑盈利交易百分比。
盈利系数
盈利系数是将盈利交易的净利润总额除以亏损交易的净损失总额。对有一套持平的系统而言,盈利系数为1 。假定其他所有条件不变, 我偏爱盈利系数较高的系统。另一种比较不普遍的计算方法是:将整体净利润除以亏损交易的净损失总额。该数据表示每亏损1 美元所能够赚进的金额。因为亏损可以衡量风险,所以此数据是以风险来表达盈利的另一种方式。
最大单笔盈利
已平仓交易中的最大单笔盈利(滑点与佣金费用必须考虑在内)亦可表示该系统让盈利交易持续成长的能力。长线交易系统的总盈利通常主要来自少数几笔盈利交易,所以有必要掌握总盈利中有多大的百分比是来自于最大的一笔盈利交易。这项百分比越高,则该系统容许出错的余地越小, 因为其绩效倚重于单笔交易,而这笔交易未来可能不会得到重现。
最大单笔亏损
改善系统绩效的最佳之处便是从最大亏损交易着手,滑点与佣金费用必须考虑在内。如果你能够消除或降低这些交易的亏损,则系统的绩效将可明显改善。
己平仓多头(空头)交易
某些电脑程序会显示做多与做空交易占总交易的百分比。此数值可以用来评估该系统利用市场上升趋势或下降趋势的效率。
多头(空头)交易盈利比例
电脑程序会将多头与空头交易加以区分,并决定两者各自的盈利百分比。这些数值通常反映市场的整体趋势,远胜于反映该系统的效率。一般而言,多头交易在多头市场较易成功,空头交易则在空头市场较易成功。
盈利(亏损)交易平均持仓时间
电脑程序会将盈利与亏损交易加以区分,并计算这两类交易的平均持仓达多少个交易日。一笔交易若在开仓当天便平仓,则计为l 天。这些数据可以衡量该系统属于长线还是短线。它们也能反映该系统做足盈利交易与控制亏损交易的能力。
滑点及佣金总计
电脑程序会将每笔交易所设定的滑点与佣金费用乘以已平仓交易总笔数。为了反映实际的交易状况,全部的交易均需扣除合理的成本。在本书中,每笔交易扣除100 美元的滑点与佣金费用。
保证金资金回报率
某些电脑程序会计算保证金的资金回报率。它们会计算进行交易的天数、所需的保证金额度,列出累积净盈亏,再计算实际保证金的资金回报率。就我个人的观点,这项数据并无太大的意义,因为保证金额时有变动,而且交易者在账户内的资金通常都会高于最低保证金的额度。如果在同一市场中比较类似交易系统,这项数据能够帮助辨识最有效率的系统。能以最少交易天数获取同样回报率的系统是最有效率的,因为交易天数越少,风险暴露程度就越低。
已平仓交易绩效比率
我的全部电脑软件都会在历史交易报告中列出绩效比率,这是整体交易表现的专门衡量指标。电脑程序计算该比率时,并未考虑测试结束时的未平仓净值。在系统绩效方面,虽然每个人都有其自身的标准,但绩效比率是一项有效的工具,如果你使用电脑进行优化,可以通过这项比率,迅速锁定一组表现最佳的参数值。一般而言,系统的绩效比率若超过100 便相当不错了,绩效比率若超过150 则相当杰出,极佳的表现则可以产生200 以上的绩效比率。
涵盖未平仓净值的绩效比率
测试结束时,如果存在大额的未平仓净值(无论是盈还是亏),则已平仓交易之绩效比率对系统的表现会有低估或高估的现象。在这种情况下,我在绩效比率的计算中会纳入未平仓净值。我的电脑软件所列出的历史绩效报告均包含此项数值。
虽然要兼顾许多不同类型的绩效指标,但当对同一市场的同一时段进行测试时,重要的指标之间都存在着一种高度的相关性。每笔交易平均盈利最高的那些系统,其盈利系数通常也最高,而资金最大回撤则最低。最重要的是,你必须按照你认为重要的标准来评估交易系统。因为使用系统来进行交易的是你本人,当系统出现盈亏,承受压力情绪起伏的也是你本人。你必须对于系统的盈利能力有信心。如果没有这种信心,你很难在系统出现亏损时继续用它交易。
勤勉的交易者希望在展开实际交易并承担风险之前,用历史数据来测试其交易理念。在本章中,我们审视了交易者将面临的各种挑战与抉择。有关建立有效的机械式商品交易系统,还有一个问题尚未解决,因为它是如此的重要,又极具争议性,所以我们需要用单独一章来讨论它。本书的下一章将针对纷繁复杂的优化问题提出独特见解。