在行情软件中经常会看到除权、复权选项,我们选择不同的选项,软件上股票的价格回相应地转换。

在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种形式的行情数据呢?

除权通常是除权除息的简称,这两种情况会在走势图上出现不同程度的下跌缺口,我们称为除权缺口。

除权除息会使投资者误认为是一个向下跳空缺口,如下所示:

如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-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量化交易】!!

搭建量化系统|股票数据的除权和复权相关推荐

  1. Python进阶量化交易专栏场外篇:股票数据的除权和复权

    在行情软件中经常会看到除权.复权选项,我们选择不同的选项,软件上股票的价格回相应地转换. 在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种 ...

  2. QTYX量化系统实战案例分享|短线止盈止损监测202301

    前言 我觉得非常有必要和大家分享一些股票量化分析工具QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 关 ...

  3. QTYX量化系统实战案例分享|箱体形态选股后蓄势介入之202211

    前言 我觉得非常有必要和大家分享一些QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. QTYX量化系统实 ...

  4. 二次开发QTYX量化系统—“飞龙在天”选股报告(20230201)

    前言 我们分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统.因此我们提供源码,可以根据自己的风格二次开发. 首先学会使用QTYX的功能,辅助自己进行股票分析,下一 ...

  5. QTYX量化系统实战案例分享|箱底形态选股后潜伏介入之202209

    前言 我觉得非常有必要和大家分享一些QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 首先要声明几点: ...

  6. 如何搭建量化投资研究系统?(数据篇之财务数据)

    股票市场的存在为企业融资提供了一个自由开放的环境,在这里投资者们将资金配置于他们认为的优秀.稳健.有潜力的企业,无数的投资决策汇聚而成的"群体智慧"影响着整体的经济运行,最终促进社 ...

  7. 搭建股票量化系统步骤

    其实搭建股票量化系统步骤笔者将它简单的分为两个步骤: 第1步:有一套成型的交易系统. 手动交易和量化交易其实就是执行的过程不同,不过最基础的交易模型,或者说交易系统都是必须的.但这里有一个问题,不是所 ...

  8. 如何搭建量化投资研究系统?(工具篇之quantmod)

    "工欲善其事,必先利其器". 在 如何搭建量化投资研究系统?(数据篇)中,作者介绍了如何依靠网络爬虫收集整理交易数据,搭建一个金融数据库.在数据的问题基本解决之后,量化投资的研究工 ...

  9. 我用wxPython搭建GUI量化系统之财务选股工具剔除ST股和次新股

    前言 最近交易所公布了上证指数改编方案,其中有两条是和本篇文章相关的. 第一条是围绕ST个股改编.当上市公司变更为ST后一个月将从指数样板中剔除. 第二条围绕新股改编.上证指数新上市的日均市值前十的证 ...

最新文章

  1. Android隐藏状态栏和标题栏,相当于全屏效果
  2. 几个shell小脚本
  3. NXP(I.MX6uLL)DDR3实验——DDR3重要时间参数、时钟配置与原理图简析
  4. ABP vNext微服务架构详细教程——分布式权限框架(上)
  5. python中int函数的用法浅析_Python中int()函数的用法浅析
  6. “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)
  7. Perl 第三章 操作符
  8. SQL查询效率注意事项 2011.12.27
  9. 淘宝美工设计师细说何为天猫透明背景
  10. HTML页面跳转及表单详解
  11. 正则表达式详解及示例
  12. 使用栈(非调用)判断该字符串是否中心对称,如 abccba 即为 中心对称 字符串
  13. Python 获取微信公众号的图片内容
  14. github如何写博客
  15. 第14章 垃圾回收概述
  16. Excel 链接的图片
  17. Altium Designer之PCB库部分名称区分
  18. VS2019调试功能学习
  19. 三十六 我在软件园的那些日子里
  20. QSL之创建与管理表

热门文章

  1. iOS10 注册极光推送(干货)
  2. vs2013使用QT自带的openGL
  3. Driver和Master交互原理解析,Driver消息循环体的产生
  4. Flex布局及在移动端的应用
  5. 【Pr剪辑】Pr下载链接,基础操作,渲染1080视频,视频导出,音频导出,视频变速和合并
  6. Java Excel 导出多个 sheet
  7. antdpro菜单自定义图标
  8. python字典遍历的几种方式
  9. 什么是接口幂等性?为什么会产生接口幂等性问题?如何保证接口幂等性?
  10. app抓包分析sign