程序化交易中价格包络带过滤方法
近来,随着期货市场不断发展壮大,尤其是股指期货波澜壮阔的行情走出后,笔者发现市场上客户对于程序化研究热情越来越高,广大投资者从自己日常交易思路出发,构建个人程序化交易系统,然而从主观交易到程序化交易的进化过程中,很多朋友提到如何正确过滤程序化交易中错误信号,在实战中非常重要,在此笔者提出一些自己经验与广大投资者分享。
一、常见过滤方法概述
程序化交易就是将投资者复杂的交易思路转变为能简单操作的智能交易系统,便于投资者的严格执行,程序化交易模型是交易思想的凝练和实际化,正确的交易思想在严格的操作纪律执行下将获得良好、稳定的投资收益,而通过交易模型正是将正确的交易思想与严格的操作纪律很好地结合在一起,帮助我们获取良好、稳定的投资收益。
然而,投资者的交易思路在主观使用可能会胜率非常搞,形成程序化交易系统时可能盈利大幅缩小,这很大可能是因为程序化系统会自动交易所有符合条件的机会,而投资者主观交易时会人为地过滤无用信号,因此对于程序化交易系统的进阶主要在于过滤方法选择。
笔者认为,常见的过滤方法有:波动性过滤;价格包络带过滤;时间过滤;交易次数过滤;系统策略组合过滤等。本文主要对价格包络带过滤进行展开讨论,在研究程序化交易时,经常会用到以下几种常见的价格包络带过滤方法,包括:固定点数包络带过滤和价格布林带过滤等,本文对这两种种过滤方法进行综合讨论与分析。
二、价格包络带过滤方法
包络带过滤方法,只有当价格变化超过规定的区间时,程序才会发出进出场信号,这种方法可以有效过滤行情窄幅震荡信号数量,有效提高程序化策略执行效率,而这种规定的区间可以称作包络带。在研究程序化交易过程中,笔者尝试过不同的方法来定义包络带,本文提到了三种方法,以双均线系统为例,阐述两种种方法的改善效果。
1.固定点数包络带过滤
固定点数包络带过滤即包络带区间的上限和下限是固定的,这个固定值可以由交易者的经验得出,或者利用程序化交易软件优化得到相对合适的值。在实战时,笔者是这么操作的,对于任何一个进场信号,在开仓价基础上加减固定值,即可得到过滤包络带,只有当市场价格超过包络带时,才会考虑平仓或反手。采用这种过滤方法,可以有效过滤模型交易次数,因为一般来说,在趋势性非常好的时候,交易次数一般很少,会一直拿住仓位,而模型交易次数多数由震荡期贡献,采用这种方法,可以尽可能少地过滤交易次数,当然有时候也会失去比较好的交易点位,过滤方法从来如此,减少了交易次数,但也可能在某些时候带来坏处。
以笔者经常引用的双均线系统为例,即短周期上穿长周期均线,做多;短周期下穿长周期均线,做空。应用于螺纹钢60分钟指数合约,均线参数为(15,25),每手交易手续费为5元,系统测试效果如图1所示。
图1 双均线系统应用于螺纹钢指数合约测试效果
从图1中可以看出,自2009年3月27日以来,系统累计盈利为60240,最大资产回撤为4243,交易次数为311次,采用笔者前文中所讲固定点数过滤方法,系统测试效果如图2所示。
图2 固定点数过滤应用于双均线系统测试效果
从图2中可以看出,采用固定点数过滤方法后,系统累计盈利为66642,交易手数为287次,有一定得改善效果。
同时为了定量地认识过滤方法对于程序化交易系统的影响,采用控制变量法来研究,设固定点数为N,N取值 变化范围为[0,30],保持其他测试条件不变。首先研究固定点数与交易次数的关系,如图3所示。
图3 固定点数与交易手数关系
从图3中可以看到,随着过滤的固定点数增加,双均线系统交易次数不断减少,这和笔者的初衷是符合的,程序化交易系统过滤不正是要减少交易次数。然而这个次数是不是原来越好呢,可以看看下面的曲线,过滤周期与总盈利的关系如图4所示。
图4 固定点数与交易手数关系
从图4中可以看到,随着过滤周期的增加,系统净利润并未一直呈现上涨走势,而是先增加后减少的走势。因此笔者认为,过滤周期并非越大越好,而是要权衡累计盈利与交易次数,选取一个恰当的参数作为过滤周期值。
2.价格布林带过滤
价格布林带过滤即包络带区间的上限和下限是由行情来决定的,即以一固定系数乘以价格波动标准差。在程序化交易中采用这种方法进行过滤时,对于任何一个进场信号,在均线价格基础上加上固定倍数的标准差,即可得到过滤包络带,只有当市场价格超过包络带时,才会考虑平仓或反手。采用这种过滤方法,可以有效过滤模型交易次数, 过滤交易次数的多少与这个固定系数关系比较密切,可以利用交易开发软件来优化寻找相对较优的值,同时包络带会动态变化,与行情的波动紧密相连,在行情宽幅震荡时有一定的过滤效果。
图5 价格布林带过滤应用于双均线系统测试效果
从图5中可以看出,采用价格BOLL带过滤方法后,系统累计盈利为67574,交易手数为305次,有一定得改善效果。将三个程序化策略一起对比效果如图6所示。
图6 三种策略效果对比
从图4 的表格中数据可知,采用两种过滤方法均可以改善策略效果,提高系统的盈利能力,过滤震荡期交易次数,同时控制了系统风险,减小了最大回撤。
三、总结
笔者在上文中对于程序化交易中的过滤方法展开了讨论,研究了两种包络带过滤方法,即固定点数包络带过滤和布林带过滤,阐述了具体方法后应用于双均线系统为例,阐述了这一方法的有效性,并比较了二者的异同,从效果来看布林带过滤方法对行情具有一定的适应性,固定点数过滤在宽幅震荡行情显得无效且亏损较大。在实际执行程序化交易的过程中,正确的过滤方法非常重要,多数投资者都会选择主观干预一些交易信号,这相当于人工过滤,这样也不失为比较好的方法,而全自动的程序化过滤方法需要不断去尝试,本文笔者只是提出了一个思路,希望能使读者有所启发。