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

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

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

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

如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-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. 支付宝架构师眼中的高并发架构
  2. IDC评述网:2012年11月全国IDC品牌排行榜
  3. linux下gcc编译conio.h问题
  4. 口的内存映射 stm32f7_STM32F7高速缓存
  5. NOIP2018 退役记
  6. UltraWebGrid控件在开发ASP.NET项目中的使用方法和技巧(转)
  7. 大剑无锋之你了解HTTPS吗?那么它为什么安全?【面试推荐】
  8. Ubuntu使用技巧(一)
  9. python 自动发邮件 Errno61 Connection refused
  10. Java 使用GDAL 读写 shapefile
  11. java中字符 的含义 有什么作用_Java中字符串常见题之String相关讲解
  12. DevExpress使用技巧总结
  13. NodeJs妹子图爬虫
  14. create-react-app脚手架中配置webpack的方法
  15. linux netperf,linux netperf的安装
  16. 基于K-近邻算法的手写数字识别研究
  17. 三种摘要算法的简单介绍
  18. 头条小程序登录40014 bad params
  19. android 9.x MTK平台讯飞输入法重启被卸载
  20. 图像处理与计算机视觉基础相关领域的经典书籍以及论文

热门文章

  1. 区块链之PBFT算法
  2. 如何使用sed进行字符串替换?
  3. 为什么软件测试计划重要性,谈谈“测试计划”这点事
  4. 西门子西门子smart200和V90伺服程序
  5. String的 intern() 说明
  6. 如何挑选合适的办公资源PPT模板?
  7. 金融数字化转型落地实践,腾讯云数据库的三问三答
  8. nonebot2——表情包生成插件升级版
  9. 数据中心网络高可用架构
  10. navicat 表合并查询_MySQL数据表合并去重的简单实现方法