目录
前置:
计算方法推导
数据:
代码:
视频:
前置:
1 本系列将以 “A股复权计算_” 开头放置在“随想”专栏
2 权息数据结合 “PostgreSQL_” 系列博文中的股票未复权数据,可以自行计算复权日数据
计算方法推导
https://www.tdx.com.cn/products/helpfile/tdxw/
通达信计算方法:(从除权除息的前一日开始往前复权 不含除权除息日)
前复权:复权后的价格值=(复权前的价格-每股分红现金+配股比例*配股价格)/(1+配股比例+送股比例)
公式转换:
复权后价格 =
复权前的价格/(1+配股比例+送股比例)
-每股分红现金/(1+配股比例+送股比例)
+(配股比例*配股价格)/(1+配股比例+送股比例)
=》是一元一次方程 y = ax + b
y | 复权后价格 |
x | 复权前的价格 |
a | 1/(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']passdf_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/