答读者问为免费文章,不计入专栏里面。本文可以在下面地址免费阅读。
在使用backtrader进行多股票回测的时候,经常会遇到两个问题:第一个问题是股票上市和退市时间不一致;第二个问题是有些股票会出现停牌,导致某些交易日没有交易数据。如何解决这两个问题呢?
上市时间不一致导致回测的时候需要股票都上市了才会进入next中
很显然,这种方式不太好。
目前来看,比较好的解决方案是在prenext中调用self.next(),并且在self.next中可以对每个股票数据的交易日期进行核对,得到每个交易日有交易的股票。
某些股票停牌造成的缺失数据
对停牌数据的处理方法,通常有两种。
直接处理原始数据,进行填充
在停牌的时候,把数据向后填充,停牌的交易日用前一个交易日的收盘价进行填充,高开低收都用前一个交易日的收盘价。
在next中进行判断是否是停牌了
在多个股票回测的时候,如果某个股票停牌了,在没有交易的时候,获取的是最后一个交易的数据,可以根据交易时间判断这个股票是不是停牌了。
这两种方法,很难说清楚那种占绝对的优势。相对而言,我比较倾向于第二种方法,这种方法计算的技术指标,真实性比较高。
可以想象一下,大家主观交易上是怎么做的。假设今天收盘了,我想要选择今天收盘价大于过去60日均线的股票,我就打开交易软件,使用图表,一个个去判断。如果某个股票停牌了,我们怎么办?主流交易软件的选择,是没有填充数据。
智慧、心灵、财富,总要有一个在路上,愿我们能在人生的道路上,不断成长、不断成熟~~~
感兴趣可以关注我的专栏:
my_quant_study_note:分享一些关于量化投资、量化交易相关的思考
backtrader量化投资回测与交易:本专栏免费,分享backtrader相关的内容。
量化投资神器-backtrader源码解析-从入门到精通:本专栏目前收费299元,预计更新100篇策略+20篇backtrader讲解+80篇源代码分析。