引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。

个人微信:xingbuxing0807,有问题欢迎交流。

简易波动指标(EMV)策略在A股的实证

上一期量化小讲堂向大家介绍了布林带策略在A股的实证效果。本期将以简易波动指标(EMV)策略为例,实证检验一下EMV策略在A股的实际效果。

策略简介

简易波动指标(EMV),是为数不多的考虑价量关系的技术指标。它是根据成交量和人气的变化,构成一个完整的股价系统循环。该指标指示投资者在人气聚集且成交热络的时候买进股票,并且在成交量逐渐展现无力时,卖出股票。具体来说,当股价下跌时,由于买方萎靡退缩,致使成交量逐渐的减少,EMV数值也因而尾随下降,直到股价下跌至某一个合理支撑区,捡便宜货的买单促使成交量再度活跃,EMV 数值于是作相对反应向上攀升。所以EMV 指标的上升下降意味着市场的强弱变化,可以以此作为择时的判断依据。

本文采用的EMV策略的具体规则为:

第一步:计算EM指标的值

其中,$H_i,L_i,VOL_i$分别是第i日股票的最高价、最低价和成交量。

第二步:计算EMV = EM的n日简单移动平均

第三步:计算MAEMV = EMV的m日简单移动平均

第四步:当EMV大于MAEMV时,买入,信号为1;当EMV小于MAEMV时,卖出,信号为-1。

实战

为了检验EMV策略在A股的实际效果,本文将该策略在所有A股都运行一遍。由于策略用不同的参数回测结果也不一样,因此对每只股票回测时都遍历一遍参数,选择使超额收益率最大的参数作为该股票的最优参数。具体步骤如下:

一、遍历数据文件夹中所有股票文件的文件名,得到股票代码列表

用python提取股票历史数据文件夹下每个股票对应的文件名(即股票代码)并存放到一个列表里,这样就得到了所有A股的代码列表。

接着遍历股票代码的列表,读取每只股票的历史数据。

二、计算股票的后复权价格

在读取某只股票的历史数据后,为了回测结果的可靠性,本文重新计算了复权后的开盘价、收盘价、最高价和最低价,后面计算指标值和涨跌幅都以复权后的数据为基础。有些上市不久的股票由于时间太短可能不具有代表性,因此本文在运行策略之前会先判断该股票上市至今的交易天数,剔除掉上市不到1年半的股票。

三、遍历参数进行回测

接着就是计算EMV指标并给出每天的信号了,在计算EMV和MAEMV时本文用到参数范围分别是n取16到26,间隔为2,m取20到25,间隔为1。即遍历该范围内的所有参数组合,每一参数组都会输出对应的每天的信号,根据买卖信号,可以得到每天的仓位,进而可以得到资金曲线及相关的回测指标(相关内容可参考【邢不行|量化小讲堂系列15-Python量化入门】逆天的反转策略在A 股实证)。在得到所有参数的回测结果后,根据超额收益率大小进行排序,选择使超额收益最大的参数作为该股票的最优参数,并将相应数据存入csv文件。

最后,在遍历完所有A股后,我们可以得到每只股票在最优参数组下使用EMV策略的回测结果,并和股票的年化收益及最大回撤做了一下对比。

本文希望通过对EMV策略的实际操作,向大家介绍pandas的以下几个功能的运用:

1. 移动标准差函数rolling_std()函数的用法

2. 时间序列超前滞后函数shift()函数的用法

3. 空值填充函数fillna()函数的用法

下面上具体的程序。

程序

要运行EMV策略,需要所有A股的历史交易数据,在www.yucezhe.com可以下载到所有股票历史至今的数据。如下图所示,每一行是每一天的数据:

数据有以下的字段:

【code】股票的代码,上证股票以sh开头,深证股票以sz开头

【date】交易日期

【open】开盘价

【high】最高价

【low】最低价

【close】收盘价

【change】涨跌幅,复权之后的真实涨跌幅,保证准确

【volume】成交量

【money】成交额

【traded_market_value】流通市值

【market_value】总市值

【turnover】换手率,成交量/流通股本

【adjust_price】后复权价,复权开始时间为股票上市日,精确到小数点后10位

【report_date】最近一期财务报告实际发布的日期

【report_type】最近一期财务报告的类型,3-31对应一季报,6-30对应半年报,9-30对应三季报,12-31对应年报

【PE_TTM】最近12个月市盈率,股价 / 最近12个月归属母公司的每股收益TTM

【PS_TTM】最近12个月市销率, 股价 / 最近12个月每股营业收入

【PC_TTM】最近12个月市现率, 股价 / 最近12个月每股经营现金流

【PB】市净率,股价 / 最近期财报每股净资产

下面是代码的截图,代码里面有详细的注释,有问题可以留言,附件中有程序的源码,回复即可下载。

这是最后回测结果的部分截图:

运行该策略的一共有2607只股票,其中,策略年化收益大于股票本身年化收益的有1950只个股,占比大概为74.8%,而年化收益除以最大回撤绝对值能超过股票本身的有2304只个股,大概占88.4%,总的来说EMV策略的效果还不错。大家有其他一些技术指标也可以尝试一下,看看效果如何,只需要将第一部分信号产生方式改成自己的策略逻辑就可以了。

对本文研究有自己的想法的朋友,欢迎在评论区留言。关于文中的代码、数据,以及下期《量化小讲堂》想了解的内容,也可以加我个人微信xingbuxing0807交流。

如果你想入门量化,但是始终找不到方向,可以加入我的知识星球。我会在里面解答你的问题,分享我的感悟,不论是投资、技术,还是职业选择、思维方式。

-- 学习和成长从来都不是一个人的事 --

https://t.zsxq.com/VbMrjYb (二维码自动识别)

python中shift函数rolling_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略实证...相关推荐

  1. python入门指标_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略在A股的实证...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用Python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 个人微信:xingbx ...

  2. 【邢不行|量化小讲堂系列19-Python量化入门】平均趋向指标(ADX)策略在A股的实证

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  3. matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]: [邢不 ...

  4. 【邢不行|量化小讲堂系列44-实战篇】历年排名前10的基金,在第2年表现如何?Python告诉你答案

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  5. 【邢不行|量化小讲堂系列46-实战篇】用Python验证A股名言:跳空必回补...吗?【附代码】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  6. 【邢不行|量化小讲堂系列56-实战篇】量化策略回测表现好,但实盘却很差?可能是底层数据就错啦!

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章] [邢不行 ...

  7. 【邢不行|量化小讲堂系列40-Python量化入门】为什么我推荐使用Anaconda

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  8. 【邢不行|量化小讲堂系列03-Python量化入门】如何安装pandas、anaconda(最新教程、保证可用)

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  9. 【邢不行|量化小讲堂系列45-实战篇】关于股票市值:99%投资者不知道的坑,你知道吗?

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

最新文章

  1. 数据清洗指南完整分享
  2. 教你 4 步搭建弹性可扩展的 WebAPI
  3. mapreduce运行模式
  4. kali Linux 安装
  5. 基于python的文件处理
  6. shell学习之循环命令
  7. python中模运算_Python中的模运算
  8. 上网痕迹查询助手Viewurl 2017
  9. MATLAB 结构矩阵和单元矩阵
  10. linux视频播放器安装程序,新手求助自带视频播放器安装问题
  11. org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ui was unable to load class org.ecli
  12. 风之谷mobi-宫崎骏漫画kindle7本
  13. node.js 腾讯镜像站_史上最强Sx05RE游戏整合镜像发布!FBA4ARM永久闭源并停止发布!...
  14. mini-vue之组件的实现和渲染流程 以及局部和全局组件建立的联系
  15. 各大浏览器兼容性报告 IE、FF、Safari、OP不同浏览器兼容报告
  16. SSL、openSSL、CA
  17. js正则匹配以{开头,以}结尾怎么写?
  18. 七月算法机器学习笔记5 -- 特征工程
  19. 【web前端】pc网页适配移动网页和css布局之间的矛与盾
  20. java jsp eq_javaWeb核心技术第九篇之JSP

热门文章

  1. 《深入体验 飞鸽传书 开发内幕 核心基础》
  2. 如何自定义MFC的窗口类名
  3. 利用C++Builder自定义Windows窗体“系统菜单”
  4. 10个经典的C语言面试基础算法及代码
  5. 离散中多重组合是指_数学系离散数学的几大核心领域
  6. ps如何修改图片大小尺寸_PS常用操作 | 图片的裁剪、拼接、尺寸调整... ...
  7. python中的颜色_Python中常见颜色记录
  8. 送书 | 人类细胞图谱计划发起人Aviv Regev博士讲单细胞基因组学
  9. 本地安装UCSC基因组浏览器
  10. 读书精要《从一到无穷大》