【答读者问8】backtrader中多股票回测时停牌等缺失数据的处理方法
作者:yunjinqi   类别:    日期:2021-12-23 17:34:31    阅读:2208 次   消耗积分:0 分    

答读者问为免费文章,不计入专栏里面。本文可以在下面地址免费阅读。

在使用backtrader进行多股票回测的时候,经常会遇到两个问题:第一个问题是股票上市和退市时间不一致;第二个问题是有些股票会出现停牌,导致某些交易日没有交易数据。如何解决这两个问题呢?

上市时间不一致导致回测的时候需要股票都上市了才会进入next中

很显然,这种方式不太好。

目前来看,比较好的解决方案是在prenext中调用self.next(),并且在self.next中可以对每个股票数据的交易日期进行核对,得到每个交易日有交易的股票。

某些股票停牌造成的缺失数据

对停牌数据的处理方法,通常有两种。

  1. 直接处理原始数据,进行填充

    在停牌的时候,把数据向后填充,停牌的交易日用前一个交易日的收盘价进行填充,高开低收都用前一个交易日的收盘价。

  2. 在next中进行判断是否是停牌了

    在多个股票回测的时候,如果某个股票停牌了,在没有交易的时候,获取的是最后一个交易的数据,可以根据交易时间判断这个股票是不是停牌了。

    具体细节可以参考文章:36、backtrader中多股票回测中某些股票由于停牌造成的数据缺失的处理方法

这两种方法,很难说清楚那种占绝对的优势。相对而言,我比较倾向于第二种方法,这种方法计算的技术指标,真实性比较高。

可以想象一下,大家主观交易上是怎么做的。假设今天收盘了,我想要选择今天收盘价大于过去60日均线的股票,我就打开交易软件,使用图表,一个个去判断。如果某个股票停牌了,我们怎么办?主流交易软件的选择,是没有填充数据。

智慧、心灵、财富,总要有一个在路上,愿我们能在人生的道路上,不断成长、不断成熟~~~

感兴趣可以关注我的专栏:

my_quant_study_note:分享一些关于量化投资、量化交易相关的思考

backtrader量化投资回测与交易:本专栏免费,分享backtrader相关的内容。

量化投资神器-backtrader源码解析-从入门到精通:本专栏目前收费299元,预计更新100篇策略+20篇backtrader讲解+80篇源代码分析。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/37
上一篇:【答读者问7】如何加载分钟数据到backtrader
下一篇:【答读者问9】backtrader中如何判断当前bar是不是最后一根bar?