搭建量化系统|股票数据的除权和复权
在行情软件中经常会看到除权、复权选项,我们选择不同的选项,软件上股票的价格回相应地转换。
在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种形式的行情数据呢?
除权通常是除权除息的简称,这两种情况会在走势图上出现不同程度的下跌缺口,我们称为除权缺口。
除权除息会使投资者误认为是一个向下跳空缺口,如下所示:
如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-52.49%。同样计算得到的各类指标也是毫无参考价值的。
为了使得走势图能真实反映各股价趋势,除权除息后的价格是要经过复权处理后才有可比性。
拿刚才的例子来说。2016年6月27日新希望收盘价为17.64元,第二天6月28日每十股转增10股,红利5.5元,那么股票除权之后的收盘价应该是(17.64 – 0.55) * 10 / (10 + 10) = 8.55元,6月28日的收盘价是8.38,真实涨跌幅应该是8.38 /8.55 - 1 = -1.99%,而不是软件上显示的-52.49%。
当我们得到股票第一天的价格之后,通过真实涨跌幅的连乘计算,就可以计算出之后每一天的复权价,这个叫做后复权价。同样的,知道了股票最后一天的价格,那么反向处理也就可以计算出之前每一天的价格,这个叫做前复权价。
接下来我们分别用接口获取“新希望”除权、前复权、后复权的行情数据,如下所示:
# "除权"
"""High Low Open Close Volume
Date
2010-01-04 14.38 13.94 13.94 14.17 216924.78
2010-01-05 14.28 13.85 14.22 14.18 107631.41
2010-01-06 14.31 13.87 14.15 13.88 89684.00
2010-01-07 13.97 13.38 13.80 13.48 85856.01
2010-01-08 13.64 13.35 13.43 13.62 58864.09
... ... ... ... ... ...
2019-12-25 18.79 18.44 18.59 18.60 207776.34
2019-12-26 18.76 18.46 18.69 18.60 189935.42
2019-12-27 19.43 18.58 18.74 19.28 504214.70
2019-12-30 19.50 18.92 19.24 19.38 379296.95
2019-12-31 20.31 19.55 19.55 19.95 562873.40[2244 rows x 5 columns]
"""
# "后复权"
"""High Low Open Close Volume
Date
2010-01-04 75.15 72.85 72.85 74.05 216924.78
2010-01-05 74.63 72.38 74.32 74.11 107631.41
2010-01-06 74.79 72.49 73.95 72.54 89684.00
2010-01-07 73.01 69.93 72.12 70.45 85856.01
2010-01-08 71.28 69.77 70.19 71.18 58864.09
... ... ... ... ... ...
2019-12-25 261.18 256.31 258.40 258.54 207776.34
2019-12-26 260.76 256.59 259.79 258.54 189935.42
2019-12-27 270.07 258.26 260.48 267.99 504214.70
2019-12-30 271.05 262.99 267.43 269.38 379296.95
2019-12-31 282.31 271.74 271.74 277.30 562873.40
"""
# "前复权"
"""High Low Open Close Volume
Date
2010-01-04 5.41 5.24 5.24 5.33 216924.78
2010-01-05 5.37 5.21 5.35 5.33 107631.41
2010-01-06 5.38 5.21 5.32 5.22 89684.00
2010-01-07 5.25 5.03 5.19 5.07 85856.01
2010-01-08 5.13 5.02 5.05 5.12 58864.09
... ... ... ... ... ...
2019-12-25 18.79 18.44 18.59 18.60 207776.34
2019-12-26 18.76 18.46 18.69 18.60 189935.42
2019-12-27 19.43 18.58 18.74 19.28 504214.70
2019-12-30 19.50 18.92 19.24 19.38 379296.95
2019-12-31 20.31 19.55 19.55 19.95 562873.40[2431 rows x 5 columns]
"""
初步看在2010年1月的股价,除权和前复权、后复权相差较大。接下来可视化收盘价进行对比:
图中可知他们相差甚大,用除权数据执行策略回测效果会和真实情况相差很多。
于是,当我们获取的数据为除权数据时,我们需要转换为前复权/后复权数据。
这里的关键是获取到刚才提到的真实涨跌幅数据,这样我们可以在该数据的基础上计算出前/后复权因子。我们以前复权为例,如下所示:
"""
trade_date
2019-12-31 0.97
2019-12-30 0.97
2019-12-27 0.93
2019-12-26 0.93
2019-12-25 0.93...
2010-01-08 0.25
2010-01-07 0.26
2010-01-06 0.27
2010-01-05 0.27
2010-01-04 0.26
Name: fd_factor, Length: 2244, dtype: float64
"""
如果未包含涨跌幅数据时,根据除权股价所计算得到的涨跌幅是不正确的。以下pct_chg1为除权股价的涨跌幅,可见与原始的涨跌幅pct_chg差别很大,pct_chg2为差值。
"""pct_chg pct_chg1 pct_chg2
Date
2010-01-04 2.83 NaN NaN
2010-01-05 0.07 7.06e-04 0.07
2010-01-06 -2.12 -2.12e-02 2.10
2010-01-07 -2.88 -2.88e-02 2.85
2010-01-08 1.04 1.04e-02 1.03
... ... ... ...
2019-12-25 0.38 3.78e-03 0.37
2019-12-26 0.00 0.00e+00 0.00
2019-12-27 3.66 3.66e-02 3.62
2019-12-30 0.52 5.19e-03 0.51
2019-12-31 2.94 2.94e-02 2.91[2244 rows x 3 columns]"""
处理完成后,我们再次可视化“新希望”的收盘价数据,如下所示。可见将除权股价复权后,与前复权曲线重合。
对于后复权来说,选取初始价格不同相应计算得到的复权价格也会不一样。比如我们从2010年1月1日那天开始后复权得到的行情数据和收盘价走势图如下所示:
# "后复权"
"""High Low Open Close Volume
Date
2010-01-04 14.38 13.94 13.94 14.17 216924.78
2010-01-05 14.28 13.85 14.22 14.18 107631.41
2010-01-06 14.31 13.87 14.15 13.88 89684.00
2010-01-07 13.97 13.38 13.80 13.48 85856.01
2010-01-08 13.64 13.35 13.43 13.62 58864.09
... ... ... ... ... ...
2019-12-25 49.98 49.05 49.45 49.48 207776.34
2019-12-26 49.90 49.10 49.72 49.48 189935.42
2019-12-27 51.68 49.42 49.85 51.29 504214.70
2019-12-30 51.87 50.33 51.18 51.55 379296.95
2019-12-31 54.03 52.00 52.00 53.07 562873.40[2244 rows x 5 columns]
"""
以上我们介绍了除权和复权的定义,以及它们之间的区别,最重要的是在回测时需要考虑当股票发生拆分,合并或者分红时,股票价格因为除权而受到影响。后续我们会继续推出回测中如何去处理除权的情况。
关于以上内容更多的探讨欢迎大家关注【元宵大师带你用Python量化交易】!!
搭建量化系统|股票数据的除权和复权相关推荐
- Python进阶量化交易专栏场外篇:股票数据的除权和复权
在行情软件中经常会看到除权.复权选项,我们选择不同的选项,软件上股票的价格回相应地转换. 在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种 ...
- QTYX量化系统实战案例分享|短线止盈止损监测202301
前言 我觉得非常有必要和大家分享一些股票量化分析工具QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 关 ...
- QTYX量化系统实战案例分享|箱体形态选股后蓄势介入之202211
前言 我觉得非常有必要和大家分享一些QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. QTYX量化系统实 ...
- 二次开发QTYX量化系统—“飞龙在天”选股报告(20230201)
前言 我们分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统.因此我们提供源码,可以根据自己的风格二次开发. 首先学会使用QTYX的功能,辅助自己进行股票分析,下一 ...
- QTYX量化系统实战案例分享|箱底形态选股后潜伏介入之202209
前言 我觉得非常有必要和大家分享一些QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 首先要声明几点: ...
- 如何搭建量化投资研究系统?(数据篇之财务数据)
股票市场的存在为企业融资提供了一个自由开放的环境,在这里投资者们将资金配置于他们认为的优秀.稳健.有潜力的企业,无数的投资决策汇聚而成的"群体智慧"影响着整体的经济运行,最终促进社 ...
- 搭建股票量化系统步骤
其实搭建股票量化系统步骤笔者将它简单的分为两个步骤: 第1步:有一套成型的交易系统. 手动交易和量化交易其实就是执行的过程不同,不过最基础的交易模型,或者说交易系统都是必须的.但这里有一个问题,不是所 ...
- 如何搭建量化投资研究系统?(工具篇之quantmod)
"工欲善其事,必先利其器". 在 如何搭建量化投资研究系统?(数据篇)中,作者介绍了如何依靠网络爬虫收集整理交易数据,搭建一个金融数据库.在数据的问题基本解决之后,量化投资的研究工 ...
- 我用wxPython搭建GUI量化系统之财务选股工具剔除ST股和次新股
前言 最近交易所公布了上证指数改编方案,其中有两条是和本篇文章相关的. 第一条是围绕ST个股改编.当上市公司变更为ST后一个月将从指数样板中剔除. 第二条围绕新股改编.上证指数新上市的日均市值前十的证 ...
最新文章
- Android隐藏状态栏和标题栏,相当于全屏效果
- 几个shell小脚本
- NXP(I.MX6uLL)DDR3实验——DDR3重要时间参数、时钟配置与原理图简析
- ABP vNext微服务架构详细教程——分布式权限框架(上)
- python中int函数的用法浅析_Python中int()函数的用法浅析
- “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)
- Perl 第三章 操作符
- SQL查询效率注意事项 2011.12.27
- 淘宝美工设计师细说何为天猫透明背景
- HTML页面跳转及表单详解
- 正则表达式详解及示例
- 使用栈(非调用)判断该字符串是否中心对称,如 abccba 即为 中心对称 字符串
- Python 获取微信公众号的图片内容
- github如何写博客
- 第14章 垃圾回收概述
- Excel 链接的图片
- Altium Designer之PCB库部分名称区分
- VS2019调试功能学习
- 三十六 我在软件园的那些日子里
- QSL之创建与管理表