股票量化学习——复权因子计算
·
'''
###学习笔记(20220124)
## 复权价的计算
1.正常情况下“实收=前收”,但有派红分息时两者不等
2,算出“实收”和“前收”的增幅比值,累乘出“复权因子”,即1元从开始至N行应该是多少元
2. 按“实收/因子“的比值,前复权比尾,后复权比头
## 前收的计算
1. 推导过程
df[因子2】=df[因子1】*df[收盘2】/df【前收盘2】
df[因子3】=df[因子2】*df[收盘3]/df【前收盘3】
df[后复价n]/df[收盘0】=df【因子n]/df【因子0】 df【因子n]/df[因子n-1】=df[收盘n]/df[前收盘n] =df[后复n]/df[收盘0]
df[前收盘n]=df[收盘n]*df[因子n-1]/df[因子n]= df[收盘n]*df【后复n]/df【后复n-1]
2. 公式:本行前收盘=本行实收盘*上行复权价/本行复权价,(前后复权价均可)
3.此法可以使用复权后的价格算出前收盘价,但首行的“前收”“增幅”无法确定,直接设为1即可
'''
import pandas as pd
pd.set_option('expand_frame_repr', False)
pd.set_option('max_rows', 5000)
df = pd.read_csv(filepath_or_buffer='../../*.csv',
skiprows=1,
encoding='gbk')
df['涨幅'] = df['收盘价'] / df['前收盘价'] - 1
df['复权因子'] = (1 + df['涨幅']).cumprod()
print(df.loc[0]['涨幅'])
df['后复权收盘价'] = df.iloc[0]['收盘价'] * df['复权因子'] / df.iloc[0]['复权因子']
df['前复权收盘价'] = df.iloc[-1]['收盘价'] * df['复权因子'] / df.iloc[-1]['复权因子']
# df['新前收盘价'] = df['收盘价']*df['后复权收盘价'].shift(1) / df['后复权收盘价']
df['新前收盘价'] = df['收盘价'] * df['前复权收盘价'].shift(1) / df['前复权收盘价']
# df = df[['收盘价', '前收盘价', '后复权收盘价', '新前收盘价']]
print(df[(df['前收盘价'] != df['收盘价'].shift(1)) | (df['收盘价'] != df['前收盘价'].shift(-1))])
# print(df)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)