tushare中没有在指定日期条件下判断股票是否是st,只有直接通过stock_basic获取当前的状态是否是st。但是我们在做量化策略回测时,选股通常要过滤当时股票是否处于st状态。
下面将定义一个函数实现指定日期股票是否ST,借助Tushare的股票更名函数来实现。
具体代码如下:
#stock_code = 'xxxxxx.SH'
#target_date = '20200830'
#若为ST,返回True;否则返回False
def is_st(stock_code, target_date):
target_date = datetime.strptime(target_date, '%Y%m%d')
df = pro.namechange(ts_code=stock_code, fields='ts_code,name,start_date,end_date,change_reason')
df = df[df.name.str.contains('ST')]
st_dates = []
for i in range(len(df)):
sds = df.iloc[i, 2]
eds = df.iloc[i, 3]
sd = datetime.strptime(sds, '%Y%m%d')
if eds == None:
ed = datetime.now()
else:
ed = datetime.strptime(eds, '%Y%m%d')
print(sd, ed)
if (target_date - sd).days >= 0 and (target_date -ed).days <= 0:
return True
return False
ps:
1、公众号实时查询股票涨幅,无需打开交易软件,方便查看;
2、量化知识和策略分享。
请关注“量化之窗”公众号,如有疑问,请在文章下方留言,欢迎使用!