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

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

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

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

如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-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 组合优化 回撤最小_Python进阶量化交易专栏场外篇23-Markowitz实现股票最优组合...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 股票 ...

  2. python爬取论坛付费内容_Python进阶量化交易专栏场外篇20-爬虫抓取股票论坛帖子...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  3. python 股票指标库talib_Python进阶量化交易专栏场外篇19-建立基于TA-Lib的指标库

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  4. python 爬取财经新闻股票_Python进阶量化交易专栏场外篇20-爬虫抓取股票论坛帖子...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  5. python选股票进阶_Python进阶量化交易专栏场外篇27-股票数据的除权和复权

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 在行 ...

  6. python gui插件_Python进阶量化交易专栏场外篇17- GUI控件在回测工具上的添加

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  7. python做excel数据分析带gui_Python进阶量化交易专栏场外篇25-GUI工具实现excel功能...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  8. pb 调用虹软_Python进阶量化交易专栏场外篇12-股票分笔数据跨周期处理

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 在专 ...

  9. Python量化交易实战:获取股票数据并做分析处理

    量化交易(也称自动化交易)是一种应用数学模型帮助投资者进行判断,并且根据计算机程序发送的指令进行交易的投资方式,它极大地减少了投资者情绪波动的影响.量化交易的主要优势如下: 快速检测 客观.理性 自动 ...

最新文章

  1. 2022-2028年中国汽车印制电路板(汽车PCB)产业深度调研及投资前景预测报告
  2. P4113 [HEOI2012]采花 树状数组离线
  3. 985博导给学生改论文,第一篇心态就崩了!
  4. 30 天学习 30 种新技术系列
  5. Chapter7-10_Deep Learning for Question Answering (1/2)
  6. java提取多行嵌套div/div内容的正则表达式_提取某一段div标签之间内容的正则表达式怎么写...
  7. 武器级工具包 Immunity Canvas 7.26 泄露(个人百度网盘)
  8. android psp 模拟器卡,手机PSP游戏闪退或卡顿的解决方法
  9. 小学身高体重测试软件,学生测量身高体重秤,小学体检秤
  10. 查看DDR的频率【学习笔记】
  11. 财帮子,一个非常不错的投资理财社区
  12. 哪款国产ESD二极管可直接替代LC3311CCW?
  13. 我的刻骨铭心的2018——致未来的自己和现在的你
  14. 常见的图像重采样算法
  15. cartographer自动更新地图,2条路径数据合并为1条数据
  16. 真神奇!敲击桌子就能操控iPad或iPhone
  17. 【学习笔记】Python基础入门知识笔记,万字攻略带你走进Python编程
  18. 2014ACM亚洲区域北京邀请赛总结
  19. java基础之重写父类_繁星漫天_新浪博客
  20. 新一代医院信息系统(NGHIS)设计(1)——体系结构篇

热门文章

  1. 【逆向基础】JS逆向入门:小白也可以看懂
  2. 蚂蚁集团最新业绩出炉:净利润同比下降63%,连续三个季度下滑
  3. 关于android手机
  4. 趣味编程题——漏掉的账目(C语言编写)
  5. 【问答机器人】QA机器人排序模型
  6. 最新伤感心情QQ日志:转过身,绝望地放手
  7. 妖媚的伤感QQ日志分享:你给过的伤,我难以忘怀
  8. ufserver文件上传服务器-用来管理你项目中的图片-性能可比Java、Python高十倍不止
  9. 怎么检查服务器虚拟内存,服务器怎么查看虚拟内存
  10. 什么是Xshell? 干啥用的?