A股复权计算_前复权数据计算_终结章

目录

前置:

计算方法推导

数据:

代码: 

视频:


前置:

1 本系列将以 “A股复权计算_” 开头放置在“随想”专栏
2 权息数据结合 “PostgreSQL_” 系列博文中的股票未复权数据,可以自行计算复权日数据

计算方法推导

https://www.tdx.com.cn/products/helpfile/tdxw/
通达信计算方法:(从除权除息的前一日开始往前复权 不含除权除息日)
前复权:复权后的价格值=(复权前的价格-每股分红现金+配股比例*配股价格)/(1+配股比例+送股比例)

公式转换:

复权后价格 = 

复权前的价格/(1+配股比例+送股比例)          
-每股分红现金/(1+配股比例+送股比例)
+(配股比例*配股价格)/(1+配股比例+送股比例)

=》是一元一次方程 y = ax + b

y复权后价格
x复权前的价格
a1/(1+配股比例+送股比例)
b (配股比例*配股价格-每股分红现金)/(1+配股比例+送股比例)

数据:

 未复权日数据(在“PostgreSQL_"开头的系列博文中获取)

权息数据(在本系列前面的博文中获取)

 

代码: 

def temp_001():
    pre_dir = r'E:/temp005/'
    df_daily = pd.read_excel(pre_dir+'600584.xlsx',dtype={'ticker':str},engine='openpyxl')
    df_00 = pd.read_excel(pre_dir+'000.xlsx',dtype={'ticker':str},engine='openpyxl')
    df_00['a'] = 1/(1+df_00['perShareTransRadio']+df_00['allotmentRatio'])
    df_00['b'] = (df_00['allotmentRatio']*df_00['allotmentPrice']-df_00['perCashDiv'])/(1+df_00['perShareTransRadio']+df_00['allotmentRatio'])
    df_00['o_date'] = pd.to_datetime(df_00['exDate'])

    df_daily['o_date'] = pd.to_datetime(df_daily['tradeDate'])
    df_daily.sort_values(by='o_date',ascending=True,inplace=True)
    df_00.sort_values(by='o_date',ascending=True,inplace=True)
    for i,row in df_00.iterrows():
        exDate = row['exDate']
        df_daily.loc[df_daily['o_date']<exDate,'closePrice'] = df_daily['closePrice']*row['a']+row['b']
        pass
    df_daily = df_daily.loc[:,['tradeDate','closePrice']]
    df_daily.to_excel(pre_dir + '001.xlsx',engine='openpyxl')
    pass

视频:

https://www.bilibili.com/video/BV1yTZmYdEYm/
https://www.bilibili.com/video/BV1CuZmYsEWU/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值