6款优秀开源量化策略框架!那款适合你??

论坛 期权论坛 期权     
期权匿名问答   2022-6-4 04:28   11009   20
一个策略从想法,到测试,在到实盘,然后改进,进入另一个循环,需要很多的时间和精力。这时候选择一款高效、灵活的测试系统就是当务之急了。即使最后你可能需要写自己的系统,但是这些框架的软工架构还是很值得借鉴的。
一个好的测试系统应该具有如下特点:

  • 代码、项目仍然在维护,测试充分
  • 代码组织好,组件灵活,方便拓展,最好开源
  • 社区健全,可以讨论相关问题
  • 文档完整、全面
下面我介绍6款开源社区贡献的会测框架,看看那一款是你的菜?排名不分先后,各有千秋,我的观点后再最后说明。
更多量化投资干货:
基于Web

1.  Quantopian


Quantopian, 是最早开始在Web做量化测试的公司之一,目前他已经变成一个基金。提供的Web接口非常简单,平台默认提供了丰富的历史数据,可以方便的开始测试,可以说是入门最为容易的平台了。社区聚集了大量对量化感兴趣的人,市场能看见非常有深度的讨论,而且由于平台本身基于Web,讨论的时候可以方便的引用代码和图表,整体使用体验非常好。
但是Quantopian的回测速度不尽如人意,可调整的组件不多,不容易接入定制的数据、模拟逻辑等等。而且,你需要把你的策略上传到Quantopian服务器。如果你仅仅是用自己定制的信号,用Quantopian进行测试,那么隐私保护就不是问题。
Quantopian后台主要用的Zipline的代码,但是肯定已经加以定制,所以源代码并不开源,Debug或者更深度的定制不能实现。

  • 推荐指数:2 星
  • 回测类型:Event driven
  • 回测速度:慢
  • 实盘模拟:好
  • 实盘支持:-
  • 社区建设:好
  • 组件灵活:中
  • 是否开源:否
  • 文档:非常好
  • 语言:Python
2. QuantConnect


QuantConnect, 与Quantopian的模式非常类似,但是除了提供Web接口以外,还提供本地的SDK进行测试,代码已经开源:QuantConnect/Lean,核心的代码是C#完成的,但是提供F#和Python 的API。
Lean Engine是一个开源算法交易引擎,专为简单的策略研究,回溯测试和实时交易而构建。我们与通用数据提供商和经纪商集成,因此您可以快速部署算法交易策略。
LEAN引擎的核心是用C#编写的;但它可以在Linux,Mac和Windows操作系统上无缝运行。它支持用Python 3.6,C#或F#编写的算法。QuantConnect的社区建设也很不错,结合相关的Web前端,交流比较方便。
由于开放了本地SDK,你可以不必上传自己的策略,隐私保护方便比较完善。同时定制方便也更加优秀。

  • 推荐指数:3 星
  • 回测类型:Event driven
  • 回测速度:快
  • 实盘模拟:好
  • 实盘支持:是
  • 社区建设:好
  • 组件灵活:好
  • 是否开源:是
  • 文档:非常好
  • 语言:C#,F#, Python
基于本地

3. Zipline


Zipline是一个Pythonic算法交易库。它是一个事件驱动的回溯测试系统。 Zipline目前在生产中用作为Quantopian提供动力的回测和实时交易引擎 - 一个免费的,以社区为中心的托管平台,用于构建和执行交易策略。
这个框架由于是Python 构建的,已经集成了许多机器学习相关的应用,可以方便的将机器学习模型结合进自己的策略中。

  • 推荐指数:3 星
  • 回测类型:Event driven
  • 回测速度:慢
  • 实盘模拟:好
  • 实盘支持:是
  • 社区建设:非常好
  • 组件灵活:中
  • 是否开源:是
  • 文档:非常好
  • 语言:Python3
4. Backtrader
Backtrader, 是一款纯Python的回测+实盘框架。从软件工程的角度,这个项目非常值得学习。这个框架的代码风格非常Pythonic,也值得借鉴和学习。作者是一个很严谨的德国人,从他的代码审查和社区管理可见一斑。
backtrader允许您专注于编写可重复使用的交易策略,指标和分析器,而不必花时间构建基础架构。
我仔细研究过这个框架的源代码,作者软件工程功力不错,代码干净、架构合理,特别容易拓展。代码量并不大,元测试相对比较完善。得益与清晰的源代码,二次开发非常容易。
社区相对比较完整,参与度较高。作为一款没有任何商业支持的开源框架,我认为他做的非常成功。

  • 推荐指数:5 星
  • 回测类型:Event driven 和 Vectorized
  • 回测速度:中
  • 实盘模拟:好
  • 实盘支持:是
  • 社区建设:好
  • 组件灵活:非常好
  • 是否开源:是
  • 文档:非常好
  • 语言:Python3
5. Pyalgotrade
Pyalgotrade,也是一个纯Python回测框架,同样没有任何商业支持,完全开源。从代码风格看,作者应该具有很强的Java背景,无论是代码风格,还是代码架构,非常Old School!在功能性方便,框架的提供的功能少与Backtrader。
PyAlgoTrade是一个Python算法交易库,专注于回溯测试和对纸张交易和实时交易的支持。假设您对交易策略有所了解,并且您希望使用历史数据对其进行评估,并了解其行为方式。
但是,该框架目前还没有社区,只能在Github上面提交Issues。

  • 推荐指数:4 星
  • 回测类型:Event driven
  • 回测速度:中
  • 实盘模拟:好
  • 实盘支持:是
  • 社区建设:差
  • 组件灵活:中
  • 是否开源:是
  • 文档:非常好
  • 语言:Python2&3
6.Vn.py


Vn.py 是这里唯一一个国产框架,目前Github已经接近1W Star,做的非常成功。我大概是几年前开始关注这个框架的,看着他一点点重构,发展到现在的规模。社区也在欣欣向荣的发展。
这个框架,最开始的时候主要以连接多个交易平台为目的,是实盘交易导向的,回测功能是后面慢慢发展起来的,功能比较有限。但是由于代码量不大,如果有时间自己拓展也是一个不错的选择。客观的说,从代码和架构看,还有待加强。

  • 推荐指数:3 星
  • 回测类型:Event driven
  • 回测速度:慢
  • 实盘模拟:中
  • 实盘支持:是
  • 社区建设:非常好
  • 组件灵活:好
  • 是否开源:是
  • 文档:好
  • 语言:Python3
7. Backtesting.py




应评论区的要求,增加了backtesting.py。这两天花时间读了一下代码,总体来说这个框架比较新,还处于早期的阶段。属于事件驱动为主的类型,用了numpy, pandas, bokeh等一些比较经典的库。
结论

我个人最开始进入量化领域,用的Quantopian,后来用过一段时间Pyalgotrade,在然后换到了Vn.py,目前比较常用的是Backtrader。
如果,你钟爱.NET,QuantConnect无疑是你最好的选择。
如果,你钟爱Python,Backtrader比较适合你。
如果,你主要针对本土市场实盘交易,那么VNPY可能更加适合。

大家看完顺手点个赞呗?别光收藏呀:)码字不容易
参考:

  • 9 Great Tools for Algo Trading
分享到 :
0 人收藏

20 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-6-4 04:28:50 发帖IP地址来自 北京
纸张交易[魔性笑][魔性笑][魔性笑]
3#
期权匿名回答  16级独孤 | 2022-6-4 04:29:45 发帖IP地址来自 福建
哈哈哈哈,paper trading
4#
期权匿名回答  16级独孤 | 2022-6-4 04:30:14 发帖IP地址来自 北京
可是backtrader没办法做long-short equity策略
5#
期权匿名回答  16级独孤 | 2022-6-4 04:30:50 发帖IP地址来自 北京
哦?我自己没是过long-short.. 但是作者说可以https://community.backtrader.com/topic/25/short-selling-strategy-versus-signals
实在不行就自己改一下代码吧。。。
6#
期权匿名回答  16级独孤 | 2022-6-4 04:30:55 发帖IP地址来自 北京
我的意思是backtrader只能回测一个品种asset(不管是股票期货还是外汇),不能feed大量股票数据,所以只适合cta
7#
期权匿名回答  16级独孤 | 2022-6-4 04:31:51 发帖IP地址来自 北京
看看这个https://community.http://backtrader.com/topic/908/dynamic-stock-selection-and-large-number-of-data-sets
8#
期权匿名回答  16级独孤 | 2022-6-4 04:32:34 发帖IP地址来自 北京
long-short不是这样做的,总而言之就是bt的框架决定了不适合,文章以前看过了但还是谢谢
9#
期权匿名回答  16级独孤 | 2022-6-4 04:33:07 发帖IP地址来自 北京
您好,Backtrader对停牌数据期间的数据怎么处理的?feed之前直接删除嘛?谢谢
10#
期权匿名回答  16级独孤 | 2022-6-4 04:33:48 发帖IP地址来自 北京
https://kernc.github.io/backtesting.py/
这个backtesting.py怎么评价?能给几颗星?
11#
期权匿名回答  16级独孤 | 2022-6-4 04:34:44 发帖IP地址来自 中国
这些框架除了做股票外,可以做基金吗?
12#
期权匿名回答  16级独孤 | 2022-6-4 04:35:15 发帖IP地址来自 北京林业大学
backtrader的源码看着一头雾水
13#
期权匿名回答  16级独孤 | 2022-6-4 04:35:25 发帖IP地址来自 江西抚州
backtrader最近在github上都没有commit,是不是已经停止维护了?
14#
期权匿名回答  16级独孤 | 2022-6-4 04:35:42 发帖IP地址来自 北京
还在维护,不过很少增加新功能了
15#
期权匿名回答  16级独孤 | 2022-6-4 04:36:12 发帖IP地址来自 中国
非常全面
16#
期权匿名回答  16级独孤 | 2022-6-4 04:37:08 发帖IP地址来自 中国
他用了很多meta programming,架构还是比较简单清楚的。
17#
期权匿名回答  16级独孤 | 2022-6-4 04:37:51 发帖IP地址来自 北京
给大家推荐AIOQuant,我觉得比VNPY这些好用,GitHub上有开源,B站上还有配套的学习课程,up主真的很Nice
18#
期权匿名回答  16级独孤 | 2022-6-4 04:38:48 发帖IP地址来自 北京
这个平台好像不能回测历史数据
19#
期权匿名回答  16级独孤 | 2022-6-4 04:38:56 发帖IP地址来自 四川成都
不能回测,但是跑策略很不错
20#
期权匿名回答  16级独孤 | 2022-6-4 04:39:36 发帖IP地址来自 北京
backtrader 好像是 half-vectorized
https://community.backtrader.com/topic/242/is-backtrader-event-driven-or-vectorized/2
21#
期权匿名回答  16级独孤 | 2022-6-4 04:40:10 发帖IP地址来自 青海西宁
如果愿意的话,是不是可以我们自己来动手实现回测功能然后PR?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP