目錄
前置:
計算方法推導
數據:
代碼:?
視頻:
前置:
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/