【量化交易01】CTA策略 菲阿里四价+空中花园策略
菲阿里四价+空中花园策略
CTA策略(Commodity Trading Advisor Strategy),称为商品交易顾问策略,又称管理期货策略(Managed Futures),简单理解——CTA策略是指投资于期货市场的策略,这是与投资于股票市场的投资策略的最大不同。它是指由专业管理人投资于期货市场,利用期货市场上升或者下降的趋势获利的一种投资策略。
菲阿里四价、空中花园策略,都是经典的日内趋势突破型的策略。
我使用2015.01.05~2022.10.29的期货主力合约行情数据,对两种策略进行了回测。
一.策略原理
1.菲阿里四价策略
菲阿里四价策略是一种比较简单的趋势型日内交易策略。昨天高点、昨天低点、昨日收盘价、今天开盘价,可并称为菲阿里四价。它由日本期货冠军菲阿里实盘采用的主要突破交易参照系。
菲阿里四价是日内突破策略,所以每日收盘之前都需要进行平仓。该策略的上下轨以及用法如下所示::
- 上轨:昨日高点;
- 下轨:昨日低点;
昨日高点和昨日低点可以视为近期的一个波动范围,该范围的存在一定程度是一种压力线,只有足够的价格上涨或者下跌才会突破前期的高点或者低点。因此突破位置是一个比较好的入场信号,如果突破该波动范围,则证明动能较大,后续走势强度维持较强的概率比较高,因此该策略采用以下开仓方式:
- 价格突破上轨,如果持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;
- 价格跌穿下轨,如果持有多仓,则先平仓,再开空仓;如果没有仓位,则直接开空仓。
2.空中花园策略
空中花园属于日内突破策略。与之前的策略有所不同,空中花园比较看重开盘突破。
开盘时的高开或者低开均说明有大的利好或者利空使得开盘大幅远离昨天的收盘价。开盘突破,是最快的一种入场方式。当然出错的概率也最高。因此为了提高策略的胜率,空中花园策略加了额外的条件,也就是开盘要大幅高开或者大幅低开,形成一个空窗,因此顾名思义称为空中花园,然后再根据是否突破上下轨来进行开仓判断。这样一来,策略的胜率将大大提高,不过由于对高开或者低开的幅度要求过高,一般是超过 1%,因此使 得策略的交易次数可能相对其它策略而言要偏低一些。
日内交易策略,当日收盘平仓; 空中花园在当天高开或低开时使用,即当:
- 开盘价 >= 昨天收盘价*1.01 或
- 开盘价 <= 昨天收盘价*0.99 时;
不满足此条件,则当日不进行交易。
该策略的上下轨分别是:
- 上轨=第一根 K 线的最高价;
- 下轨=第一根 K 线的最低价;
开仓方式与菲阿里四价策略相同:
- 价格突破上轨,如果持有空仓,则先平仓,再开多仓;如果没有仓位,则直接开多仓;
- 价格跌穿下轨,如果持有多仓,则先平仓,再开空仓;如果没有仓位,则直接开空仓。
交易逻辑,实际上是一种当天大幅高开(>1%),搏高开低走;反之,大幅低开(<1%),博低开高走。
二. 数据准备和基本设置
1.数据准备
使用2015.01.05~2022.10.29的期货主力合约行情数据,数据频率为5min.
2.止盈止损优化
我们分别对未进行止盈止损优化和进行止盈止损优化的策略进行回测。
进行止盈止损优化前,原始的日内交易策略所采用的其实是持有至收盘(收盘前 10-15 分钟平仓)的方式,但这种出市的方式的弊端就是不能锁住潜在的高收益,也使得亏损的机会增加。而良好的主动出市策略,不仅能锁住利益,而且也能及时有效地减少损失,即真正地做到赢大亏小。
我采用简单的固定比例的方式进行止盈止损:
- 动态止盈:回撤达到相对于持仓期间内的高点的回撤比例p,平仓止盈;
- 静态止损:回撤达到相对于开仓点位的回撤比例p,平仓止损;
- 止盈止损参数p和q,我们分别测试0.005~0.025范围内的值,从而选出最优的止盈止损参数组合。
3.其他参数设置
回测时的初始资金为100万元,考虑冲击成本和手续费。
冲击成本为万分之2,手续费为万分之0.3。
4.回测指标
- 累计收益率
- 年化收益率
- 年化波动率
- 夏普比率
- 最大回撤
- 收益风险比
- 交易次数
- 胜率
- 盈亏比
三.回测表现
1.菲阿里四价策略
我们不难得出以下结论:
- 菲阿里四价策略对于趋势的判断条件过于简单,在目前的波动性剧烈的市场上面反而变得不是特别有效,也就是说如果要确立趋势的形成,那么其确立条件应该也会很复杂,而不是仅仅通过昨日的最高、最低价就能确立的。而事实也是如此,通过对 16个不同期货品种的历史数据的回测,我们也验证了此推断。止盈止损前后,6个品种里都只有3个累计收益率为正,一半的品种都在亏钱。
- 黄金、螺纹钢、焦炭实现了正的年化收益率,但是铜、天然橡胶、豆粕的年化收益率都为负。
- 不同品种的最优止盈止损优化参数不同,例如,铜的最优止盈止损参数为p=0.015,q=0.005,但是黄金的最优止盈止损参数为p=0.01,q=0.015。
- 加入止盈止损优化后,除豆粕外,其他品种的收益情况均有小幅度提升。说明止盈止损起到了效果。
表1. 不考虑止盈止损优化的菲阿里四价回测结果
表2. 考虑“最优”参数下的止盈止损优化的菲阿里四价回测结果
图1.不同止盈止损参数下,各期货品种的年化收益率热度图
铜主力净值曲线↓
黄金主力净值曲线↓
螺纹钢主力净值曲线↓
天然橡胶主力净值曲线↓
豆粕主力净值曲线↓
焦炭主力净值曲线↓
2.空中花园策略
- 空中花园这种只博取大幅高开或大幅低开行情的策略,有些过于看重非交易时间段内消息的累积对开盘时价位的影响,而实际上很多情况下市场对信息的消化反馈总会产生相反的效果,从而使得这样的以跳空开盘后第一根 k 线的最高最低价作为上下轨并以此判断趋势是否成立的策略的回测结果表现并不是特别地好。6个品种里只有2个实现了正的年化收益率。
- 与菲阿里四价策略相比,空中花园策略的交易次数显著减少,在接近7年的交易过程中,交易次数只有200~300次上下,而且净值曲线呈阶梯状,表明大多数交易日是不符合空中花园策略的使用条件的。
- 铜、黄金实现了正的年化收益率,但是螺纹钢、天然橡胶、豆粕、焦炭的年化收益率都为负。
- 不同品种的最优止盈止损优化参数不同,例如,铜的最优止盈止损参数为p=0.055,q=0.02,但是黄金的最优止盈止损参数为p=0.01,q=0.005。
- 加入止盈止损优化后,除天然橡胶外,其他品种的收益情况均有小幅度提升。说明止盈止损起到了效果。
表3. 不考虑止盈止损优化的空中花园回测结果
表4. 考虑“最优”参数下的止盈止损优化的空中花园回测结果
图2.不同止盈止损参数下,各期货品种的年化收益率热度图
铜主力净值曲线↓
黄金主力净值曲线↓
螺纹钢主力净值曲线↓
天然橡胶主力净值曲线↓
豆粕主力净值曲线↓
焦炭主力净值曲线↓
【量化交易01】CTA策略 菲阿里四价+空中花园策略相关推荐
- 73 [backtrader期货策略]十大经典策略-菲阿里四价(逻辑优化版)
菲阿里四价是经典的日内交易策略,当价格突破前一个交易日的最高点的时候做多,跌破前一个交易日的最低点的时候做空,交易逻辑就是这么简单. 很多流传很广的交易策略往往比较简洁,因为简洁,反而适应能力会好一些 ...
- python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
- python计算最大回撤_Python进阶量化交易场外篇3——最大回撤评价策略风险
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
- Python量化交易05——基于多因子选择和选股策略(随机森林,LGBM)
参考书目:深入浅出Python量化交易实战 在机器学习里面的X叫做特征变量,在统计学里面叫做协变量也叫自变量,在量化投资里面则叫做因子,所谓多因子就是有很多的特征变量. 本次带来的就是多因子模型,并且 ...
- Python量化交易学习笔记(14)——均线交叉策略
本文使用均线交叉策略,对平安银行自2018年1月1日至2020年2月28日的日线数据进行回测分析. 策略会用到短期移动均线及长期移动均线两个技术指标,在backtrader自定义策略init方法中,添 ...
- 量化交易 米筐 案例:市值因子选股策略
案例:市值因子的选股策略 1.结果 获得超额收益 年化 49% 2. 从股票中选择市值小的股票 选定财务数据筛选 进行每日调仓(多因子选股调仓 周期频率会小一些) 3. 代码 估值有关指标 # 在沪深 ...
- 量化交易 聚宽 市场ETF精选轮动策略(模拟交易)
策略流程 回测结果 代码 # 导入函数库 from jqdata import * from six import BytesIO
- 民锋国际期货量化交易策略源代码大全
1.alpha对冲(期货) 投资者在市场交易中面临着系统性风险(即贝塔或Beta.β风险)和非系统性风险(即阿尔法或Alpha.α风险),通过对系统性风险进行度量并将其分离,从而获取超额绝对收益(即阿 ...
- 分享量化交易券商接口的几个经典量化策略
今天我们来一起看一下量化交易券商接口的几个经典量化策略. 量化交易是指从大量的历史数据中筛选出"大概率事件",然后利用大概率之间制定策略,建立模型. 主要采取数学模型替代主观判断的 ...
最新文章
- 《强化学习周刊》第33期:UdeM | 基于不确定性估计的样本高效深度强化学习
- 【Java 集合】Java 集合主要脉络 ( Collection | Map | List | Set )
- 死锁的四个必要条件,及处理方法
- Cookie和会话Session
- java中同步嵌套引起的死锁事例代码
- PHP中的Array类型其实是Hashtable
- Clojure 学习入门(12)- map/pmap
- java中如何进入代码块_Java中的匿名代码块
- layui 之 laypage分页插件
- 中龙电力什么理财产品预期收益高又安全?介绍四类理财产品
- 在python中用于获取用户输入的是-在Python中,用于获取用户输入的函数是
- 众里寻他千百度:找网红算法
- Web网页设计-盒子模型
- css制作自动旋转的钟表
- mysql中常用的三种插入数据的语句
- ASCII字符代码表,python 生成字母a到z字母,生产倒序列表
- 北京十一中学,小型数控机床培训,让学生自己设计加工指尖陀铝
- 在命令行下,如何使用JAD反编译jar文件
- Ansys Zemax / Speos | 关于汽车投影灯解决方案
- 网络篇 GNS 3的介绍05