自学量化投资之旅-计算股票的复权价

在学习策略的开发之前,有一个必须要做的事,那就是对股票价格进行复权。tushare有提供复权数据的,不过鉴于很多软件对于复权处理都存在一些问题,(不知道tushare是否和其他的软件不一样,欢迎指正),这里决定按照股票的自己对股票的复权价进行处理。

首先看下下载的股票数据。

 

pct_chg:真实涨跌幅(复权后的涨跌幅)

首先利用真是涨跌幅计算除复权因子,复权因子可以理解1乘于累计涨跌幅。其次应该知道 某日后复权收盘价/首日收盘价 = 后复权因子/首日复权因子 = 固定值,所以某日后复权收盘价 =  (后复权因子/首日复权因子)*首日收盘价。

前复权的计算公式则为:前复权首日收盘价 = (首日复权因子/某日前复权因子)*某日前复权收盘价。

注意:pct_chg没有带%,计算时需要乘于0.01

def cal_recover_price(data, recover_type='后复权'):
    '''
    计算股票的复权数据
    :param data: 股票数据
    :param market_code: 市场标识+股票代码
    :param type: ‘前复权’ or ‘后复权’
    :return: df添加['复权价', '复权open', '复权high', '复权low']
    '''

    # 计算复权因子
    recovertype = {'前复权':-1, '后复权':0}
    price1 = data['close'].iloc[recovertype[recover_type]]
    data['复权因子'] = (data['pct_chg']*0.01+1).cumprod()
    data.fillna(1, inplace=True)
    price2 = data['复权因子'].iloc[recovertype[recover_type]]
    data['复权close'] = data['close']*(price1/price2)

    # 计算复权open、high、low
    cal_price = ['open', 'high', 'low']
    for p in cal_price:
        data['复权'+p] = data['复权close']/(data['close']/data[p])

    return data.drop(labels='复权因子', axis=1)

这里我拿sh000001的数据运行看一下效果。

完美!那么数据的问题算是基本解决了,接下来就讲正式开始研究基于日线的数据。

本篇代码参考自:https://blog.csdn.net/xingbuxing_py/article/details/109615874?spm=1001.2014.3001.5501

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值