随着股指期货市场参与者的逐步成熟、国内相关程序化交易平台的技术实现,以及程序化交易自身的优点,程序化交易在近几年的国内期货市场上得到了飞跃式的发展。程序化交易是国际市场常用的交易方式,国外程序化交易的应用领域非常广泛,主要有组合管理、套利交易、趋势交易及其他量化策略等。
波涛(1998)在《系统交易方法》中提出,一个设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特征、投资对象的统计特征以及投资资金的风险特征。国外交易系统的典范莫过于Richard Dennis在1983年底推出的海龟交易法则,从中可以看到一个完整的交易系统包括:市场—买卖什么;头寸规模—买卖多少;入市—何时买卖;止损—何时退出亏损的头寸;止盈—何时退出赢利的头寸;策略—如何买卖等方面。
根据策略原理和市场数据之间的逻辑关系,交易策略设计的思路可分为自上而下和自下而上两方面。自上而下的方法是指从投资理念或理论基础的角度出发寻找规律,并以此形成交易策略。比如基于持有成本理论的期现套利策略、根据行业轮动规律,配置股票组合以获得超额Alpha的策略等等。自下而上的方法则从市场统计数据出发,根据历史统计特征而形成的交易策略。例如,当期指的开盘价高于昨日收盘价、最高价、最低价三者的平均价时,日内做多,反之做空;或根据固定几家主力机构的净空单变化来确定次日的交易方向等策略。自下而上的交易策略更容易受市场条件变化的影响。
图1:国外交易系统的TOP10历史排名情况
在欧美发达资本市场,程序化交易伴随着资本、技术和监管的变化而不断演变,程序化交易的策略也层出不穷。上图是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
图2:Dual Thrust和开盘区间突破策略的原理
开盘区间突破是较为常见的日内交易策略之一,以今日开盘价加减一定比例的昨日振幅,确定上下轨。日内突破上轨时平空做多,突破下轨时平多做空。Dual Thrust在形式上和开盘区间突破策略类似。不同点主要体现在两方面:Dual Thrust在Range的设置上,引入前N日的四个价位,使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪;Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。
当K1<<K2时,多头相对容易被触发;当K1>K2时,空头相对容易被触发,当K1>K2时,空头相对容易被触发。因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。
为了使该策略更贴近实际情况,加入一些简单的交易规则,如初始止损、跨周期的数据引用等进行完善。具体地,初始资金100万、每次以30%仓位开仓,日内突破上轨且30分钟周期的MA5>MA10开多,日内跌破下轨且30分钟周期的MA5
2、R-Breaker
在外汇交易系统中,枢轴点 (Pivot Points) 交易方法是一种经典的交易策略。Pivot Points是一个非常单纯的阻力支撑体系,根据昨日的最高价、最低价和收盘价,计算出七个价位,包括一个枢轴点、三个阻力位和三个支撑位。
图4:Pivot Points策略的原理图
阻力线和支撑线是技术分析中经常使用的工具之一,并且支撑线和压力线的作用是可以互相转化的。从交易的角度上来看,Pivot Point好比是作战地图,给投资者指出了盘中应该关注的支撑和阻力价位,而至于具体的战术配合,Pivot Point并没有具体地规定,完全取决于投资者自身的交易策略。投资者可以根据盘中价格和枢轴点、支撑位和阻力位的相关走势灵活地制定策略,甚至可以根据关键点位进行加减仓的头寸管理。
图5:R-Breaker策略的原理图
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相同。
图6:R-Breaker策略的累计收益率
R-Breaker中距离参数的设置对交易触发次数和最终收益率有一定影响,为了验证其策略的有效性,把R-Breaker的思路移植到距离参数固定的Pivot Point上,测试结果显示收益率103.6%、最大资产回撤值比例14.6%、胜率40.96%、均盈利/均亏损1.97、交易次数595。
3、Dynamic Breakout II
图7:S&P500指数和隐含波动率VIX指数
动态突破的原理与波动率相关,我们先来回顾波动率与指数的关系。我国目前暂未推出基于指数的期权衍生品,所以无法计算标的指数的隐含波动率,通常根据历史数据计算价格的标准差来衡量波动率。这里可以参考基于S&P500指数期权隐含波动率的VIX指数,也称为恐慌指数,代表市场对未来30天的市场波动率的预期。图中可以看出,在2007年之前和2009年之后,当VIX指数处在低位时,指数通常延续当前的趋势;而当VIX由低位攀升至高位时,预示着后市出现反转的概率加大。较为例外的是,2008年金融危机产生的系统性风险,使得VIX指数大幅上升,指数出现持续下跌。
动态突破的思想是通过刻画市场波动率,同时结合使用布林线以及突破前期最高或最低点的做法来捕捉趋势。当市场波动率降低时,延续当前趋势的概率较大,在计算布林线带宽时,使用的回溯周期数减少,使得开仓容易被触发;当市场波动率增加时,行情有可能发生反转,同时为了过滤虚假信号,计算布林线带宽时使用的回溯周期数增加,使得开仓条件相对难触发。这种设置使得计算出的布林上下轨具有一定的适应性。策略中增加突破前期高点买入和跌破前期低点卖出的条件可以进一步过滤虚假信号。投资者可以参考《Building Winning Trading Systems with TradeStation》中关于Dynamic Breakout II的介绍。
Dynamic Breakout II策略中当价格突破前期高点且超过布林上轨时做多,当价格跌破前期低点和布林下轨时做空,除了初始止损外,使用布林中轨线作为跟踪止损。其他测试条件和Dual Thrust相同。
图8:Dynamic Breakout II策略的累计收益率
Dual Thrust、R-Breaker和Dynamic Breakout II的适用周期不同,策略原理也不同。若同时使用这三个策略,组合后的收益率曲线变得更加平滑,最大资产回撤比例为5.2%,显示了投资组合策略分散化的优势。值得注意的是,上述得到的收益率曲线是根据历史数据,在使用相对优化参数的前提下得到的测试结果。
在实盘交易过程中,历史的优化参数未并适应当前的行情特点,投资者在使用程序化的过程中,必须对交易策略原理做到心中有数,这样才能理解行情特点与交易结果之间的关系。从策略测试到实盘交易的转变过程中,投资者还将遇到其他一些问题。
1、程序化交易平台的选择
目前国内的程序化交易平台有金字塔、交易开拓者、文华、快期、盈佳等,这些交易平台是以“上期综合交易平台CTP”为后台的交易软件。在平台选择上,应结合软件稳定性、交易策略的适用性、使用费用、使用习惯等方面选择适合自己交易的平台。例如:金字塔支持图表程序化、后台程序化,支持VBS开发和外部数据库,扩展性好;交易开拓者的交易策略测试报告更加详细,国外的TradeStation代码容易移植到TB平台上。
2、实盘交易中的细节问题
程序化交易平台的实时数据来源于中金所,中金所500ms推送一次Tick数据,不同平台自行提取更长周期的数据,不同的提取规则可能导致数据不一致。比如金字塔和TB在日内周期K线的分割方法,以及K线的时间标记上都是不同的。在日内收盘平仓的时点,以及跨周期的数据引用上等方面,需要注意不同平台的数据差异。
交易策略测试是在既定的周期里每个周期计算一次相应参数,而实盘交易中会有数据实时推送过来,有可能会造成交易信号反复的问题。有的平台软件支持每隔固定秒数的轮询模式,以及走完K线模式来读取数据,选择什么样的数据刷新频率取决于策略本身。除了信号反复的问题,还可能出现下单未成交、重复开平仓、止损未触发等情况,这需要投资者事先考虑可能出现的不利情形,对策略进行相应的调整,如把代码转换到更小的周期上运行、考虑滑点、通过全局变量控制开仓次数等。另外,策略测试时通常是针对期指连续合约,实盘交易时要选择主力合约,换月时注意移仓时点的把握。
3、程序化交易执行过程中的交易心态
成功的投资不但需要正确的市场分析,更需要完善的风险管理和良好的心态控制,即所谓的3M (Mind、Money、Market)。一些投资者在使用程序化的过程中,尤其是当使用胜率较低的趋势跟踪系统出现连续亏损时,投资者会对使用的交易系统产生质疑,交易心态难以平和,甚至最终放弃交易系统的使用。每个交易系统对投资者心理、交易品种以及资金的风险偏好都是有一定适应性的。因此,投资者需要加深对市场的认识,理解交易策略原理,把握自己能把握的,包括交易心态和交易方法,才能真正发挥程序化交易的作用
来源:量化与交易
------------------------------------------------------
拓展阅读: