量化交易十大陷阱

转载原文:http://futures.hexun.com/2014-06-18/165811059.html

一、偷价

  如果一个交易策略要求你利用信号触发前的价格进行交易,那么这个交易策略就存在偷价的问题。偷价发出的交易信号不会消失,但是你已经没有机会利用这个信号进行交易了。例如,信号可能提示,如果当天收盘价高于前一天最高价,则利用当天开盘价进行买入,而在开盘价成交已经几乎是不可能的事情了。

  很多人也许会低估偷价的危害性,事实上,固定点数的偷价相当于在原本的资金曲线上叠加了一条斜率为正的直线(在每次交易都是固定手数的情况下)。例如,假设在股指上每次交易偷价1个点,那么一个上市至今交易2000笔的模型,会稳定净赚1*300*2000*2=120万。

  下面两个图表是笔者在股指连续合约5分钟图上测试的双均线模型的交易盈亏曲线(回测时段2014年1月1日-2014年6月16日)。图1是包含偷价的策略,即如果上一根k线上出现均线金叉,则以当前k线最低价买入,死叉则以当前k线最高价卖出。图2是没有偷价的策略,即如果上一根k线上出现均线金叉,则以当前k线开盘价买入,死叉则以当前k线开盘价卖出。可以看出,两者资金曲线差异非常大。 


  图1.策略偷价                          图2.策略没有偷价

  二、 未来函数

  交易策略中如果包含了未来函数,运行后表现是,某天出现的交易信号会在一段时间后消失,之后可能会在其他位置出现相同或不同的信号。出现这种情况的原因是,函数在判断是否发出信号以及发出何种信号时,利用了未来还不确定的行情信息。例如,如果当前柱线上还在跳动的收盘价被用来判断是否触发信号,则该函数是未来函数。使用这类函数的模型,会测表现胜率可能非常高,是典型的马后炮。

  很多平台上都有的Zigzag指标实际上就是一个未来函数。

  下面两个图表是笔者在黄金连续合约5分钟图上测试的双均线模型的交易盈亏曲线(回测时段2014年1月1日-2014年6月16日)。图3是包含未来函数的策略,即如果当前k线上出现均线金叉,则以当前k线开盘价买入,死叉则卖出。图4是不包含未来函数的策略,即如果上一根k线上出现均线金叉,则以当前k线开盘价买入,死叉则卖出。可以看出,两者资金曲线差异非常大。 


  图3.策略包含未来函数                图4.策略不包含未来函数

   三、 手续费

  策略进行测试时,如果不计入手续费,资金曲线可能会产生巨大差异,甚至不计手续费的盈利策略,在计入手续费后也可能产生亏损。手续费相当于在原本的资金曲线上叠加了一条斜率为负的直线(在每次交易都是固定手数的情况下)。

   四、 滑点

  滑点指的是开仓点位和成交点位之间的差异。滑点可能由网络延迟、交易平台不稳定、行情波动剧烈、市场容量不够等情况导致的,是难免会发生的情况,因此滑点是一个合格的交易策略必须充分考虑的因素。所以,如果在一个交易策略中,将滑点数设置为0,其资金曲线就会优于同一个滑点数不为0的策略。

  滑点和手续费对一个策略的资金曲线造成的影响是类似的。

  下面两个图表是笔者在沪铜连续合约5分钟图上测试的双均线模型的交易盈亏曲线(回测时段2014年1月1日-2014年6月16日)。图5是手续费和滑点均为0的策略。图6是设置了2.5%%手续费和2跳滑点的策略。可见,一个盈利的无成本交易策略,在合理设置成本后却可能出现亏损。 


  图5. 手续费和滑点均为0              图6. 手续费2.5%%,滑点2跳

   五、 指数合约

  有些策略回测的合约是指数合约,而指数合约是使用该品种所有合约加权平均生成的,其价格与主力连续合约有所差异,这种价格上的差异会使回测的资金曲线不真实。例如,某个合约上的短期剧烈波动被指数合约平滑了;或者,当远月合约升水,同时与近月合约基差较大,且处于移仓换月时,由于远月权重的逐步加大,可能会在指数合约上形成一轮涨势,而实际并不存在;再或者,实际操作中的移仓可能会产生一定的基差成本,这在指数合约却上无需支付。

  下面两个图表是笔者在沪铜指数合约和沪铜连续合约5分钟图上测试的海龟交易系统的交易盈亏曲线图(回测时段2014年1月1日-2014年6月17日,参数已优化)。图7是沪铜指数合约的交易盈亏曲线。图8是沪铜连续合约的交易盈亏曲线。可以看出,图7的曲线显然更加平滑,且最终表现更优异。


  图7.沪铜指数合约                       图8.沪铜连续合约

  六、 过度优化

  有些策略在公布资金曲线前可能进行了过度优化。过度优化有多种操作方法,例如,策略交易者可以针对某段特定的行情,或短时间的行情进行参数优化,之后将分段行情对应的资金曲线拼接起来,得到一个表现更出色的资金曲线;或者,策略交易者指定过去某几个表现较差的交易日不进行交易;再或者,策略交易者对过去的行情进行过度拟合,却并不考虑这个拟合方程不适用于未来;等等。上述种种经过加工的回测时的优异表现,都会与策略未来的运行结果存在较大差异。

  曲线拟合可以帮助我们解释过去的走势,从而推导未来的走势。然而,如果策略交易者对行情进行了过度拟合,则策略对过去行情的解释可能会非常出色,但对于未来行情的解释却几乎肯定是非常糟糕的。下面两个图表可以阐释适当的曲线拟合和过度的曲线拟合。图9的红色曲线拟合是适当的,我们可以看到十个离散点基本均匀的分布在曲线附近。图10的红色曲线拟合很显然是过度的,每个点都位于红色曲线上,但我们很难想象这跟曲线能够表达出下一个即将出现的点。 


  图9.适当拟合                       图10.过度拟合

  七、 市场容量

  对于承载较大资金规模的策略而言,如果没有充分考虑市场容量的问题,可能会导致交易结果与预期偏差较大。例如,涨跌停和流动性中断时,大资金常常很难成交,这在策略回测时很难纳入考量;或者,实际品种的市场容量有限,较大的单量不能全部以指定价格成交,这也会影响最终的交易结果。

  下图是沥青主力合约1409在6月17日的盘口图,可以看到沥青市场容量很小,有时几分钟都没有一笔成交,所以应用在沥青上的交易策略很难按照指定价格成交。 


  图11.沥青1409盘口

   八、 样本量过少

  有些策略覆盖的时间段太短,所以样本量太少,不能充分展现策略效果。这些策略在更长时间段上的资金曲线可能表现的并没有那么好。

   九、 信号量过少

  有些策略虽然测试了较长的时间段,但触发的交易信号很少。这些策略未来是否表现稳定也有待观察。例如,应用在日线图上的策略需要考察更长的时期。

  十、 适用范围小

  有些策略虽然覆盖了较长的时间段,或较多的品种或市场,但仅仅覆盖了一种类型的行情(例如一轮较长时间的大牛市)。这些策略在遇到截然不同的市场情况时,表现可能会大相径庭。

  例如《股市实战-精准买卖点秘技大全》这本书成书于2007年底,出版于2008年5月1日。书中的股票策略(股票只有做多策略)回测胜率超过了90%。但实际上,在这样的大牛市中,任何做多的策略都能赚钱。但该书出版后牛市就已经结束,书中的几十套策略自然无法应对08年之后的漫漫熊市与震荡。


你可能感兴趣的:(机器学习与数据挖掘)