我在公司主要是负责期货CTA的投研,有好多期货上的东西是能避免就避免,有些敏感,不太好深入讲。今天有读者咨询,如何使用backtrader基于期货的基本面数据进行回测,实际上,在前面的专栏中,已经做过相关的介绍了,稍微改下代码就可以实现。在这篇文章中,尝试对这个话题进行一个汇总回答。
首先,推荐一下我以前写的一些文章:
10、backtrader的一些基本概念—feed讲解(2)—如何增加新的数据及一个基于pe-pb的小策略
在这篇文章中,扩展了高开低收的数据,增加了两个时间序列的财务指标-pe和pb,实际上,做期货的基本面数据,参考这篇文章就可以实现。
【股票策略】使用backtrader测试狗股策略版本4—在版本3的基础上进行代码改进优化
这篇文章是使用另一种方式对常规的数据进行了扩充,比较适合那些横截面数据等非严格的时间序列数据
56、【backtrader股票策略】多因子策略框架及基于动量和价值的因子策略
这篇文章是使用backtrader给常规的因子回测做了一个框架,在期货上,也是可以用的。
【答读者问23】计算指标的时候是直接使用pandas计算好指标加载进去速度快,还是在backtrader中计算指标速度快?(2021-11-17更新,修复pandas增加列添加问题)
这篇文章虽然看起来是对比pandas和backtrader计算指标的效率的问题,但是实际上,也实现了,对pandas数据进行扩展,任意多列的pandas数据都可以直接加载到backtrader中,并且以line的形式调用。文章10是以csv的形式,这篇文章是使用pandas的形式,只要pandas能够实现的数据形式,都可以加载进backtrader中进行调用。实际上,看到这里,做期货策略的回测,应该问题不大了吧。
做期货和做股票不同,期货需要额外考虑杠杆和固定佣金与百分比佣金的区别,这个在以前的教程中,有过讲解,可以参考这两篇文章
backtrader的一些基本概念—佣金(commission)的设置
46、backtrader的一些基本概念—佣金(commisssion)的高级使用方式
还有需要考虑设置滑点的多少,在股票策略里面我基本上都不设置。还有在期货策略里面,我好多也不设置。滑点的问题建议单独考虑,这个跟策略逻辑、交易的品种、时间等很多问题有关。如果想要设置滑点,可以参考这篇文章
43、backtrader的一些基本概念----滑点(Slippage)的使用方法
如果单个参数跑起来没问题,想要做多品种多参数的优化及参数分析,可以参考这篇文章:
71、【backtrader期货策略】十大经典策略-空中花园(各品种参数优化版本)
好了,前面好多东西都是铺垫,都铺垫到这了,我觉得这个问题其实不用我回答了吧?还是简单一些做下汇总吧。
期货的数据分为高、开、低、收、成交量、持仓量的行情数据,还有库存、基差、利润等各种基本面数据,期货的行情数据直接加载到backtrader里面就可以了,这些特殊的基本面数据,怎么使用,可以结合自己的数据综合考虑。
如果自己的数据是特定时点的,而非时间序列的,可以考虑按照狗股策略里面那种方式,直接在init初始化的时候加载进去,这样在next中可以获取到全部的基本面数据,然后使用时间过滤的方法,可以得到当前时间点可以得到的基本面数据,避免未来函数。
如果自己的数据是时间序列数据,那么,就考虑扩展feed,增加具体的列,这样在next中,新的列就是一个新的line,跟行情数据一样,调用就可以了。可以参考10和答读者问23的文章,扩展数据。
智慧、心灵、财富,总要有一个在路上,愿我们能在人生的道路上,不断成长、不断成熟~~~
感兴趣可以关注我的专栏:
my_quant_study_note:分享一些关于量化投资、量化交易相关的思考
backtrader量化投资回测与交易:本专栏免费,分享backtrader相关的内容。
量化投资神器-backtrader源码解析-从入门到精通:本专栏目前收费299元,预计更新100篇策略(更新中)+36篇backtrader讲解(已完成)+backtrader源码分析。