随着股指期货市场参与者的逐步成熟、国内相关程序化交易平台的技术实现,以及程序化交易自身的优点,程序化交易在近几年的国内期货市场上得到了飞跃式的发展。程序化交易是国际市场常用的交易方式,国外程序化交易的应用领域非常广泛,主要有组合管理、套利交易、趋势交易及其他量化策略等。
波涛(1998)在《系统交易方法》中提出,一个设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特徵、投资对象的统计特徵以及投资资金的风险特徵。国外交易系统的典范莫过于Richard Dennis在1983年底推出的海龟交易法则,从中可以看到一个完整的交易系统包括:市场—买卖什么;头寸规模—买卖多少;入市—何时买卖;止损—何时退出亏损的头寸;止盈—何时退出赢利的头寸;策略—如何买卖等方面。
根据策略原理和市场数据之间的逻辑关係,交易策略设计的思路可分为自上而下和自下而上两方面。自上而下的方法是指从投资理念或理论基础的角度出发寻找规律,并以此形成交易策略。比如基于持有成本理论的期现套利策略、根据行业轮动规律,配置股票组合以获得超额Alpha的策略等等。自下而上的方法则从市场统计数据出发,根据历史统计特徵而形成的交易策略。例如,当期指的开盘价高于昨日收盘价、最高价、最低价三者的平均价时,日内做多,反之做空;或根据固定几家主力机构的淨空单变化来确定次日的交易方向等策略。自下而上的交易策略更容易受市场条件变化的影响。
在欧美发达资本市场,程序化交易伴随着资本、技术和监管的变化而不断演变,程序化交易的策略也层出不穷。上图是Futures Magazine在2005年评出的最佳交易系统的历史排名情况,某些交易系统在不同时段内表现出较稳定的特点。2008年美国S&P500交易系统的TOP10排名为:Turbo Trader Pro、Anticipation、Samurai 35、Dual Thrust、Maxim、Mesa T-Notes、Qtech Bellies、Keystone、Sledge Hammer、Delphi Universal。
儘管国外市场上的交易系统名称举不胜举,但对于成熟的交易策略,开发者一般不愿公开,投资者也较难深入瞭解诸多交易策略的原理。本文通过对几个公开化的成熟交易策略举例,试图瞭解一些国外成熟交易策略的设计原理,同时检验其在国内期指市场中的适用性。
1、Dual-Thrust
开盘区间突破是较为常见的日内交易策略之一,以今日开盘价加减一定比例的昨日振幅,确定上下轨。日内突破上轨时平空做多,突破下轨时平多做空。Dual Thrust在形式上和开盘区间突破策略类似。不同点主要体现在两方面:Dual Thrust在Range的设置上,引入前N日的四个价位,使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪;Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的週期数,也可以通过参数K1和K2来确定。
当K1 K2时,空头相对容易被触发。因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大週期的技术指标入手,阶段性地动态调整K1和K2的值。
为了使该策略更贴近实际情况,加入一些简单的交易规则,如初始止损、跨週期的数据引用等进行完善。具体地,初始资金100万、每次以30%仓位开仓,日内突破上轨且30分钟週期的MA5>MA10开多,日内跌破下轨且30分钟週期的MA5
2、R-Breaker
在外汇交易系统中,枢轴点 (Pivot Points) 交易方法是一种经典的交易策略。Pivot Points是一个非常单纯的阻力支撑体系,根据昨日的最高价、最低价和收盘价,计算出七个价位,包括一个枢轴点、三个阻力位和三个支撑位。
阻力线和支撑线是技术分析中经常使用的工具之一,并且支撑线和压力线的作用是可以互相转化的。从交易的角度上来看,Pivot Point好比是作战地图,给投资者指出了盘中应该关注的支撑和阻力价位,而至于具体的战术配合,Pivot Point并没有具体地规定,完全取决于投资者自身的交易策略。投资者可以根据盘中价格和枢轴点、支撑位和阻力位的相关走势灵活地制定策略,甚至可以根据关键点位进行加减仓的头寸管理。
R-Breaker根据昨日价格计算出六个价位作为今日盘中交易的参考价位,只是比Pivot Points的设置少了一个枢轴点。R-Breaker与Pivot Points的不同点体现在:通过参数设置,使得六个价格间的距离更加灵活,并且R-Breaker明确了具体的交易策略。根据盘中价格走势,同时採取趋势追踪和反转策略。图中有颜色背景的区域可以视为观察区,当盘中日内最高价触及Ssetup后出现回落,且跌破参考Senter的阻力线时,採取反转策略,即在S1点开仓做空;在空仓的情况下,如果盘中价格一路突破Bbreak的阻力线时,则採取趋势追踪策略,即在B2点开仓做多。类似地,B1点反转做多,S2点顺势做空。
由于盘中开仓的触发条件涉及到多个价位,对日内价格走势较为敏感,因此该策略适用于在一分钟週期上交易。另外,该策略触发的交易次数并不多,不考虑跨週期的条件。TB IF888的1分钟数据源最早为2010/4/28,其他测试条件和Dual Thrust相同。
R-Breaker中距离参数的设置对交易触发次数和最终收益率有一定影响,为了验证其策略的有效性,把R-Breaker的思路移植到距离参数固定的Pivot Point上,测试结果显示收益率103.6%、最大资产回撤值比例14.6%、胜率40.96%、均盈利/均亏损1.97、交易次数595。
3、Dynamic Breakout II
动态突破的原理与波动率相关,我们先来回顾波动率与指数的关係。我国目前暂未推出基于指数的期权衍生品,所以无法计算标的指数的隐含波动率,通常根据历史数据计算价格的标准差来衡量波动率。这裡可以参考基于S&P500指数期权隐含波动率的VIX指数,也称为恐慌指数,代表市场对未来30天的市场波动率的预期。图中可以看出,在2007年之前和2009年之后,当VIX指数处在低位时,指数通常延续当前的趋势;而当VIX由低位攀升至高位时,预示着后市出现反转的概率加大。较为例外的是,2008年金融危机产生的系统性风险,使得VIX指数大幅上升,指数出现持续下跌。
动态突破的思想是通过刻画市场波动率,同时结合使用布林线以及突破前期最高或最低点的做法来捕捉趋势。当市场波动率降低时,延续当前趋势的概率较大,在计算布林线带宽时,使用的回溯週期数减少,使得开仓容易被触发;当市场波动率增加时,行情有可能发生反转,同时为了过滤虚假信号,计算布林线带宽时使用的回溯週期数增加,使得开仓条件相对难触发。这种设置使得计算出的布林上下轨具有一定的适应性。策略中增加突破前期高点买入和跌破前期低点卖出的条件可以进一步过滤虚假信号。投资者可以参考《Building Winning Trading Systems with TradeStation》中关于Dynamic Breakout II的介绍。
Dynamic Breakout II策略中当价格突破前期高点且超过布林上轨时做多,当价格跌破前期低点和布林下轨时做空,除了初始止损外,使用布林中轨线作为跟踪止损。其他测试条件和Dual Thrust相同。
Dual Thrust、R-Breaker和Dynamic Breakout II的适用週期不同,策略原理也不同。若同时使用这三个策略,组合后的收益率曲线变得更加平滑,最大资产回撤比例为5.2%,显示了投资组合策略分散化的优势。值得注意的是,上述得到的收益率曲线是根据历史数据,在使用相对优化参数的前提下得到的测试结果。
在实盘交易过程中,历史的优化参数未并适应当前的行情特点,投资者在使用程序化的过程中,必须对交易策略原理做到心中有数,这样才能理解行情特点与交易结果之间的关係。从策略测试到实盘交易的转变过程中,投资者还将遇到其他一些问题。
1、程序化交易平台的选择
在平台选择上,应结合软件稳定性、交易策略的适用性、使用费用、使用习惯等方面选择适合自己交易的平台。例如:交易开拓者的交易策略测试报告更加详细,国外的TradeStation代码容易移植到TB平台上。
2、实盘交易中的细节问题
程序化交易平台的实时数据来源于主管机关,主管机关推送一次Tick数据,不同平台自行提取更长週期的数据,不同的提取规则可能导致数据不一致。比如TB在日内週期K线的分割方法,以及K线的时间标记上都是不同的。在日内收盘平仓的时点,以及跨週期的数据引用上等方面,需要注意不同平台的数据差异。
交易策略测试是在既定的週期裡每个週期计算一次相应参数,而实盘交易中会有数据实时推送过来,有可能会造成交易信号反覆的问题。有的平台软件支持每隔固定秒数的轮询模式,以及走完K线模式来读取数据,选择什么样的数据刷新频率取决于策略本身。除了信号反覆的问题,还可能出现下单未成交、重複开平仓、止损未触发等情况,这需要投资者事先考虑可能出现的不利情形,对策略进行相应的调整,如把代码转换到更小的週期上运行、考虑滑点、通过全局变量控制开仓次数等。另外,策略测试时通常是针对期指连续合约,实盘交易时要选择主力合约,换月时注意移仓时点的把握。
3、程序化交易执行过程中的交易心态
成功的投资不但需要正确的市场分析,更需要完善的风险管理和良好的心态控制,即所谓的3M (Mind、Money、Market)。一些投资者在使用程序化的过程中,尤其是当使用胜率较低的趋势跟踪系统出现连续亏损时,投资者会对使用的交易系统产生质疑,交易心态难以平和,甚至最终放弃交易系统的使用。每个交易系统对投资者心理、交易品种以及资金的风险偏好都是有一定适应性的。因此,投资者需要加深对市场的认识,理解交易策略原理,把握自己能把握的,包括交易心态和交易方法,才能真正发挥程序化交易的作用。
期货程序化交易常用软件:
随着计算机的发展,各种算法也是日益的被用来金融交易,程序化交易系统是指设计人员将交易策略的逻辑与参数在电脑程序运算后,并将交易策略系统化。
证监会2015年10月9日公布《证券期货市场程序化交易管理办法(征求意见稿)》,拟建立申报核查管理、接入管理、指令审核、收费管理、严格规范境外服务器的使用、监察执法六方面监管制度。
征求意见稿明确,程序化交易是指通过既定程序或特定软件,自动生成或执行交易指令的交易行为。程序化交易者应当只用一个账户从事程序化交易,证监会另有规定的除外
现在市面上主要的程序化软件就是文华财经,开拓者, 和金字塔,主流就是这三种
1.文华
期货行情与交易软件文华财占据了大部分的市场的市场,主要的原因是它的界面通俗易懂,然后很多的普通交易者也是用的文华普通版,这就造成文华的市场占有很足,再加上文华一键通交易账户的使用让交易者下单更轻松,真正意义上的实现了一键下单,这不得不说是国内期货下单系统的一大进步。同样在用户开放平台方面文华支持用户自编指标,并修改连接服务器等功能。近年来文华财经感觉升级得不错,毕竟文华财经是国内程序化交易软件较早的开发者,旗下的赢智程序化软件越来越受到机构和专业程序化交易者的青睐。最重要的是文华程序化言容易上手,就算没有太多编程经验的同学也是可以学习的,文华函数库最近一年强大不少,提供TICK函数、盘口函数,可编写高频模型,此外文华还有一些自己研发的特色函数,比如盘整函数,可限制模型在盘整行情的频繁开仓。能够实现机构交易者需要的多模型组合运行、模型加码、回撤控制、资金曲线跟随等策略功能,文华属于一次性付费,大概一年6000左右。
2.开拓者
TB全名:交易开拓者,占据了专业程序化交易者的市场,对于追求精度控制程序化交易者来说这是一款无二的选择,它可以多账户自动交易,发单可采用市价与固定报价两种形式,因固定报价可以规避因网络或计算机系统延迟带的市价成交误差,超短线交易则可以有效的减少滑点,从而降低交易成本。它强大的函功控制功能基本上可以让你设计到交易的每个细节,如共计盈利次、最大单笔盈利额、建仓次数,建仓位置、建仓价格............. 太多控制函数能将我们想要的策略表达到更完美。并且在对模型测试时非常精准,历史K线数据也足,最多能达到80000根K线回溯,提供了完整的测试体系。但是TB真实账户使用授权是按交易量来收费,目前是按交易所交易所收取的你交易的手数的手续费来收取,多百分之20%左右每手,这对于超级大户来讲就不合算了。还有对于初级期货交易者来说许多界面及专业功能不知如何设置。另外TB函数随功能强大但它使用的语言较为复杂,没有一番学习或专业的知识可能没法编写出完整的公式,当然这需要使用者的耐心研究,
3.金字塔
金字塔是一款集期货程式化交易、看盘分析为一体的全功能综合软件。国内独家支持图交易表程式化交易、后台程式化交易、高频交易、趋势线程式化交易等多种自动交易模式,公式模型编写和操作兼容国内主流分析软件,容易学习上手。支持一键下单,图表下单等多种手工下单模式。支持套利和多帐户交易和动态止赢止损功能。行情稳定设计,采用超压缩点对点高速网络传输技术做到全推式实时行情零秒延时传输。采用多路数据同步接收的方式,同步接收国内股票、期货以及IB外盘行情,独特的双数据接入技术完全拒绝断线情况。 内置交易所鉴定并授权的下单模块,支持国内期货与外盘期货(IB)同步下单(可做套利或对冲)。持图表、后台、和基于VBS的高频程式化交易,并允许多帐户同步下单。 总体来说还是可以满足所有需求,但是软件有各个标准的版本按版本不同而收取软件费用