: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

国内4种常用日内CTA策略介绍及实现

国内4种常用日内CTA策略介绍及实现

 本文将向大家介绍四种常见的CTA策略(Dual Thrust、R-Breaker、菲阿里四价、空中花园),实现各策略并以Dual Thrust为例进行参数优化及止盈止损分析对比。1常用日内CTA 策略简介

  1.1 Dual Thrust策略

  Dual Thrust策略是一种趋势跟踪系统,属于日内交易策略。该策略由Michael Chalek 在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用和适用度广的特点,其思路简单且参数少,配合不同的参数、止盈止损和仓位管理可以为投资者带来长期稳定的收益。而且该策略适用品种较多,被投资者广泛应用于股票、货币、贵金属、债券、能源及股指期货市场等。在Dual Thrust交易系统中,对于震荡区间的定义非常关键,这也是该交易系统的核心。

  Dual Thrust在Range的设置上,引入前N日的四个价位,Range = Max(HH-LC,HC-LL)来描述震荡区间的大小。

  其中HH 是N日High的最高价,LC是N日Close的最低价,HC是N日Close的最高价,LL是N日Low的最低价。这种方法使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪。Dual Thrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。具体分为两步来实现:

  第一步:计算相关参数,得到上轨Buyline 和下轨Sellline:

  N日High的最高价HH, N日Close的最低价LC

  N日Close的最高价HC,N日Low的最低价LL

  Range = Max(HH-LC,HC-LL)

  BuyLine = Open + K1*Range

  SellLine = Open - K2*Range

  第二步:交易逻辑:

  当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;

  当价格向下突破下轨时,如果当时持有多仓,则先平仓,再开空仓;如果没有仓位,则直接开空仓;

  当K1时,多头相对容易被触发,当K1>K2时,空头相对容易被触发。因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。

  1.2 R-Breaker策略

  R-Breaker 是一种短线日内交易策略,它结合了趋势和反转两种交易方式。该策略也长期被Future Thruth 杂志评为最赚钱的策略之一,尤其在标普500股指期货上效果最佳。该策略的主要特点如下:

  第一、根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为突破买入价、观察卖出价、反转卖出价、反转买入价、观察买入价和突破卖出价,以此来形成当前交易日盘中交易的触发条件。通过对计算方式的调整,可以调节六个价格间的距离,进一步改变触发条件。

  第二、根据盘中价格走势,实时判断触发条件,具体条件如下:

  1) 当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位(反手、开仓)做空;

  2) 当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位(反手、开仓)做多;

  3) 在空仓的情况下,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多;

  4) 在空仓的情况下,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空。

  第三、设定止损以及止盈条件;

  第四、设定过滤条件;

  第五、在每日收盘前,对所持合约进行平仓。

  具体来看,这六个价位形成的阻力和支撑位计算过程如下:

  观察卖出价 = High + 0.35 * (Close Low)

  观察买入价 = Low 0.35 * (High Close)

  反转卖出价 = 1.07 / 2 * (High + Low) 0.07 * Low

  反转买入价 = 1.07 / 2 * (High + Low) 0.07 * High

  突破买入价 = 观察卖出价 + 0.25 * (观察卖出价 观察买入价)

  突破卖出价 = 观察买入价 0.25 * (观察卖出价 观察买入价)

  其中,High、Close、Low 分别为昨日最高价、昨日收盘价和昨日最低价。这六个价位从大到小一次是,突破买入价、观察爱出价、反转卖出价、反转买入价、观察买入价和突破卖出价。

  1.3 菲阿里四价策略

  菲阿里四价策略是一种比较简单的趋势型日内交易策略。昨天高点、昨天低点、昨日收盘价、今天开盘价,可并称为菲阿里四价。它由日本期货冠军菲阿里实盘采用的主要突破交易参照系。菲阿里四价是日内突破策略,所以每日收盘之前都需要进行平仓。该策略的上下轨以及用法如下所示:

  上轨=昨日高点;

  下轨=昨日低点;

  昨日高点和昨日低点可以视为近期的一个波动范围,该范围的存在一定程度是一种压力线,只有足够的价格上涨或者下跌才会突破前期的高点或者低点。因此突破位臵是一个比较好的入场信号,如果突破该波动范围,则证明动能较大,后续走势强度维持较强的概率比较高,因此该策略采用以下开仓方式:

  当价格突破上轨,买入开仓;

  当价格跌穿下轨,卖出开仓。

  策略在开仓之后可能面临假突破的问题,因为该价位存在很大的阻力,可能是暂时性的突破,随机回落,因此具体策略使用之中可以设臵一些过滤条件来剔除假突破的情况。这样使得策略的胜率变大。开仓之后的止损止盈根据具体环境具体确定。

  1.4 空中花园策略

  空中花园属于日内突破策略。与之前的策略有所不同,空中花园比较看重开盘突破。开盘时的高开或者低开均说明有大的利好或者利空使得开盘大幅远离昨天的收盘价。开盘突破,是最快的一种入场方式。当然出错的概率也最高。因此为了提高策略的胜率,空中花园策略加了额外的条件,也就是开盘要大幅高开或者低开,形成一个空窗,因此顾名思义称为空中花园,然后再根据是否突破上下轨来进行开仓判断。这样一来,策略的胜率将大大提高,不过由于对高开或者低开的幅度要求过高,一般是超过1%,因此使得策略的交易次数可能相对其它策略而言要偏低一些。开盘第一根K线是收阳还是收阴,是判断日内趋势可能运动方向的标准。在当天开盘高开或低开时更有效。空中花园策略主要特点:

  日内交易策略,当日收盘平仓;空中花园在当天高开或低开时使用,即当开盘价>=昨天收盘价*1.01 或开盘价<=昨天收盘价*0.99 时:

  上轨=第一根K线的最高价;

  下轨=第一根K线的最低价;

  当价格突破上轨,买入开仓;

  当价格跌穿下轨,卖出开仓。

  2策略回测的数据准备和基本设置

  2.1 数据准备

  我们可以通过优矿DataAPI获得上期所大商所郑商所从2003 年以来所有上市的商品期货的不同月份合约的1 分钟行情数据,包含了open、high、low、close、volume、oi(开盘价、最高价、最低价、收盘价、成交量、持仓量)共6 种价格信息。但对于不同的期货品种来说,受市场关注度高、交易活跃的合约往往只有一个或者两个,因此在进行CTA 回测之前我们便需要对所有品种所有的月份合约都选择出来,筛选出属于不同品种的主力合约来进行CTA 日内交易策略的回测。

  一般情况下,主力合约的受关注度、成交量或持仓量较高,受交易品种的生产周期特性、交易者的交易习惯等几个方面所决定。本文回测所使用的主力合约是系统按照持仓量来进行计算的,一般只需在universe中进行设置即可。


187804863.jpg
2017-2-8 09:09

2.2 回测框架搭建


  本文这里直接均采用优矿期货回测平台,使用方法可以参考期货策略API文档。

  3主要CTA策略实证研究

  3.1 DualThrust策略

  我们在前文当中已经对Dual Thrust 策略进行了简单的介绍。在Dual Thrust 系统中有两个主要参数k1、k2,是昨日波动幅度的倍数,分别决定了上轨线和下轨线与当日开盘价的差距,显然地,如果k1、k2增大时,上下轨线的距离也会变大,直至很难再有触发生成信号的条件。而这种策略实际抓取的是上轨和下轨之外的趋势部分的收益,所以反之如果上轨和下轨之间的距离非常小,就会降低潜在的趋势性收益反而提高了交易次数和交易成本。因为每一次的平仓反转做多或做空实际就意味着该笔交易的收益为负,所以尤其对于震荡型行情来说,就会使得整体的收益表现变差。

  3.1.1 策略未进行优化时的参数选择

  正因为k1和k2的不同大小而使得上下轨线的位置也产生变化,触发产生信号的时间和价格也因此不同,而不同的期货品种所适合的参数也表现不一。为了体现出Dual Thrust 策略的历史表现,我们以全样本数据集进行样本内测试。

  年化收益:

187804864.jpg
2017-2-8 09:09


最大回撤:

187804865.jpg
2017-2-8 09:09


夏普:

187804866.jpg
2017-2-8 09:09


热力图:

187804867.jpg
2017-2-8 09:09


3.1.2 ATR过滤优化

  前文提到了如果市场处于平稳的震荡整理行情时或者Dual Thrust的两个参数值都较小的时候,就会容易多次触发产生开平仓的信号,反而获取不到轨线之外的趋势收益部分,这时Dual Thrust的表现就变得很差。所以,我们就应该在每日回测时先对近期市场行情波动进行一次考察,如果市场波动过小,表明市场近期没有较明显的行情,而是处于震荡整理的态势,那么我们就越过当天不再进行任何操作;如果市场近期波动较大,而实证研究告诉我们金融市场具有波动率簇集的程式化事实特征,即表明大波动行情后面常常也会跟随较大的波动,所以这时我们应选择抓住这样由波动性带来的风险收益。

  如何量化近期市场波动呢?ATR(平均真实波动幅度)便是这样一种可以衡量市场波动情况的指标。需要注意的是,ATR并不能反映行情的趋势程度或者趋势持续状态,而只能对市场行情的波动性有所反映,不管是上涨区间还是下跌区间。如果我们采用ATR指标来对回测时的交易行为进行过滤的话,那么该指标是否真实有效呢?

  这里把ATR的触发条件设为5,当过去20期ATR值超过5时,才能进行下一步的操作。

  回测结果如下:


187804868.jpg
2017-2-8 09:09

  从结果来看没有太多变化。

  3.1.3 止盈止损优化

  至此,我们都暂未考虑止盈止损对策略回测结果的影响。尽管在某些参数组合中,最大回撤率被控制得很好,但仍然无法避免在某些时期连续的大幅度回撤。所以,考虑加入止盈止损方法对该策略进一步优化。

  在未进行止盈止损优化之前,原始的日内交易策略所采用的其实是持有至收盘(收盘前10-15分钟平仓)的方式,但这种出市的方式的弊端就是不能锁住潜在的高收益,也使得亏损的机会增加。而良好的主动出市策略,不仅能锁住利益,而且也能及时有效地减少损失,即真正地做到赢大亏小。与研报不同,我设置的止盈方法是固定比例的止盈,即当当前的价格超过开仓价格一定比例后进行相应的止盈止损。仍以螺纹钢为例,在之前所得的“最优”参数组合的条件下,在进行止盈止损的条件下进行回测,这次我把回测时间延长至2015年6月1日。

  把未止盈止损与ATR+止盈止损优化的策略进行对比分析

187804869.jpg
2017-2-8 09:09

  未优化:年化收益: 0.2403 ; 最大回撤: 0.0628 ; 夏普比率: 1.8462

  优化后: 年化收益: 0.2317 ; 最大回撤: 0.0402 ; 夏普比率: 1.9403

  可以看到,进行ATR+止盈止损优化后,虽然年化收益有轻微的减少,但是却降低了回撤,提高了夏普比率,所以整体来看还是具有一定的有效性。

  3.1.4 部分品种的回测表现

  沪铜


187804870.jpg
2017-2-8 09:09

  未优化:年化收益: 0.5752 ; 最大回撤: 0.0997 ; 夏普比率: 3.0238

  优化后: 年化收益: 0.4971 ; 最大回撤: 0.0766 ; 夏普比率: 2.3992

  焦炭


187804871.jpg
2017-2-8 09:09

  未优化:年化收益: 0.0886 ; 最大回撤: 0.1915 ; 夏普比率: 0.2584

  优化后: 年化收益: 0.0888 ; 最大回撤: 0.0914 ; 夏普比率: 0.3639

  焦炭今年行情这么好,Dual Thrust居然赚不到钱,也有可能是代码不对!但从结果看来这个策略并不是对所有品种都有效,难道是螺纹钢的最优参数却不是其他品种最优的参数,有品种差异?

  3.1.5 推进分析

  思想就是用前一期最优的参数来代入当前期的策略中,不断的向前推进,日后有时间在实现。

  3.2 R-Break策略

  R-Breaker策略与Dual Thrust最大的不同在于它除了趋势交易外,还有反转操作。这种策略根据前一个交易日的最高价、最低价和收盘价通过一定的计算方式得到6个不同的价位,模拟出了价格运动的支撑位、阻力位。R-Breaker策略明确给出了在趋势建立的时候的开仓条件,以及当趋势恶化、行情不利的时候的反转操作的条件。

  表现如下:


187804872.jpg
2017-2-8 09:09

  在塑料主力上表现很差。

  3.3 菲阿里四价策略

  菲阿里四价策略本身也是一个趋势突破型的策略,但是策略的突破买入卖出条件更加简单。该策略以昨日行情最高价为今日日内交易的上轨,昨日行情最低价为下轨。如果价格突破上轨,便买入开仓,如果突破下轨,便卖出开仓。显然,这种判断趋势是否存在的条件过于简单,在市场波动剧烈的情况下不是十分有效,回测结果也表明了这点。本文简单的测试了螺纹,糊涂,塑料,橡胶这四个主力期货合约,回测时间从2010年1月1日开始。

  表现如下:


187804873.jpg
2017-2-8 09:09

  沪铜主力在三个策略上表现都还不错。

  空中花园策略

  空中花园本身就已经包含了一定的过滤条件,它只考虑当天开盘的位置是否大幅度的跳空,即高开或低开昨日收盘的1%,所以该策略十分注重在非交易时间段内消息的累积对今天走势的影响。但是,可能正如研报所说的,往往很多情况下市场对消息的反馈会产生相反的效果,从而使得策略表现不好。

  回测结果如下:


187804874.jpg
2017-2-8 09:09

组合测试


  之前曾写过一个单策略多品种的,这次改成多策略多品种的,我也没比较两个序列的相关性而是直接组合,权当提供一种思路。

  回测结果如下:


187804875.jpg
2017-2-8 09:09

    文章来源:微信公众号优矿量化实验室


论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

这里把ATR的触发条件设为5,当过去20期ATR值超过5时,才能进行下一步的操作。

TOP

返回列表