国外成熟的程序交易系统的思路 z
波涛(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来确定。
当K1K2时,空头相对容易被触发。因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。
为了使该策略更贴近实际情况,加入一些简单的交易规则,如初始止损、跨周期的数据引用等进行完善。具体地,初始资金100万、每次以30%仓位开仓,日内突破上轨且30分钟周期的MA5>MA10开多,日内跌破下轨且30分钟周期的MA5
图3:Dual Thrust策略的累计收益率
股指期货
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)。一些投资者在使用程序化的
过程中,尤其是当使用胜率较低的趋势跟踪系统出现连续亏损时,投资者会对使用的交易系统产生质疑,交易心态难以平和,甚至最终放弃交易系统的使用。每个交
易系统对投资者心理、交易品种以及资金的风险偏好都是有一定适应性的。因此,投资者需要加深对市场的认识,理解交易策略原理,把握自己能把握的,包括交易
心态和交易方法,才能真正发挥程序化交易的作用
国外成熟的程序交易系统的思路 z的更多相关文章
- java的GUI程序的基本思路是以JFrame为基础
JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化.最小化.关闭. JPanel – Java图形用户界面(GUI)工具包swing中的面 ...
- WinForm关于更新程序的设计思路
开发WINDOWS应用程序一般都会有一个自动更新的功能,这就需要提供一个单独的更新程序来更新主程序,那么主程序怎么检测是否有更新,以及更新程序怎么去更新主程序呢?下面将分开研究分析. 用VS发布向导发 ...
- 【WPF】软件更新程序的设计思路
目标:客户端程序在启动时,自动联网检查服务端是否有新的版本,有则提示用户更新客户端. 思路: 1.打开Visual Studio,在主体程序的解决方案下再新建一个叫自动更新程序的项目.主体程序的目录是 ...
- 微信小程序红包开发思路 微信红包小程序开发思路讲解
之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...
- Py-解决粘包现象,tcp实现并发,tcp实现传输文件的程序,校验思路,线程与进程
黏包现象 TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方TCP接收到 ...
- Spring Security 整合 微信小程序登录的思路探讨
1. 前言 原本打算把Spring Security中OAuth 2.0的机制讲完后,用小程序登录来实战一下,发现小程序登录流程和Spring Security中OAuth 2.0登录的流程有点不一样 ...
- Laravel 程序架构设计思路:使用动作类
当我们谈论到应用程序的架构的时候,经常会问到一个经典的问题,那就是"这段代码应该放在哪里比较好". 因为 Laravel 是一个相当灵活的框架,所以要回答这个问题其实没那么容易.我 ...
- 程序单一实例实现 z
不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程). 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具. Mutex是互 ...
- [Mac A]为什么国外程序员爱用 Mac?
from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜 ...
随机推荐
- [python] 字符串与列表、字典的转换
1.字符串->字典:eval(str) 2.字符串->列表:list(str)
- iOS开发——视频播放 待更新……
本文主要实现调用系统自带的播放器,自带的播放器已经做好了屏幕的适配,集成播放,暂停,快进等功能.能够满足基本的视频播放功能及iOS的视频播放的开发. 最后将其简单的封装成一个iOS视频播放工具类. 一 ...
- ipod nano 无法添加mp4视频 电影失败解决方法
我的是nano7. 导入mp4各种错误, 同步资料库 无效等等方法都没用. 后来发现当中 多个mp4,少年pi.mp4竟然导入成功, 怀疑是mp4格式不符合nano 于是:(测试后成功) 先拉到资料库 ...
- jeesite 经常出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL解决思路
本来jeesite是用的maven,但是我开发的项目用这个框架没用maven, 经常报这个错,我能用的办法就是将springmvc—web.jar包删掉,然后重新添加
- LevelDB windows vs2013 c++编译和测试
引用: (src1) :http://download.csdn.net/detail/flyfish1986/8881263(这里有下载地址) (src2) :http://blog.csdn.ne ...
- 15_动态SQL
[UserMapper.xml]和之前的作对比 <mapper namespace="com.Higgin.Mybatis.mapper.UserMapper"> &l ...
- 【ADO.NET】6、SQLHelper简单封装
using System.Data.SqlClient;using System.Configuration;引用:System.Configuration 连接字符串放到配置文件中 新建一个类,写如 ...
- /var子目录
/var子目录 目录 描述 /var/log/message 日志信息,按周自动轮询 /var/spool/cron/root 定时器配置文件目录,默认按用户命名 /var/log/secure 记录 ...
- CentOS6.5下docker的安装及遇到的问题和简单使用
Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup实现了资源的独立,可以很轻松的实现文件.资 ...
- 配置trac
1. enable apache mod_auth_digest 2. 设置Location