得到大智慧的除权数据琢磨了好些日子,最后发现还是用Pandas来解决是最便捷的,后复权还没做,先在这里做个笔记,备忘。

以股票600725为例,除权数据赋予变量ea,数据为dataframe格式,结构如下:

present  bonus  price  rationed

date

2016-12-28     10.0   0.00    0.0       0.0

2012-06-04      0.0   0.50    0.0       0.0

2011-05-20      0.0   1.00    0.0       0.0

2010-05-13      8.0   0.23    0.0       0.0

2009-05-15      0.0   2.00    0.0       0.0

2008-04-09      0.0   3.00    0.0       0.0

2007-04-12      0.0   1.00    0.0       0.0

2006-05-22      0.0   1.00    0.0       0.0

2006-02-10      3.5   0.00    0.0       0.0

2005-03-28      5.0   0.50    0.0       0.0

2003-03-26      0.0   2.00    0.0       0.0

2002-04-15      0.0   2.00    0.0       0.0

1997-06-05      0.0   2.00    0.0       0.0

如果做2016年11月1日到12月31日的复权,则对数据做切片:

ea = ea.ix[datetime.datetime(2016,12,31,0,0,0):datetime.datetime(2016,11,1,0,0,0)]

这样除权数据就只剩一条了:

present  bonus  price  rationed

date

2016-12-28     10.0    0.0    0.0       0.0

接着取出2016年11月1日到12月31日期间600725的日K数据赋予变量df,同样是dataframe格式,虽然我这里现在只需要一条除权数据,但做成循环更好一些,拿出每条除权数据去计算。里面再嵌套K线数据的字段循环,完成所有字段的前复权处理:

for key,val in ea.iterrows():

date = key - datetime.timedelta(days=1)

for field in df.columns.values:

if field != 'volume' and field != 'amount':

df.ix[date:,field] -= val.bonus/10

df.ix[date:,field] += val.price*(val.rationed/10)

df.ix[date:,field] /= 1 + val.present/10 + val.rationed/10

PS:交易量和交易金额不需要做复权,所以加了个判断排除掉。后复权公式有点不同,但方法是类似的,方法上需要注意的就是时间切片这个问题。另外我喜欢用数据倒序使用,所以在前复权时key需要减一天,如果是正序是不用的。另在动态的情况下,对于除权数据的切片可以使用K线数据的头尾日期去切片,切完之后再做处理节约计算机资源。

matlab 复权数据,用Pandas计算前复权数据相关推荐

  1. matlab 主曲线,基于粒计算的复杂数据多粒度主曲线提取算法

    引言 主曲线是第一主成分的非线性推广[,第一主成分是对数据集的一维线性最优描述.主曲线通过将高维数据映射到嵌入在高维空间中的低维流形,以一种新的方式表示数据,使数据分析任务更容易.更准确.由主曲线定义 ...

  2. Python pandas 计算行/列数据之和

    import pandas as pd import numpy as np df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh& ...

  3. 当网页数据到达用户计算机时 转换步骤是,当网页数据到达用户计算机时,数据进行转换步骤是()...

    的是下列错误说法,当网达用的程宣告序判决关于. ,页数证气血两虚. 阻急性肠梗,据到进行证肠腑热结. 阻急性肠梗,户计证水结湿阻. 别行舶吨舶外国对于香港门特海关已征政区籍船.算机时数据澳收船税的,内 ...

  4. python逐行读取数据_python – Pandas按行读取数据

    通常,数据以列为变量的形式呈现,但是,例如,我在.txt文件中有类似的东西 Data1,1,2,3,4,5 Data2,3,1,4 我可以使用pandas这样的方式构建数据框,就像我从中获得的一样 d ...

  5. EasyUI的datagrid删除后一页所有数据不自动显示前页数据

    今天发现一个关于easyui的问题,一个用datagrid做的列表页面,删除最后一页所有数据后,发现刷新后列表为空,页码仍是这一页,正确的效果应该是加载上一页数据.于是看了代码,发现确认删除是会通过$ ...

  6. 前复权还是后复权,你真的用对了吗?

    提到复权,炒股的小伙伴一定很熟悉.由于股票经常发生派息.配股.分拆或合并等事件,使得股价出现缺口,复权就是用来填补缺口的,分为前复权和后复权两种方法. 前复权保持当前价格不变,对历史价格进行增减,使得 ...

  7. 【量化交易】股票价格前复权与后复权的区别以及注意事项

    时不时就会看到到底是用股票前复权还是后复权价格的讨论,比如下面就是一个很经典的问法: "我用前复权价格计算指标的时候,发现会出现负价格,就没法取log了,应该是分红太多导致的,请问这种怎么处 ...

  8. matlab如何导入多文本数据,将文本文件中的混合数据导入表

    样本文件概述 样本文件 outages.csv 包含表示美国电力中断的数据.文件的前几行如下: Region,OutageTime,Loss,Customers,RestorationTime,Cau ...

  9. OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)

    2014-06-26 Created By BaoXinjian 一.摘要 在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中: 如果不存在改动的数据 ...

  10. 除权、除息、复权、填权、填息、贴权、贴息、含权、含息、前复权、后复权到底什么区别(MD终于明白了用图解释)

    除权.除息.复权.填权.填息.贴权.贴息.含权.含息.前复权.后复权到底谁是谁(MD终于明白了) 最常见常用的是复权,复权相关联的本质事件是为了拆股,原来一股10000块一股,很多人买不起啊,所以拆成 ...

最新文章

  1. 全球及中国制糖行业销售规模与运营态势研究报告2022版
  2. java fangfa_java 集合
  3. Mongodb千万级数据在python下的综合压力测试及应用探讨
  4. 素材网站|设计师下半年的工作流程至少减少了一半...
  5. springcloud工作笔记105---springboot2.x实现优雅的关闭服务
  6. java拦截器_Java拦截器
  7. 在线UTF-8转换成GBK工具
  8. Java学习之AWT绘图“奥运五环”
  9. linux格式化后恢复 vmdk恢复,根据flat.vmdk文件恢复磁盘(完善版)
  10. python12306抢票_Python3.6实现12306火车票自动抢票,并短信和邮件通知
  11. 懒人如何减肥肚子和腰 减腰腹最好的最快方法
  12. SSM+社区线上超市购物系统 毕业设计-附源码211704
  13. TM1637+stm32 HAL库
  14. CCS使用教程07:曲线图形显示工具
  15. python中幂运算_python中幂运算
  16. 02操作符(Operators)操作符
  17. java获取月末日期_Java获取给定日期的月初和月末两个日期
  18. MyBatis-plus的批量插入方式对比分析
  19. Java设计模式 - 建造模式(Builder Pattern)
  20. 微信小程序之画布绘制并管理多张图片

热门文章

  1. 【Markdown简单语法练习】
  2. DDWRT 下设置OPEN×××
  3. 金山篡改浏览器主页问题(改成毒霸网址大全)
  4. qlabel 添加图标_Qt之添加图标
  5. allegro 过孔删除不掉
  6. mysql 删除自定义函数_MySQL学习——操作自定义函数
  7. 百度ueditor实现word图片自动转存
  8. 使用jQuery实现轮播图
  9. adb启动程序命令:adb shell am start
  10. labview压装设备最终代码,基于QMH框架和Machine框架有机结合