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

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

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

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

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

如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-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进阶量化交易专栏场外篇27-股票数据的除权和复权相关推荐

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

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

  2. python 组合优化 回撤最小_Python进阶量化交易专栏场外篇23-Markowitz实现股票最优组合...

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. python应用于期货_Python期货量化交易基础教程(17)

    16.14.异步任务: 16.14.1.使用协程任务: 函数create_task()用来创建协程任务,并将任务加入事件循环以实现异步并发. wait_update()不能用在协程中,若在协程中等待业 ...

最新文章

  1. 代码规范性与品质问题~
  2. 【数据结构】邻接矩阵及其实现
  3. zigbee的路由器能分配网络地址吗_真核细胞无丝分裂能将核DNA精准的平均分配到两个子细胞中吗?...
  4. 解决: 网站访问报错 AccessDenied (阿里云 OSS + CDN )
  5. Git 日常开发常用命令
  6. 萌新的Python练习实例100例(二)根据企业的利润,计算企业的方法奖金
  7. linux mint 16 安装chrome 浏览器
  8. NLP学习02--卷积神经网络CNN
  9. HDU 1196 ( Lowest Bit )
  10. 智联招聘基于Apache Pulsar打造企业级事件中心
  11. Linux下使用libevent库实现服务器端编程
  12. 【生信技能树】GEO数据库挖掘 P7 6差异分析
  13. 计算机类专业学习难度排行,大学最难学的十大专业排名
  14. spring boot的 banner
  15. ArcToolbox工具名英汉对应
  16. java调用dll 指针参数_java调用c dll,指针参数和结构体参数搞定 | 学步园
  17. wince模拟器上网_wince5.0模拟器下载
  18. 双粗虚线中间一条实线_马路上实线两边有很粗的虚线(中间实线或虚线两边还有很粗的虚线是啥意思)...
  19. Windows内网协议学习Kerberos篇之PAC
  20. 六行python代码的爱心曲线_6行python代码的爱心线

热门文章

  1. AIDE-Libgdx导入Box2d
  2. python 70行完成requests抓取csdn阅读量.
  3. ZZULIOJ--1261: 小媛在努力
  4. vue进度条组件_ins风格进度栏的Vue组件
  5. python课后题答案第三章_python程序设计基础课后习题答案(电子版,可复制)第三章...
  6. Android TV Menu 3D星体旋转效果
  7. 安利一个Visual Studio插件 Visual Assist 小番茄
  8. 机器人 c语言编程题,机器人机器人小高试题模拟题
  9. 2020.8.5课堂笔记(多线程)
  10. Flink学习笔记(八):flink热词统计