问答交流

回测时,如果股票变成ST,不会执行操作

由howie1013创建,最终由howie1013 被浏览 18 用户

问题

2022年的回测002316.SZA,000732.SZA变成了ST,用回测模块回测时,发现买入后不会进行任何操作。


需要加入特定代码去处理

    hold_instruments = list(positions.keys())
    stock_status = context.stock_status[context.stock_status['date'] == today]
    if len(hold_instruments) > 0:
        st_status = stock_status[(stock_status['st_status'] != 0) & (stock_status['instrument'].isin(hold_instruments))]
        st_instruments = st_status['instrument'].tolist()
        for instrument in st_instruments:
            context.order_target(context.symbol(instrument), 0)
            print('%s: 卖出ST %s' % (today, instrument))

解答

是不是 你的测试集有ST股票过滤,所以预测集中就没有这几个票的排序,就忽略了持仓了这几个ST票。能分享下代码吗 我们把这个情况做出样例,也再分析下问题

标签

Python
评论
  • 是不是 你的测试集有ST股票过滤,所以预测集中就没有这几个票的排序,就忽略了持仓了这几个ST票。能分享下代码吗 我们把这个情况做出样例,也再分析下问题
  • 请问代码如何判断某只股票是否是ST? 1\.题主的:stock_status 是怎么来的呢? ```python stock_status = context.stock_status[context.stock_status['date'] == today] if len(hold_instruments) > 0: st_status = stock_status[(stock_status['st_status'] != 0) & (stock_status['instrument'].isin(hold_instruments))] ``` 2\.而看样例,也有问题 (): ``` name_instrument = ranker_prediction[ranker_prediction.instrument==instrument]['name'].values[0] ``` ranker_prediction并没有name属性,没法校验名称, ```python stock_status = context.stock_status[context.stock_status['date'] == today] ``` 麻烦解答下,谢谢
{link}