【答读者问39】谈一谈如何基于python和backtrader进行因子研究?
作者:yunjinqi   类别:    日期:2022-03-20 12:30:58    阅读:2119 次   消耗积分:0 分    

在开始这篇文章之前,首先要说明的是,在工作中我的主要研究方向并非是因子方向,所以很多细节上的东西可能涉及的不是很深入,很多东西很可能是我基于自己对python、backtrader和因子的了解提供的设想,提供的更多的是一种思路上的东西。

在以前的专栏中,或多或少有一些文章涉及到因子研究的,先梳理一下这部分的文章。

【干货】用backtrader做沪深300指数成份股调整策略

【干货】backtrader单因子回测框架—以上证50为例

【干货】用backtrader测试波动率因子

12、使用backtrader回测升级版的狗股策略-基于股息率和市净率两个因子

【backtrader股票策略】在A股中使用基于PB指标的价值投资策略可以赚钱吗

40、【backtrader股票策略】波动率越低的股票越能带来更高的收益吗?

昨天有读者咨询做因子研究会使用到哪些库以及如何做组合优化?

下面我尝试用自己有限的能力来回答下这个问题。

因子研究从使用的因子数量上来看,涉及到单个因子和多个因子的研究;从资金使用上,可以分为使用固定资金量和使用固定资金比例;在资金分配上,又分为简单的平分和一些分配方法。所以,单单一个因子研究,就可以分成很多方向,更不用说不同种类的因子了。

使用因子研究比较常用的python库包括pandas、numpy、scipy、statsmodels,还有一些其他的库也可能会用到,比如画图的话,用matplotlib或者plotly之类的;用什么库不重要,怎么更有效率的实现对因子的研究才更重要。

一些研究中的核心原则:

  1. 能够向量实现的,尽量用向量去实现

python的pandas和numpy在向量运行中效率非常高,有些简单的因子研究是可以通过向量运算直接实现的,在这种情况下,尽量用向量去实现,提高研究效率。

举例说明,有n个资产的开盘价和收盘价,有n个资产的因子,就可以通过向量计算出每个资产的信号、持仓、交易盈亏、累计盈亏,进而计算出这个因子的效果好坏。

  1. 不能用向量实现的研究可以考虑使用backtrader

有些比较复杂的因子研究,涉及到使用固定比例资金以及复杂的资金分配方法的时候,可能使用向量回测会比较麻烦,不太好实现,这个时候可以考虑使用一些量化交易框架,比如backtrader之类的。

  1. 先从简单因子开始,经过向量化回测之后,简单因子效果不错,可以考虑用框架进一步测试。如果用多个因子值进行选股之类的,如果能够在加载到backtrader之前计算好最终的因子值,最好先计算好。

至于说如何做组合优化?组合优化这种事情本身就是一个参数优化,给定优化的目标和约束条件,选择合适的参数的过程。这个需要自己去实现了,如果算法写的不是很好的话,可能需要耗费的时间特别多,建议这个步骤尽可能是在可以向量化的时候去做,不要基于事件驱动的回测的时候去做,要不然耗时会特别多。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/89
上一篇:【答读者问38】backtrader如何自定义技术指标?
下一篇:【答读者问40】谈一谈如何使用backtrader实现基于机器学习算法的滚动优化回测(事件驱动回测 向量化优化参数)?