建立交易系统需明晰的三大陷阱

对大多数交易员来说,策略的制定了某种手段,是获利的必要路径。交易系统开发的过程,相对最终支出使用,是比较困难的:通常,实际交易远比制定交易策略要彻底意思。

不过,这会会计交易员采取各种捷径,这样一来,他们在制定交易策略时就可能产生各种错误。虽然短期来看,交易方法是替换了,但捷径所带来的错误最终导致影响实时交易。

好在大多数交易员在策略开发时出现的错误基本类似,一旦确定后,可以重新校正,改进。不过,排除这些问题并不容易;在无法使用捷径的情况下,策略从制定到正确执行将变得更加困难。

那么,有什么最常见的错误与捷径呢呢?大致有某种。下面我们将分别解释这三种错误会产生怎样的改变影响,如何发现并消除这些错误。避免这些常见错误,将有助于建立一个更好的交易系统。

陷阱1:策略过于复杂难懂

对于自动交易员而言,可能会出现“分析瘫痪”中的事实。对于一个算法交易员而言,一个复杂的方法将包含成千上万行代码,需要优化调整几个个甚至上百个变量。

这两种方法有一个共同点:它们都极其复杂,涉及众多内容。很多缺乏经验的交易员会认为这就是开发系统的一种方式;他们认为,指标越多,算法对过去数据的拟合程度也就越好,所制定的交易策略也将会更好。但事实并非如此。

在某个复杂的策略时,存在一个错误误,使我们执行该策略策略一般策略的错误提示:在历史数据上能获取更好的结果的策略,并不意味着该策略用于实际的交易中也能获得同样的成功。事实上,通过增加指标来不断地调整策略,或在算法中添加新的规则处理交易策略更复杂;这种做法通常只能给交易员一种虚假的信心。在策略中,改进及添加更多的规则,并不意味着策略将变得更好。

对于自动交易员来说,只有一个两个技术指标的相对简洁的图表,加上对价格走势与市场动态深刻的理解,经常比对于算法交易员来说,一条简单的入场指令通常要比需要满足5至10个条件才能执行交易的规则要好。

陷阱2:没有考虑市场摩擦的交易策略

比较市面上的交易系统,你会发现大多数交易系统都会列出一小段免责条款:佣金与滑移价差不包括在内。同样,许多自行开发系统的人也会忽略佣金与滑移成本;甚至他们考虑了这些成本,通常也会低估实际的金额。

你会听到系统不包括佣金与滑移内部的各种原因。最常见的借口是“不同券商通常纠正不同佣金”;另一个常见的理由是“我的系统只使用限价指令”。但真正的原因则是:这样的做法可以使系统看起来更好。如果考虑实际交易成本,能够获利的系统就更难找到。

以一个交易E-Mini标普500指数期货(CME:ESM14)的系统为例,该系统使用一种通过微小交易来捕捉非常小的市场变动的技术,并同时进行日内买卖对冲来进行投机。不考虑佣金与滑点,该系统每天进行20笔交易,平均每笔获得15美元的利润。交易员看到的是每天300美元的利润,并会认为这些交易还算不错。但如果加上每一个交易回合5美元的佣金及1个基点的滑点(这可能已经是乐观的估计),每天300美元的利润就变成了每天50美元的替代。

对于不考虑佣金与滑移成本的交易策略而言,一个潜在的影响便是该系统可能潜在交易员进行过多的交易。这里有一个例子。假设系统A是上面所提到的小型投机系统,如果不考虑佣金与滑移成本,每天可以获得300美元的利润。相对而言,系统B每天只进行一次交易,不考虑交易成本,每笔交易平均可获得50美元的利润。但是,当加入佣金与滑点,结果正好相反;系统B才是唯一的策略;交易次数少了,佣金与滑点占总利润的比例也要小很多。

因此,在系统开发初期,就将一定一定程度的佣金与滑移成本考虑进来,是至关重要的。对于E-Mini标普500指数期货而言,每个交易回合5美元的佣金,一两个基点的滑点,这样的假设是相对合理的。

陷阱3:系统测试使用所有历史数据

在系统开发时,很多交易员可能出现的第三个错误就是在测试系统时使用所有可用的历史数据。大多数缺乏经验的交易员逐渐到今天为止所有的历史数据进行优化与分析。之所以这样做,是因为他们希望确保策略已经反映了对最新数据的调整。

当然,如果第一次测试失败,交易员将在系统中添加一些规则或筛选条件(这样一来,就更可能出现前面提到的策略过于复杂的错误),然后再次运行所有数据。

最终,交易员会找到一个可行的交易策略系统,将这一系统运用到实际交易中。但在交易策略发生问题时,这种做法几乎总是必然的解决方法。

一个更好但缺点也更高的方法是通过对样本外部数据的测试来验证一个交易系统。某些说,交易员可能会用过去10年的数据来制定交易策略,但保留最近一年的数据。当系统开发完成后,使用未知的(也就是样本外数据)进行测试;如果系统运行得更好,那么这一系统可以被用作实时交易。

此外,还能进行移动窗格测试。这种方法使用多个样本外部的时间段,甚至可能获得成功,因为产生的股票曲线已经完全包括了样本外部的优化结果。

移动窗格测试或者样本外测试的一个缺陷在于:一旦样本外测试运行过一次,任何进一步的测试就不再是基于真正的“样本外数据”而进行的。因此,如果测试运行过很多次之后,很容易在不经意间就进行样本外测试变成了样本内测试。不过,样本外测试的方法还是要针对所有数据进行优化的方法。

系统开发没有捷径

实际上,很多交易员从来没有真正做到过这一点;很多时候,他们在开发系统时会走捷径或者在系统开发过程中出现过多简化的错误。当然,在系统中添加一条又一条规则,一个又一个筛选条件,比找到一条合适的简洁的规则要容易理解。

同样地,如果不考虑佣金和滑移的摩擦成本,找到可行的策略也是相当容易的。

最后,与移动窗格测试或样本外测试比例,对所有可用的历史数据进行优化是一种相对简单的方法,得到的结果看上去会更好。

但问题的关键是,如果我们使用对所有数据进行优化的方法来建立交易策略系统,相当于设计出这样一个交易策略:只有在测试的时间样本内应用这一交易策略系统,才能获利。当然,这需要有一个时间机器,而这显然比建立一个有利可图的系统更为复杂。

我们从上述系统开发的常见错误中得到的启示是:如果某一种方法使系统设计变得更简单,或者回测的成功率明显提高,那么,这实际是一个可能有错误发生的警示信号。一个合理,适当的系统开发过程总是困难重重的。

然而,从长期来看,用正确,正确的方法开发交易系统,总是要好过因为系统开发中产生的错误而在市场上赔钱。