量化投资:第2节 择时策略的优化
来源:互联网 发布:最准彩票预测软件 编辑:程序博客网 时间:2024/05/27 02:29
作者: 阿布
阿布量化版权所有 未经允许 禁止转载
abu量化系统github地址(欢迎+star,你的支持是我更新的动力!)
本节ipython notebook
本节界面操作教程视频播放地址
上一节编写了AbuFactorBuyBreak和AbuFactorSellBreak,做为择时买入策略和择时卖出策略,本节将继续使用这两个策略,
通过混入其它卖出策略来提高优化交易效果。
备注:已将AbuFactorBuyBreak和AbuFactorSellBreak做为abupy内置策略示例因子在项目中,所以本节不重复编写因子,直接从abupy中import因子,如下所示
from abupy import AbuFactorBuyBreak, AbuFactorSellBreak# buy_factors 60日向上突破,42日向上突破两个因子buy_factors = [{'xd': 60, 'class': AbuFactorBuyBreak}, {'xd': 42, 'class': AbuFactorBuyBreak}]# 使用120天向下突破为卖出信号sell_factor1 = {'xd': 120, 'class': AbuFactorSellBreak}
1 基本止盈止损策略
上一节的策略大多数的交易卖出因子都生效了,但效果很不好,量化交易系统一般都会有止盈策略和止损策略。
下面使用abupy中内置的基本止盈止损策略AbuFactorAtrNStop做回测,即使用AbuFactorAtrNStop和AbuFactorSellBreak两个卖出因子策略并行同时生效, 交易结果如下所示
备注:
AbuFactorAtrNStop是真实波幅atr作为最大止盈和最大止损的常数值:
- 当stop_loss_n 乘以 当日atr > 买入价格 - 当日收盘价格:止损卖出,如下止损n = 0.5
- 当stop_win_n 乘以 当日atr < 当日收盘价格 -买入价格:止盈卖出,如下止盈n = 3.0
更多详情请阅读abupy中AbuFactorAtrNStop代码实现
from abupy import AbuFactorAtrNStopfrom abupy import ABuPickTimeExecute, AbuBenchmark, AbuCapital# 趋势跟踪策略止盈要大于止损设置值,这里0.5,3.0sell_factor2 = {'stop_loss_n': 0.5, 'stop_win_n': 3.0, 'class': AbuFactorAtrNStop}# 两个卖出因子策略并行同时生效sell_factors = [sell_factor1, sell_factor2]benchmark = AbuBenchmark()capital = AbuCapital(1000000, benchmark)orders_pd, action_pd, _ = ABuPickTimeExecute.do_symbols_with_same_factors(['usTSLA'], benchmark, buy_factors, sell_factors, capital, show=True)
2. 风险控制止损策略
可以看到效果比之前好多了,下面再加入一些其它卖出策略,量化交易系统中一般都会有风险控制策略,比如当股票今天价格开始剧烈下跌,采取果断平仓措施。
可以使用abupy中内置的风险控制止损策略AbuFactorPreAtrNStop
- 策略中继续使用真实波幅atr作为常数值: 当今日价格下跌幅度 > 当日atr 乘以 pre_atr_n(下跌止损倍数)卖出股票, 本例使用pre_atr_n=1.0
更多详情请阅读abupy中AbuFactorPreAtrNStop代码实现
sell_factors中加入AbuFactorPreAtrNStop卖出因子,三个卖出因子策略并行同时生效:
from abupy import AbuFactorPreAtrNStop# 暴跌止损卖出因子形成dictsell_factor3 = {'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.0}# 三个卖出因子同时生效,组成sell_factorssell_factors = [sell_factor1, sell_factor2, sell_factor3]capital = AbuCapital(1000000, benchmark)orders_pd, action_pd, _ = ABuPickTimeExecute.do_symbols_with_same_factors(['usTSLA'], benchmark, buy_factors, sell_factors, capital, show=True)
如上所示由于使用AbuFactorPreAtrNStop,效果继续变好,有两笔交易通过AbuFactorPreAtrNStop进行卖出,阻止了进一步的交易损失:
3. 利润保护止盈策略
接下来注意下图这笔交易,读者会发现本来有很多盈利的,但是由于止盈没有达到,所以最后变成了亏损
下面通过添加abupy内置的保护盈利的卖出因子AbuFactorCloseAtrNStop来使上图那笔交易获利:
- AbuFactorCloseAtrNStop atr移动止盈策略,当买入股票有一定收益后,如果股价下跌幅度超过close_atr_n乘以当日atr:则保护止盈卖出,如下示例使用close_atr_n=1.5
更多详情请阅读abupy中AbuFactorCloseAtrNStop代码实现
sell_factors加入AbuFactorCloseAtrNStop卖出因子,四个卖出因子策略并行同时生效
from abupy import AbuFactorCloseAtrNStop# 保护止盈卖出因子组成dictsell_factor4 = {'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}# 四个卖出因子同时并行生效sell_factors = [sell_factor1, sell_factor2, sell_factor3, sell_factor4]capital = AbuCapital(1000000, benchmark)orders_pd, action_pd, _ = ABuPickTimeExecute.do_symbols_with_same_factors(['usTSLA'], benchmark, buy_factors, sell_factors, capital, show=True)
从上图交易结果可以看到最终那笔失败的交易也盈利卖出了。
注意:
上面的很多拟合优化操作在实际应用中是不可取的,比如最后的那个使用AbuFactorCloseAtrNStop使交易盈利以及我之后即将讲解的另一些手段使整体交易变好的做法,不应该因为某些特定股票或者特定交易修改参数或者添加因子等方式使结果变好,这样就是过拟合择时交易系统,将会在下一章节来示例如何挑选参数及因子的选择问题,本节内容主要是为了讲解择时系统的示例。
读者可能注意到我在多个卖出因子,还有即将讲到的仓位控制都使用了atr,但请不要误会我不是强调atr有多重要多好,只不过是我想尽量使用一个概念来完成尽可能多的任务,不必反复引入过多的交易概念,因为篇幅有限,且容易引发阅读困难
本节只是示例卖出策略的使用,更多个性化的卖出策略可根据自己的交易买入策略与交易风格自行编写。
abu量化文档目录章节
- 择时策略的开发
- 择时策略的优化
- 滑点策略与交易手续费
- 多支股票择时回测与仓位管理
- 选股策略的开发
- 回测结果的度量
- 寻找策略最优参数和评分
- A股市场的回测
- 港股市场的回测
- 比特币,莱特币的回测
- 期货市场的回测
- 机器学习与比特币示例
- 量化技术分析应用
- 量化相关性分析应用
- 量化交易和搜索引擎
- UMP主裁交易决策
- UMP边裁交易决策
- 自定义裁判决策交易
- 数据源
- A股全市场回测
- A股UMP决策
- 美股全市场回测
- 美股UMP决策
abu量化系统文档教程持续更新中,请关注公众号中的更新提醒。
更多阿布量化量化技术文章
更多关于量化交易相关请阅读《量化交易之路》
更多关于量化交易与机器学习相关请阅读《机器学习之路》
更多关于abu量化系统请关注微信公众号: abu_quant
- 量化投资:第2节 择时策略的优化
- 量化投资:第1节 择时策略的开发
- 量化投资:第5节 选股策略的开发
- 【量化投资】基金择时策略浅析(2)-有择时能力的基金
- 【量化投资】基金择时策略浅析(4) ——参数优化和模型稳定性
- 【量化投资】基金择时策略浅析(1)-基本概念和择时的必要性
- 量化投资策略回测前的准备
- 主要量化投资策略
- 读书笔记:基于遗传算法的量化投资策略的优化与决策
- 量化投资:第6节 回测结果的度量
- 量化投资:第3节 滑点策略与交易手续费
- 量化投资:第7节 寻找策略最优参数和评分
- alpha策略量化投资的实证研究(一)
- alpha策略量化投资的实证研究(二)
- 【量化投资】基金择时策略浅析(3) -实用择时方法
- 计算机的投资:量化投资
- 利用R语言编写量化投资策略
- 量化投资-趋势策略-热卷
- 机器码和字节码
- webstorm/IntelliJ IDEA register
- 2017东北长春第十届国际装备制造业博览会、2017第十三届汽车零部件展览会会刊(参展商名录)
- Python笔记Day1
- Spring IOC
- 量化投资:第2节 择时策略的优化
- css布局
- Codeforces Round #441A+B+C
- iOS 实现赋值粘贴
- EditText弹出输入框,换行变成搜索
- 前端开发:艺术字体ttf资源文件
- 欢迎使用CSDN-markdown编辑器
- struts的日期处理(后台Date或者Timestamp)前台显示
- bzoj 2648 (kdtree模板题)