现在A股市场有沪深主板,创业板,科创板和北交所股票,这个交易所股票的涨跌停板幅度又有不同,例如:沪深主板的st股票为5%,其余涨跌幅为10%,创业板和科创板为20%,北交所股票为30%。所以在量化回测中必不可免的要将这样股票的计算进行分类。注计算时要考虑上市前几天不设涨跌幅,此代码有期限要求,具体代码如下:
def Calculate_the_stock_price_limit(df):
"""
计算每个交易日股票的涨跌停板,股票类型包括主板、创业板、ST股、科创板和北交所上市的股票,
涨跌停要按严格的四舍五入进行计算。
:return:
"""
# 计算涨停板
df.loc[df['股票代码'].str.startswith('sh60'),'涨停板']=df['前收盘价']*1.1
df.loc[df['股票代码'].str.startswith('sh68'),'涨停板'] = df['前收盘价'] * 1.2
df.loc[df['股票代码'].str.startswith('sz0'), '涨停板'] = df['前收盘价'] * 1.1
df.loc[df['股票代码'].str.startswith('sz30')&(df['交易日期'] > pd.to_datetime('2020-08-23')), '涨停板'] = df['前收盘价'] * 1.2
df.loc[df['股票代码'].str.startswith('bj4')|df['股票代码'].str.startswith('bj8'),'涨停板']=df['前收盘价'] * 1.3
df.loc[df['股票名称'].str.startswith('ST'), '涨停板'] = df['前收盘价'] * 1.05
# 涨停板小数点后两位需要精确的四舍五入
df['涨停板']=df['涨停板'].apply(lambda x: float(Decimal(x * 100).quantize(Decimal('1'), roundin
本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读
成为学员