标注加个括号,回测结果就不一样啦,按道理应该是一样的才对,怎么回事?

新手专区
标签: #<Tag:0x00007f608402a698>

(tkyz) #1

标注where((shift(close, -5) / shift(open, -1)-1)>0.2, 1, 0) 和 where(shift(close, -5) / shift(open, -1)-1>0.2, 1, 0) 是一样的吗?怎么回测结果不一样?
https://i.bigquant.com/user/tkyz/lab/share/%E9%9A%8F%E6%9C%BA%E6%A3%AE%E6%9E%97%E5%88%86%E7%B1%BB.ipynb?_t=1548932120465


(达达) #2

不是标注的问题,是因为你修改了标注模块,缓存就失效了,模型就重新训练了。
随机森林每次模型训练结果不同。你可以尝试什么都不该,把缺失值处理模块的缓存勾掉,就会重新运算重新训练模型,可以发现结果也不一样。
您可以使用DataSource.write_pickle()记录你满意的模型,然后复用。


(tkyz) #3

好的,怪不得每次回测都不一样