基础
为什么要测试?
我们经常被问到:为什么要测试交易系统?你这能得到假设的结果?你怎么知道系统在实际交易中也会奏效呢?最后一个问题的真实答案是你永远无法真正地知道你的系统是否在将来有用,但只有两种方法弄清它是否有一定的有效性。第一种方法是用它进行实际交易,第二种方法是对它进行测试。由于对一个新的交易系统进行现时测试在时间和费用上都行不通,电脑测试至少是看看你钟情的系统设计在过去的交易中是否管用的一种简单方法。你了解了自己系统的优劣势——如果你测试操作正确,你会预计到现时交易中会出现的情况的。
最重要的是,你完成了两件事。第一,要测试系统,你必须使你的系统机械化,这样唯一一个自由裁量的要素是“我要进行下一个交易吗——或不进行?”我们相信机械化的交易系统最适合大多数的交易商。第二,你会发现自己的系统是否有拉尔夫·温斯(Ralph Vince)在《投资组合管理公式》(Portfolio Management Formulas)(见章末的推荐读物)中所称的“积极期待”。其他人曾把这称之为“交易商的优势”。这听起来过于简单化了,但倘若你的系统在测试中都不能盈利,就别指望它在现时交易中盈利了。了解了所有的理财方案后,最近我们注意到有一种谬论,认为通过变换经营交易或理财的方法可以把一个平庸的系统扭转为成功的系统。这是错误的。没有哪种理财方法或更好的方案可以将一个失败的系统变为成功的系统。你可以用你在乎的任何赌博策略试一试,如果你没有积极期待,从长远来看,理财方法根本不会改变系统交易结果,因而从一开始你就必须有优势。检验你是否有这种优势的唯一方法就是进行系统测试或系统交易。
别指望发现权威性的结果,来确认某种技术研究或交易系统优于其它的技术研究或交易系统。如果你按照所有的规则行事,正确地测试了,但仍未成功,我们也希望你不要过度沮丧。所做过的每个测试都只在其内部结果环境下,并且与测试中包含的数据相关时才会有效。如果我们在20多个不同的市场从1980年到现在对一个交易系统进行测试,结果反映不出1975年的情况。更重要的是,它们对将来情况的预测也是有限的。我们并未“证实”任何情况,也不应该有这种指望。我们所能做的最大努力只是测试时尽可能的细致周密。简单的答案并不存在,期货交易中无确定性可言。
软件
用计算机测试机械的交易系统已有20多年的历史了,但直到过去几年,基于个人电脑的软件包引进使得不必具备很多编程知识也能进行这一操作成为可能后,它才流行起来。现在几乎任何人都可以创造一个“可获利的”交易系统——用历史数据反映出的假设结果好得令人难以置信。在过去20年左右销售的大量的交易系统大部分是用这种方法创造出来的。不幸的是,成千上万失望的投资人可以证明,商业性的“黑匣子”系统很少如人们期望中的那么有效,如果奏效过的话。据我们所知,通过使用测试软件创造出的绝大多数交易系统也是这种情况。系统明显不够成功的原因不在于测试软件,而在于测试员使用的测试和评价方法。我们进行系统测试时使用的是系统编写Plus 和 Computrac/SNAP,两种都是非常好的程序软件,我们毫不迟疑地向你推荐这两种程序软件,它们都不偏不倚,也不乏灵活性。缺乏灵活性往往会使交易商采取不够充分的测试方法。问题正如我们所指出的,在于测试方法,不在于软件。
我们意识到并非每个人都拥有系统测试软件。系统测试软件昂贵而复杂,学习难度也比较大。然而并非一定要拥有系统测试软件才能创建一个可靠的交易系统。任何系统的要素应该是相同的,不管你拥有昂贵的测试软件还是自己在做编程。甚至不需要昂贵的软件你就可以测试交易系统了,你只需坐在电脑显示屏前,客观地用以往的数据进行系统交易。事实上,这样做有其优势。优势之一是软件包没有广泛的优化能力,你的系统就不太可能过度被曲线拟合。但是,支持测试软件包的呼声远远盖过了反对的呼声。我们强力推荐你要么获取某种系统测试软件包,要么自己编程——如果你有编程的技能,并且觉得购买的系统不能满足你具体的需求的话。
交易系统的要素
尽管有赘述之嫌,我们还是想涵盖一个交易系统必须具备的各种属性,以期其能成功地通过测试。一些(或者说所有的)属性可能看起来显而易见,但毫不夸张地说,过去两年中,在发表我们的时事简讯和写这本书的期间,我们和数千名交易商交谈过,我们可以颇为确定地说,有些人并没有完全明白交易系统该做什么,不该做什么。
严格测试一个交易系统的首要条件是它必须完全机械化。唯一可以自行决定的成分是决定是否进行完全的系统交易。其它的所有决定都必须编进系统。我们了解到许多,如果不是大多数,投机商目前做的系统交易至少是部分自行裁决的。我们也知道大多数真正成功的交易商认为一定程度的自行决定是他们交易的必要成分。我们对此没有争议——但是测试是不可能的,因为这是主观的。准备进行测试的机械的交易系统中完全没有自行决定的成分。
最坏的预期
你所设计的测试系统应该尽量预计到所有的偶发事件。我们常常听到一个交易商对他最爱的交易系统中缺失的成分轻描淡写。典型的答复是:这种事从未发生在我身上,为什么要做这样的打算呢?如果我的系统似乎总能抓住顶部和底部,并且从未出现过我处理不了的回跌,那么我为什么要设定止损指令呢?
这种想法不仅天真而且危险。我们要永远认定可能发生的就会发生。一个系统必须总能预计到最糟糕的情况,并且要做好应付的准备。你必须坚持寻找实现完整的风险控制的方法。别抱这样的想法,因为某种情况以前未发生过,所以将来也不会发生。
下面就有一个典型的例子:许多交易商喜欢只在收盘时才止损,以此来避免日内止损的锯齿状波动的损失。日内价格浮动不重要,唯独收盘价重要,这种观点看似很合理。(实际上,只在收盘时运用止损通常是被迫退出有潜在利润的交易的交易商所采用的方法,他们试图确保这种情况不再发生。)你能想象一个人蠢得在1987年10月16日或19日做多标准普尔合约,还建立了只在收盘时启动止损吗?只能列举类似这种可能的情况让所有的人信服,最好还是运用一般止损和再入市策略。要预料到糟糕透顶的情况,这样情况发生时,你就不会惊慌失措了。
最优化处理的危险之处
不幸的是,许多测试项目的目标多少有些误导性。其目标是开发出能从历史数据中榨出最大的利润的交易策略。其设想是在过去越有效的策略,在将来也会越有效。如果这种设想是正确的,那么那些设计在以前很管用的历史模型的人(主要指使用过系统测试软件的每个人),现在肯定相当富裕。显然,大部分的系统测试人员并没有发财。
我们观察到的大多数测试似乎都遵循一种标准情况。交易商购买最新的软件包和一些数据。他或她把一些最喜欢的,并且似乎在以前挺奏效的技术研究或图表模式组合在一起。然后连续几小时地坐在电脑前,为每个参数找出产生最大利润的准确数值。他们被那美妙的结果打动了,贪念萌生,于是迫不及待地开始交易。难以避免的是,他们遭遇一系列的损失,开始觉得自己的交易方法出了什么问题。他们最先想到的是再优化,除去系统中导致失败的成分。他们进行着再优化处理,满足地看到修正后的系统消除了大部分的失败交易,当然,这是后见之明。尽管上次遭受了损失,他们又信心满怀地继续交易,结果却又遭受了一系列的更惊人的损失。许多交易商重复着这一过程,直至钱财或耐心耗尽。而通常是资金用光了,于是他们认为要是他们有钱进行再优化处理,再做一次交易的话,他们一定会成功的。还有一些交易商得出的结论是错误出在使用了机械的交易系统,于是他们转而使用一种永远都得不到检测的主观的交易方法。损失,当然一如既往地出现——但是现在失败只是因为运气不佳、指令下达不当、止损突然袭击、被场内人士利用了或者是经纪人关心不够。
问题究竟出在哪儿?
在探讨更正确的步骤前剖析上述过程,评判哪里出了错,为什么出了错,有用吗?首先,显而易见的是,要提防几乎任何形式的最优化处理。毫不夸张地说,进行过最优化处理,获取了最佳参数组合的任何指标或任何一套指标都会显示出丰厚的利润,即使是用一组随机抽取的数据做的测试。电脑在分析数百万种组合,所以有些组合可以赚钱,至少是后见之明,是大有可能的。
令人惊叹的优化结果表明他们几乎可以成为暴发户,立即进行交易的诱惑令人难以抗拒。他们对这种优化过程深信不疑,以致于会一而再再而三地进行优化处理,即便交易账目情况暗示他们所做的事不对。我们之前例子中的那个交易商就是这种情况。你可以听到他说:“只需要一次优化处理了,我会成功的。”不幸的是,再做一万次优化处理也解决不了问题。
优化还是不优化
那些相信完全的优化处理奏效以及被一些系统销售者死缠烂打地诱惑了的人读读路易斯·B.卢卡克和B.韦德·布罗森所著的《历史数据在为技术交易系统选择参数的作用》(The Usefulness of Historical Data in Selecting Parameters for Technical Trading Systems)一书,会大有好处的。他们的作品系统而完整。他们使用20年的数据测试了两种顺势系统:通道突破系统和王尔德的方向性运动系统。经优化处理过的唯一变量是每个运算中使用的天数。这一参数的时间周期跨度为5到60天,增加值为5天。
他们用随机测试比较了三种不同的优化方案。测试使用的参数值是从5到60天中随机选择的。最重大的发现是再优化策略对于提高系统绩效毫无作用。每种优化方法产生的结果与随机测试并无太大的差异。优化与否,通道突破系统的利润都在50%到65%的范围,王尔德的方向性运动系统的利润都在30%到54%的范围。他们指出,所有测试结果表明优化处理的预测能力是有限的。优化处理不能预测出能比随机挑选策略产生更佳的投资组合利润的参数组。
我们再次强调这个测试极其正式,非常注重细节。那些声称完全优化比简单盲目模拟更有效的人不得不承受相反的结果,这是对他们的严厉惩罚。
如何避免曲线拟合
有些曲线拟合不可避免。设计一个没有曲线拟合的技术研究不容易,也不会受欢迎。当一个交易商“打量”着一个图表,发现9日的相对强弱指数似乎比标准的14日的相对强弱指数更适合某个市场时,他或她就是在做曲线拟合。因为曲线拟合简单有效,它与测试每个可能的相对强弱指数参数只有几步之遥。一旦这一过程开始产生盈利的结果,排列就变得几乎无穷无尽:“我们最好再添加几种技术研究,以确保不要漏掉任何组合。当我们着手后,就开始做优化处理,寻找正确的初始风险以及最佳的跟踪止损指令,如此一来,我们就能尽可能地使系统完整了。”其最终产品是一个包含各种良好意图的,经过了n度曲线拟合的系统。尽管纸上看来它精妙绝伦,但十有八九它将来不起作用。优化处理的结果与显而易见的东西恰恰相反。优化处理看起来越美妙、系统越完整复杂,它成功的可能性就越小。
有充分的理由解释优化处理和曲线拟合会出错。坦白地说,这一概念太简单,太易描述了,我们相信更多的交易商会更加关注它。所有的统计师都了解自由损失的概念。从外行的角度来说,自由损失是指添加到一个交易系统的每个参数代表对测试程序最终结果的一定程度的损失控制。你引入的技术研究或交易规则越多,结果就越不健全,越不可靠。你愈加试图完善一个系统,它就愈加不会如测试的那么奏效。
你至多可以有两到五个变量。变量越少,结果就越可靠。一个有趣的推论是它允许你看看自己和他人过去的成果,然后迅速判断它是否被曲线拟合了。系统经过曲线拟合处理的可能性与用来测试系统的变量的数目正相关。技术研究和规则的数目越多(尤其是规则的例外情况),模型被曲线拟合的程度就越高。请当心那些太复杂以致于需要电脑来运行的系统。
避免曲线拟合的另一种方法是不要创建为具体的市场量身定做的系统。落入这个陷阱很容易,但它却是曲线拟合的根本所在。一个良好的系统不必在所有的市场上都有成功的经历,但它应该适用于大多数的市场,如果在市场与市场间有变化,也只是很少的变化而已。如果你得改变系统,使它适应每个市场,基本系统就出现了大毛病。我们熟谙每个市场都有其独特性这一论点,但我们也记得货币期货几乎没有变动,谷物合约每天浮动数千美元的时期。市场在变化,确保你的交易系统与之合拍的最好办法就是在尽可能多的变化的市场中以静态的形式测试你的系统。
结束这一话题之前,还有另一种形式更微妙的最优化处理逐渐流行起来了。我们所指的是将历史数据输入电脑并测试,以发现“季节性”特征的做法。有一些知名的交易商/作者在提供测试数据,想要表明如果你在每年特定的日期买进某种商品,然后再在特定的日期卖出,你的利润可能会翻X倍。这完全是胡说八道,完全没有统计有效性,也根本不可能应用于交易。如果我们想要做优化处理,具有强大分析能力的电脑,而非系统,会允许我们优化数据的。可以把日期数据分成很小的部分进行检查,从中提取适合系统的精确数据。我们没有曲线拟合系统,而是曲线拟合了数据。当然,的确存在许多明显合理,有时在长期交易中有效的季节性规律(比如每年秋季的丰收低价),但要谨防用季节性规律做出一些荒谬的事。任何季节性交易建议,如果具体到了交易最佳月份以上的程度,就高度可疑。
选择测试周期
要选择的测试数据的周期是另一个常常被忽视的重要方面。从最低要求来看,测试周期应长得足以在每个市场上至少产生30笔交易。少于30笔交易就违反了一个基本的取样理论,即一个数据组至少要有30个数据点,才能说明是正态分布。注意这里所指的不是数据的天数、周数或月份数,而是指实际的交易。从统计学的角度而言,少于30笔交易,产生的结果就不可靠。交易笔数大于30的程度越多,测试越可靠。
同样重要的是,你所测试的市场周期段中包含的每种市场情况必须有尽可能多的出现频率。定义的可能的市场情况包括上升、下降及横向(尽管这是主观的看法)趋势;你的研究周期包含的每种情况要尽可能多。目的是要通过尽可能多地涵盖过去的情况来模拟将来可能出现的情况。如果只进行几年的度量可能会产生问题。比如,自从引进股指期货后,股市就未出现过严重的走跌阶段,所以用这个时期的数据测试往往会对偏向行情看涨的系统有利。股指期货市场的整个存在时期并没有包含真正足够多的数据,不足以反映潜在的未来市场情况。然而,石油期货,也许可以指望它来产生一个更健全的交易系统。换句话说,在原油市场进行的短时间周期测试结果可能比在股指期货市场进行的长时间周期测试结果更真实,因为到目前为止,股指数据有明显的上升偏向。如果在股指期货市场上使用只买进系统,其结果可能比使用只卖出系统的好得多。正如俞吉·贝拉(Yogi Berra)曾言,未来不同于过去。
有这样一种有趣的推论:尽管一个系统有时看上去很具诱惑性,但它永远都不应该偏向市场的某一方。显然,股指期货的大部分利润会流进多头方的口袋,显著的例外很少。这并不意味着交易系统就应该偏向市场的多头方。系统对市场的任何一方都不应该有意见或偏袒。如果这似乎很明显,回想一下20世纪70年代的情况吧。当时商品市场的大部分利润都被多头方赚走了。那个时期设计的交易系统也变得主要是牛市系统。那个时期改善交易结果最简单的方法是限制或消除做空销售。我们怀疑这种行情看涨的偏向是20世纪80年代初许多商品交易顾问业绩糟糕的主要原因。
我们的结论是:没有固定的定义说明一个测试应该包括多少数据。假设一般的顺势系统一个月在每个市场交易一次,那么至少要进行三年的测试,至少对于一个要产生之前提到的30笔交易的最小值的初始测试而言,需要三年的测试。然后再花两年或更久做进一步的测试(我们稍后会解释这样做的原因),所以总共是五年,这只是个巧合,五年是一般认可的最小周期。倘若在测试期间,市场只是一面性或两面性,你还得延迟测试时间。你会想尽力在研究中包括最多的不同的市场情况的。
我们喜欢用很多数据,喜欢测试不同的时间周期。除非你这么做过,否则你永远不会完全领会到盈利的交易系统是多么难以捉摸以及测试结果对时间的依赖性有多大。对于那些没有经历过能反映典型的市场情况的时间周期测试的系统,我们要格外小心。
请注意下表中(见图3-1)改变时间框架如何影响着结果,尤其是与亏损相关的结果。收益很相似,会产生一个有趣的点。我们所见过的几乎所有的最优化处理/测试程序把总收益作为选择随后的测试或现时交易中要用的最佳参数的唯一标准。在我们的简单例子中,各个收益似乎一致。然而,亏损却大不相同。有多少交易商愿意在承受一万美元的亏损的同时去交易一份仅有约两千五百美元的平均利润的合约?这一问题引人深思。

图3-1中的例子阐释了关于测试(总体上)及优化处理(具体)很少提到的危险之一。当你只为一个结果(通常是总收益)测试时,你可能忽略了其它同等重要的数据。我们建议你为多种属性测试,而不是仅仅为了一种属性测试。我们了解这会使过程更复杂,还可能从多方面使其主观化,但只为总收益测试常常具有误导性,对你的经济安全也有害。
选择测试数据
据我们所知,提供给公众的测试软件都没有将那使交易连续不断地从一个合约月份滚动到另一个合约月份的能力纳入它当时计算的任何技术研究的值中。间断使研究无效,从而也使测试无效。当然,往电脑中输入某具体商品一系列的合约月份,单独地测试每个月份,然后巩固结果,从理论上讲是可能的,但我们想象不出比这更乏味,更易出错的程序了。
解决方法是把你的数据安排成一个连续的溪流状,没有间断,这样,就可以进行连续的测试了。我们不会详细讨论确保从一个合约顺利过渡到另一个合约的计算过程,但是我们很满意,鉴于测试是假设的,结果还是相当精确的。
我们的数据有两种来源渠道:未来资料来源(Futuresource)(美国一咨询机构)和技术工具(Technical Tools)渠道资源中心。技术工具提供的数据与软件一起出现,用来建立自己(或其它的)连续的合约。如果你有很多不同的分析性软件包(像我们一样),来自于技术工具中的Quote Butler是一种把数据从一种形式转换成另一种形式而不需为每种具体的用途购买数据的绝妙方法。我们近来没有和其他数据供应商打过交道,但有几种可靠的渠道,可获得廉价而精准的数据。
价差和佣金
别相信任何没有考虑确切的价差(预计价和实际成交价差值)和佣金的测试结果。价差和佣金对你的结果具有四两拨千斤的作用。测试时,如果不考虑价差和佣金因素,许多交易系统会创造稳定的小额利润,但当纳入交易成本因素后,就转为平稳地亏损。这种情况在短期交易或日交易系统中尤为显著。系统交易越频繁,交易成本越重要。
近期的一个全国性的刊物上的一个例子特别抢眼。文章解释了一个旨在宣告股指期货日内交易转折的指标。尽管交易量很高,但没有考虑到交易成本。经我们一计算,考虑到每笔折扣佣金和偶尔的价差,该系统顶多是个保本方法,最糟糕是个持续亏损的方法。
每个人都有最喜欢的交易成本数目。我们允许的价差是75美元,佣金是50美元每轮,每笔交易总共是125美元。这个数目看似很高,但我们宁愿错得保守。我们在测试一个交易系统的各个部分时,可能选择有意漏掉价差和佣金,这样做只是为了简化操作,但我们会确保在查看潜在的底线结果前,将它们纳入计算的。
测试草案
我们将会解释一