程序化交易就是将投资者复杂的交易思路转变为能简单操作的智能交易系统,便于投资者的严格执行,程序化交易模型是交易思想的凝练和实际化,正确的交易思想在严格的操作纪律执行下获得良好和稳定的收益,而通过交易模型正是将正确的交易思想与严格的操作纪律很好的结合在一起,帮助我们获取良好稳定的收益。
程序化交易在投资实战中不仅可以提高下单速度,更可以帮助投资者避免受到情绪波动的影响,实现理性投资。然而,投资者的交易思路在主观使用可能会胜率非常高,形成程序化交易系统时可能盈利大幅缩小,这很大可能是因为程序化系统会自动交易所有符合条件的机会,而投资者主观交易时会人为的过滤掉无用信号,因此对于程序化交易系统的进阶主要在于过滤方法的选择。
常见的过滤方法有:
本文主要对时间过滤方法进行展开讨论,在对程序化交易系统优化时,可以采取以下方法:
日内限制开仓次数一般运用在日内交易策略,若行情震荡剧烈时,可能会出现日内反复开仓,即使止损做的非常好,仍会大大增加交易成本,因此控制日内开仓次数是一种不错的过滤方法。另外,同样的交易思想,在不同的周期上效果会迥异,总的来说选取大级别周期,可以很不错的过滤震荡期信号,不过系统信号不会那么灵敏了。本文笔者根据自己的经验提出了一种出场周期过滤的方法,供大家参考。
在实际操作中,笔者认为一种时间过滤方法比较有效,即出场周期存在最小值限制,对于任何一个进场信号,只有在经历N个周期后才考虑出场,这样可以有效过滤震荡期的频繁交易,对于整体盈利有很大的提高。因为一般来说,在趋势性非常好的时候,交易次数一般很少,会一直拿住仓位,而模型交易次数多数由震荡期贡献,采用这种方法,可以尽可能少的过滤交易次数,当然有时候也会失去比较好的交易点位,过滤方法从来ricin,减少了交易次数,但也可能在某些时候带来坏处。
以笔者经常引用的双均线系统为例,即短周期上穿长周期均线,做多;短周期下穿长周期均线,做空。应用于螺纹钢30分钟合约,均线参数为(25,40),每手手续费为5元,系统测试结果如图1所示:
从图1可以看到,自2009年3月27日以来,系统累计盈利为60240,最大回撤为4420。采用笔者前文中所讲的时间过滤方法,即开仓进场至少5个周期后才考虑出场,采用相同的测试条件,系统测试结果如图2所示。
从图中可以看到,累计盈利变为64300,盈利效果有了一定的改善。对比图1和图2可知,二者资金曲线走势基本相同,主要原因是后者相对于前者只是加了一个过滤条件,并未对交易系统有实质性的改变,同时可以图2资金曲线相对于图1更加平滑,这就是过滤条件所起的作用。同时为了定量的认识过滤方法对于交易系统的影响,采用控制变量法来研究,设过滤周期为N,N取值范围为(0,15),保持其他测试条件不变。首先研究过滤周期与交易次数的关系,如图3所示。
从图3中可以看到,随着过滤周期的增加,双均线系统交易次数不断减少,这和笔者的初衷是符合的,程序化交易系统过滤不正是要减少交易次数。然而这个次数是不是越少越好呢,可以看看下面的曲线,过滤周期与总盈利的关系如图4所示。
从图4中可以看到,随着过滤周期的增加,双均线系统并未一直呈现上涨趋势,而是先增加后减少的走势。因此笔者认为,过滤周期并非越大越好,而是要权衡累计盈利与交易次数,选取一个合适的参数作为过滤周期值。当然加入出场周期过滤后,对于程序化交易系统的其他性能参数有着不小的影响,而且对于有些程序的思想未必适用,因此使用的时候因该根据具体交易思想来选择过滤方法,若不加过滤已经是完美的模型,那就不需要再画蛇添足了。
笔者在上文中对于程序化交易中的过滤方法展开了讨论,提出了出场周期过滤的方法,并应用于双均线系统为例,阐述了这一方法的有效性。在实际执行程序化交易过程中,正确的过滤方法非常重要,多数投资者都会选择主观干预一些交易信号,这相当于人工过滤,这样也不失为比较好的方法,而全自动的程序化过滤方法需要不断的去尝试。本文只是提出了一个思路,希望能使读者有所启发。