楼主: 邢不行
19412 247

[源码分享] 【量化小讲堂-Python、Pandas系列】逆天的反转策略在A股实证   [推广有奖]

助理

学科带头人

59%

还不是VIP/贵宾

-

威望
1
论坛币
40669 个
学术水平
457 点
热心指数
472 点
信用等级
433 点
经验
40416 点
帖子
362
精华
26
在线时间
722 小时
注册时间
2010-4-30
最后登录
2017-10-17

邢不行 在职认证  发表于 2016-5-29 19:59:28 |显示全部楼层
本帖最后由 邢不行 于 2017-5-27 15:17 编辑

引言:

本系列帖子“量化小讲堂”,通过实际案例教初学者使用python、pandas进行金融数据处理,希望能对大家有帮助。

【必读文章】:
《10年400倍策略分享-附视频逐行讲解代码》

【所有系列文章汇总】:http://bbs.pinggu.org/thread-3950124-1-1.html

【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:
《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处

微信:xbx_laoshi,量化交流Q群(快满):438143420,有问题欢迎交流。

文中用到的A股数据可在www.yucezhe.com下载,这里可以下载到所有股票、从上市日起的交易数据、财务数据、分钟数据、分笔数据、逐笔数据等。




【量化小讲堂-Python、Pandas系列】逆天的反转策略在A股实证


---策略简介---


动量策略和反转策略的原理主要是基于股票市场中可能存在的动量效应或反转效应。


所谓动量效应,是指在一段时间内,股票会延续它过去的趋势。过去涨,接下来继续涨的概率比较大,也就是我们常说的强者恒强;过去跌,接下来就更可能继续跌。基于股票动量效应,我们可以通过买入过去收益率高的股票、卖出过去收益率低的股票来构建投资组合,这种构建投资组合的方法叫做动量策略。而反转效应恰好相反,反转效应认为在前一段时间表现较差的股票,在下一阶段反而会出现逆转。即过去一段时间收益率较低的股票在未来的收益率反而会高于过去收益率较高的股票。就像我们常说的超跌反弹。基于反转效应,投资者可以通过买入过去收益率低的股票、卖出过去收益率高的股票来获利,这种利用股价反转效应构造的投资策略称为反转策略。


接下来本文将详细说明两种策略的具体做法。


既然是选股策略,我们首先需要确定目标证券的范围,即确定一个股票池,以后两种策略就从这些股票池中选择股票,比如可以选择A股所有股票作为股票池。


接下来,由于要判断股票在某段时间内表现的好坏,我们要选定一个时间长度作为股票业绩的评价期,通常称为投资组合的排名期,比如可以选择3个月,然后计算所有股票在这3个月的累计收益率作为股票业绩的评价指标。接着,根据排名期计算的累计收益率,对所有股票进行升序或者降序排列,然后等分成若干组,其中累计收益率最大的一组称为赢家组合,累计收益率最小的一组称为输家组合。排名期之后的一段时间(比如1个月)作为赢家组合和输家组合的持有期限,如果持有的是赢家组合,则为动量策略,反之则为反转策略。在持有期结束后重新确定排名期,重复上述过程。


接下来,本文将采用 A股的实际数据,实证检验一下动量策略和反转策略的效果到底怎样。


【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处。)


---实战---


假设我们选择A股市场所有股票作为考虑的目标股票,回测的开始日期为2010年12月31日,结束日期为2015年12月31日(开始结束时间是参数,在程序中可以自行修改),排名期为3个月(也可以自行设置),即从2011年4月1号开始,每月的第一个交易日根据前三个月的累计收益率的排名换仓。


为了使结果更加可靠,本文剔除了在排名期内累计停牌超过(5*排名期月份数)天的股票。比如,如果排名期为3个月,就剔除在这3个月内累计停牌超过15天的股票,接着计算剩下的股票在排名期的累计收益率,然后根据累计收益率按升序排序,取排序后前5%(即累计收益率最低的5%)的股票作为反转策略的股票组合,后5%(即累计收益率最高的5%)的股票作为动量策略的股票组合。在下个月第一个交易日,剔除掉反转策略股票组合和动量策略股票组合中当天开盘涨停的股票,按等权重持有剩余的股票,持有期为1个月,计算这1个月内股票组合的收益率。下月初再根据前三个月的排名重复上述过程,最终可以得到动量策略和反转策略每天的日收益率曲线,进而计算出相应的资金曲线。


本文希望通过动量策略和反转策略在A股的实证,向大家介绍pandas的以下几个功能的运用:

1. 时间序列重采样resample()函数的用法

2. 数据分组函数groupby()函数的用法

3. 分组计算函数agg()函数的用法


下面上具体的程序。


---程序---


要验证动量策略和反转策略的实际效果,需要A股所有股票的历史交易数据,在www.yucezhe.com可以下载到所有股票历史至今的数据。如下图所示,每一行是每一天的数据:

1.png


数据有以下的字段:
【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】市净率,股价 / 最近期财报每股净资产

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

2.png

3.png

4.png

5.png

6.png

7.png


将数据下载下来,运行代码,可以看到动量策略的年化收益率为-1%,最大回撤达到-61.8%,而反转策略的年化收益为37%,远远超过动量策略,并且最大回撤也比动量策略小很多。和大盘相比,在两者最大回撤差不多的情况下,反转策略的年化收益也远高于同期大盘的年化收益3.9%,说明中国的A股市场存在较为明显的反转效应,反转策略的实际效果要远好于动量策略。

8.png

9.png


其实在国外,惯性策略还是比较有效的,但在A股市场效果不好,可能和中国市场过分炒作有关。而反转策略在中国相当有效,是一个非常好的策略。建议大家可以修改程序中的一些参数,来找到最优化的反转策略。比如可以适当缩小选股范围,比如只在绩优股或者创业板股票中选取。也可以调整计算涨跌幅排序的时间,本文使用3个月,可以试试6个月、1个月。也可以缩短组合持有期。

【python量化课程】想要快速、系统的学习量化知识,可以参与我与论坛合作开设的课程:《python量化投资入门》,我会亲自授课,随问随答。参与课程还可以免费加入我的小密圈,我每天会在圈中分享量化的所见所思,圈子介绍点击此处。)



之后会讲的内容:



  • 以均线策略为基础,从头到尾教大家如何使用Python编写一个完整的策略


关于《量化小讲堂》之后想看的内容,或者相关问题,可以加我微信xbx_laoshi、Q群(快满):438143420沟通。


附件中是Python程序文件,免费,回复可见。觉得文章内容有帮助的话,顶贴是最好的鼓励!



本帖隐藏的内容

动量和反转策略.zip (177.45 KB)





支持楼主:购买VIP购买贵宾 购买后,论坛将奖励 10 元论坛资金给楼主,以表示您对TA发好贴的支持
 
载入中......
10.jpg

动量和反转策略.rar

12.14 KB

已有 5 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
kongqingbao280 + 40 + 1 + 3 精彩帖子
guo.bailing + 100 + 1 + 1 + 1 精彩帖子
accumulation + 100 + 1 + 1 + 1 精彩帖子
hong142101 + 1 + 1 + 1 精彩帖子
fantuanxiaot + 100 + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 340  论坛币 + 100  学术水平 + 9  热心指数 + 11  信用等级 + 8   查看全部评分

本帖被以下文库推荐

不管去哪里 只要在路上
stata SPSS
邢不行 在职认证  发表于 2016-5-30 08:57:53 |显示全部楼层
沙发~~~~~~
已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 88 + 18 精彩帖子

总评分: 经验 + 88  论坛币 + 18   查看全部评分

回复

使用道具 举报

qcg_bj 发表于 2016-5-30 10:22:17 |显示全部楼层
逆天的反转策略在A股实证
回复

使用道具 举报

rayraul 发表于 2016-5-30 14:39:30 |显示全部楼层
必须支持,干货好文
回复

使用道具 举报

alliezh 发表于 2016-5-30 19:36:38 |显示全部楼层
谢谢分享
回复

使用道具 举报

nsm120 发表于 2016-5-30 20:00:35 |显示全部楼层
人才,又是个牛策略
回复

使用道具 举报

mag7777 发表于 2016-5-30 23:27:49 |显示全部楼层
谢谢分享,就是说低吸比较好
回复

使用道具 举报

tiankaicomcom 发表于 2016-5-31 01:36:04 来自手机 |显示全部楼层
邢不行 发表于 2016-5-29 19:59
引言:本系列帖子“量化小讲堂”,通过实际的案例让大家知道如何使用Python、pandas进行金融数据处理。帖子 ...
牛逼
回复

使用道具 举报

zhjnxng 发表于 2016-5-31 13:08:09 |显示全部楼层
谢谢楼主分享,量化交易
回复

使用道具 举报

liud027 发表于 2016-5-31 14:36:24 |显示全部楼层
很好的策略。学习中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2017-10-18 08:14