交易系统测试结果的可信度检验
在评估一个系统的测试指标之前,我认为先检验测试结果的可信度。这就像我们在相信一个人说的话之前,先必须相信这个人。你可能找到一个交易系统,也可能是自己开发了一个交易系统,但是不论你对提供这个系统的人,包括你自己,有多少信任,你都要坚持先检验测试结果的可信度。如果因为盲目的相信或侥幸心理,跳过去这个过程,这无异于给你的资金安全埋下一个定时炸弹。
交易系统测试结果的可信度评估主要有以下几个方面:
一、这个系统是不是“黑盒子”?如果是,不论是什么理由,其结果都不可信。这虽然有些绝对,但侥幸心理是交易之大忌。这有点像在坐飞机时帮陌生人捎带东西一样:那东西打不开,但一定是炸弹吗?也不能下定论。如果你认为不能带陌生人的东西上飞机,你也不应该相信一个“黑盒子”系统。
二、检验系统测试条件与实际交易的符合程度。如果不符,各种绩效指标就不用看了。我认为至少要检查以下几点:
a.测试数据是否涵盖了至少一个大的牛市和一个大的熊市,一般至少要十年以上。我见过很多系统,测试指标很漂亮,可仔细一看,测试结果是基于指定的某段时间,譬如从2000年到2005年,这时就要打个问号了,因为2000年以前的数据不难得到啊,为什么不从1990年或更早开始呢?对于大多数要卖钱的交易系统,这样做是不难理解的。一般来讲,测试涵盖的时间越长,测试的可信度越高。
b.测试是否把交易佣金从赢利中扣除。否则,你可能在为证券公司打工。这一点对于交易频繁的系统尤其重要。
c.测试是否把交易的滑价(slippage)从赢利中扣除。譬如测试的某个交易是在40元买入的,在实际交易中可能你买不到,你可能要花 40.10元,有的市场甚至可能要40.50元。这一毛或五毛的价差是不是刨去了?好的系统测试会根据被测市场的流通性假设一个合理的滑价。越是短线的交易系统,滑价造成的影响越大。我还见过几次这样的情形:很好的测试结果,滑价预计得比较低,但当前市场的流通性确实很好,滑价好像是合理的。但总觉得结果好得让人不敢轻易相信。仔细一想,发现了问题:这个市场只是最近这两年才热起来的,以前的日成交量很低,但测试结果是按照当前的日成交量来估算滑价的。如果按以前的日成交量来算滑价,系统的绩效就远不如第一次看到的那样好。但是起码这是合理的结果。在测试时坚持合理的假设,会减少在实际交易中出现的没有预想到的损失。另一个需要注意的情形是如果系统是一个突破型的系统,例如在股票突破五日最高点时买进,这时市场上可能有很多交易者都盯着那个点买入,在价格突破时会有很多人进场作多,这时即使是日成交量很大的股票都可能会出现大的滑价,在测试中这些都需要考虑进去。
三、检查测试结果是否具有统计意义上的可信度。如果统计意义上的可信度很低,别的指标不用看了。统计的指标有:
a.交易次数。至少要超过30,才能满足一般的统计要求。结果的不确定性是与交易次数(统计上的样本大小)的平方根成反比的。因此,系统交易的次数越多,这些交易所表现的系统绩效的确定程度就越高,也就是结果越可信。
b.系统的赢利是不是集中在少数几个交易上。如果一个系统的赢利有十万元,但其中的七万来自于某两次交易,那么应该把这两次交易去除看你能不能对系统的其他次交易的结果满意,因为很有可能你在实际交易中碰不到这种“满贯”型的交易。在Tradestation系统测试软件的系统分析报告中,除了 “获利因子”(Profit Factor)外,还有一项“经调整的获利因子”(Adjusted Profit Factor),就是针对这种情况而设的。
四、系统是否被“过度优化”(Over-optimized)。可以看以下两点得到初步印象:
a.看系统有几个优化参数。参数越多,“过度优化”的可能性越大。一般来讲,超过两个就很危险了。如果你手头有系统测试软件,你可以做个简单的试验:选一个股票或期货,用两个移动平均的交叉作买入和卖出的信号,然后对这两个移动平均的日数做优化(例如从10日到160日,5日一阶),很有可能在优化的结果中你能找到很不错的。如果再加一个参数,譬如说止损点或赢利靶点(Profit Target),那么今天你就可以找到不少诱人的系统。但是你会用这些系统去交易吗?
b.看系统交易程式中是否有“魔术”数字。如果有,就要问为什么用这个特定的数字。譬如,程式中用了一个20天的移动平均,一般我都会问为什么用20天而不是10天?如果是10天的移动平均会是什么结果?30天又是什么结果?
c.看系统的交易策略是否简单。越是逻辑简单的系统,一般来说,越不容易被过度优化,也越能经得起时间的考验。海龟交易法则就是一个简单系统的典范。基于期货市场价格的季节性涨跌的系统也是很简单易懂的。很多人不相信大家都知道的交易策略能持久地赢利。在这里顺便谈谈我的看法。我认为,这个问题的关键,是不能简单地以为知道了交易策略就万事大吉了。交易策略可以大家都一样,但每个人的交易计划,包括资金管理和交易管理,和每个人的性格与自律程度,以及对市场的了解,则千差万别。好比人人都知道怎样在墙上钉个钉子:买个锤子啊!听起来最简单不过了,三岁小儿都知道。为什么很多人还是敲不好呢?原因很多。可能买了个自己使不动的锤子(交易系统不符合个性),可能不知道有些墙是要先探到砖缝的才好敲的(对市场不了解,选错了市场或选错了时段),也可能是钉子敲得太少(缺乏经验,对市场没感觉),或者是用力过猛把钉子敲弯了(想一夜暴富,结果过度交易搞破产了),等等。总之,交易策略可以简单,但要指望通过交易达到稳定地赢利却不容易。
回到“过度优化”的主题上,如果要做进一步的分析,我一般会看系统指标在不同参数下的分布。对于好的系统,这种分布的形状应该像小山包。
假设系统只有一个参数,即某个移动平均的日数。而且,为简单起见,我们只看系统的总赢利。可以看到,虽然总赢利在参数为45时最优,但用其他值时的赢利也很不错。或者说这是个可以“稳定”赢利的系统。
如果像悬崖,说明系统对于参数的变化太敏感,你就要小心了。
五、看系统的交易策略是否有实际意义。也就是说,系统的交易逻辑必须能够被合理解释。好的交易系统捕捉市场的某些可量化的特性,如果系统的逻辑无法合理地解释成市场的某种特性,那么这个系统是不可信的。举个例子说,假设某人发现在黄金突破20天高点之后的三个月联想总是会上涨,于是他开发出一个系统在黄金突破20天高点时买入联想的股票。这个系统可能可以通过以上所有的可信度检验而且每年能给你100%的回报,但是,在我有足够的想像力能够解释为什么联想的股票跟金价会有这种关系之前,我是不会用这个系统进行实战交易的。
只有在通过了以上所述的可信度检验后,讨论系统测试的绩效指标才有意义。如果是自己进行交易系统的开发,在交易策略的选择,优化,和测试的过程中就必须把可信度的问题考虑在内。但交易系统的开发与测试有更多的内容和需要注意的地方,需要另一个专题来讨论。
祝大家找到合意的交易方法并稳定赢利!