第八篇 关于前复权,后复权和不复权

关键词

复权

最近在看自己的界面效果时,发现一些股票价格大幅下降的情况,比如下图的兆易创新。


找了找原因,原来自己在用baostock下载日K数据的时候,用的是前复权,
http://baostock.com/baostock/index.php/Python_API%E6%96%87%E6%A1%A3#.E8.8E.B7.E5.8F.96.E5.8E.86.E5.8F.B2A.E8.82.A1K.E7.BA.BF.E6.95.B0.E6.8D.AE.EF.BC.9Aquery_history_k_data_plus.28.29
adjustflag:复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权。* BaoStock提供的是涨跌幅复权算法复权因子,具体介绍见:复权因子简介或者BaoStock复权因子简介

在每日更新数据时,为了节约时间,只取当天的数据,这样当天的数据前复权了,但是之前日期的数据用的是上一次复权日的价格,
比如5.6日兆易创新价格是306,5.7日前复权后价格是218,在K线图上就出现了大幅下跌的情况,这个是错的,而且计算各种数据也会出错。

解决方案:使用不复权的方式重新拿到所有的日K数据,同时拿到所有股票的复权信息。

query_adjust_factor()

之后在要进行展示或者计算指标的时候先进行除权动作,再做其他操作。

def getAdjust(adjust, date):
    for i in range(adjust.shape[0]):
        if date >= adjust.loc[i,'date']:
            return adjust.loc[i,'foreadjustfactor']
    return 1

def calculateDayKWithAdjustFactor(daily, factor):
    for i in range(daily.shape[0]):
        forefactor = getAdjust(factor, daily.loc[i,'date'])
        daily.loc[i,'open'] = forefactor * daily.loc[i,'open']
        daily.loc[i,'high'] = forefactor * daily.loc[i,'high']
        daily.loc[i,'low'] = forefactor * daily.loc[i,'low']
        daily.loc[i,'close'] = forefactor * daily.loc[i,'close']
        daily.loc[i,'preclose'] = forefactor * daily.loc[i,'preclose']
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容