第3天: bt—低代码”积木式“策略开发框架(大小盘轮动策略)
-
工欲善其事,必先利其器。
策略开发是量化的核心工作,而策略需要运行在回测平台上。
框架的选择就非常重要。
选择的标准取决于你的目标:
回测重在效率,说白了,能够快速验证你的交易思路;实盘更在意性能、稳定性。
我在推荐回测、实盘分开的。
实盘要考虑的细节非常多,而这些在策略开发过程用不上,不必因此过早浪费时间。
框架选择
线上的回测平台,好处是不必管数据,缺点是运行效率不高,而且策略没有私密性。
开源的回测框架有:backtrader, qlib, bt, pyalgotrade, pybrokder, backtesing.py,rqalpha, vnpy, wonder trader等。
如何选择呢?
vnpy和wonder trader偏实盘,尤其是期货,因此,在CTA对接实盘是建议考虑。
qlib是机器学习驱动的,传统规则策略不支持,我们还是希望一并兼容的模式。
就传统开源框架而言,backtrader是相对最成熟的,但我为何不建议新手上来就学,或者说之后也未必一定要学。
原因如下:
backtrader起步有一定的学习曲线的,担心大家学完框架直接就入门到放弃了。
要加载多支股票的时候,性能不好。像多因子策略,全市场选股,bakctrader运行起来就比较费劲,backtrader更适合少数几个标的,像CTA这样传统策略回测和实盘。
策略代码细节多,需要自行判断当前持仓,计算仓位等交易逻辑细节。——有时候,回测结果不好,对于新手来说甚至不太好判断是策略有bug呢还是策略就不行。
我推荐这个新手友好的"低代码",”搭积木“式的快速策略开发框架——bt。注意,就叫bt,不是backtrader,这个要搞清楚。
一个策略的开发(单标的CTA择时策略除外),包含几个典型的步骤:
调仓周期
选股
排序
仓位分配
再平衡
把策略拆分成相应的模块之后,每个模块的逻辑相对单一,这样很容易实现“算子化”,然后进行积木式的策略构建,进而使用低代码的方式来调用。同时,就不需要自己写指标代码,而是使用内置的因子表达式。
更进一步,可以使用遗传算法等机器学习的方式来挖掘有效的因子。
bt框架介绍
bt 是一个灵活的 Python 回测框架,用于快速创建量化交易策略。
这个框架允许用户轻松创建策略,这些策略可以混合不同的 Algos(算法)。
bt很方便创建易于测试、可重用和灵活的策略逻辑模块,便于快速开发复杂的交易策略。
bt 的目标是帮助量化分析师避免重复造轮子,让他们专注于工作的重要部分——策略开发。
官网网站:http://pmorissette.github.io/bt/
熟悉一个策略最优的方式,当然是自己动手把官网的策略跑一下。
官网的策略咱们这里就不再浪费篇幅,感兴趣的同学可以前往看一下。
我们用自己的数据来实现真正有用的策略。
bt策略开发
大小盘等权策略(基准)
大小盘波动率加权策略(基准)
大小盘趋势轮动策略
大小盘策略是一个经典的策略。大小盘轮动策略是一种基于市场风格切换的投资策略,它的核心思想是在大盘股和小盘股之间进行切换以获取超额收益。这种策略通常利用市场中不同市值板块之间的相对强弱来实现盈利,其基本原理是动量效应,即过去表现较好的资产在未来一段时间内很可能会继续表现优越。
这里的大小盘分别是指: 沪深300指数(000300.SH)、创业板指数(399006.SZ)。
沪深300是A股市场最大的300家公司;创业板指数是由创业板中市值大、流动性好的100只股票组成的指数,它反映了创业板市场层次的运行情况。
当然替换成上证50指数或者科创板指数也是类似的。
通过前面的代码,我们可以把数据已经下载到本地: