策略回测工具大比拼:哪个又快又好用?

策略回测工具大比拼:哪个又快又好用?

02

DolphinDB vs MetaTrader4

功能对比

MetaTrader4 是一款外汇交易平台,提供实时货币对报价、图表分析、自动化交易支持及策略回测。MetaTrader4 使用 MQL4 作为回测编程语言,该语言基于类 C 语言,相比 Python 等解释型语言执行速度更快。MetaTrader4 支持 tick 级别的策略回测,但订单不支持高精度的模拟撮合。其指标计算基于 1 分钟、5 分钟、15 分钟、30 分钟、1 小时、4 小时和日等七种固定周期,内置了 20 种常见指标(如移动平均线 MA、相对强弱指数 RSI、布林带和 MACD 等),并支持自定义指标的实现。然而,MQL4 开发自定义指标对策略研究员的编码能力要求较高。

DolphinDB 策略回测引擎不仅支持逐笔高精度回测,还支持高精度的订单撮合,订单成交结果充分考虑市场流动性等因素。DolphinDB 支持全面的指标计算,内置大量 m 系列、tm 系列和 cum 系列函数,使复杂指标的实现更为便捷。

性能对比

我们基于 tick行情,以布林带突破和 RSI 作为开仓信号的外汇 CTA 趋势策略实现进行性能比对。

策略介绍

本策略为外汇交易的布林带突破与 RSI 交易信号策略。该策略以每小时进行指标计算,实时进行风险监控进行止盈止损,下面为具体的策略逻辑:

做多开仓:当前 RSI 大于 70 且布林带正在上移并打破上轨

做空开仓:当前 RSI 小于 30 且布林带正在下移并打破下轨

如果存在多头或空头委托订单,需根据 Tick 行情判断是否撤单、止盈止损。

性能对比测试

以外汇 EUR 对 USD 2029.01.02-2023.12.31 共两年的 1.43 亿行数据和1872 笔委托成交订单为数据集,以下是 MetaTrader 4 和 DolphinDB Backtest 的回测耗时:

具体测试脚本请见阅读原文

从运行结果中可以看出,MT4 基于外汇的分钟频回测比 DolphinDB 更快,这是因为 MT4 采用类 C 的编译型语言,并且在模拟成交时启用了更为简单的见价成交模式。DolphinDB 在启用 JIT 后,尽管使用了更为耗时的高精度模拟撮合引擎,性能已经逼近 MT4。

03

DolphinDB vs VNPY

功能对比

VNPY 是一个量化交易框架,提供了 CTA 策略的回测功能。该回测功能仅支持单标的的 CTA 策略回测,不支持期货等衍生品的实时保证金制度。VNPY 内置共约 40 个指标,包括简单移动平均线 SMA 和指数移动平均线 EMA 等,以及 MACD、 Stochastic 和 RSI 等指标。指标计算支持 1 分钟、1 小时和日周级别的策略实现,但仅限于简单的单标的 CTA 策略回测。

DolphinDB 策略回测引擎是一个支持多标的策略回测的通用策略回测框架,支持中低频策略回测,支持逐笔高精度的策略回测。它支持保证金制度,并支持 A 股市场的分红除权以及两融融券等功能的策略回测。DolphinDB 支持更多指标的计算,包括 ta、mytt、alpha101 和国泰君安191,以及其它自定义的复杂指标,涵盖 DolphinDB 中实现的 m 系列、tm 系列和 cum 系列函数。

性能对比

我们沿用分钟频的期货 CTA 策略作为性能测试的案例,以查看二者在指标计算上的性能差异。

策略介绍

基于 ATR (平均真实范围)和 RSI(相对强弱指数)结合的技术分析指标实现期货 CTA 策略。具体的策略逻辑如下:

买入开仓:RSI 值大于 70 且 ATR 大于其 10 分钟均值

卖出开仓:RSI 值小于 30 且 ATR 大于其 10 分钟均值

止损逻辑:

卖平:持有多仓时,K 线达到最高点后,回落 0.004 时

买平:持有空仓时,K 线达到最低点后,反弹 0.004 时

性能对比测试

下面以 1 个月 'AG2306' 期货主力连续合约分钟行情共 2 万条数据量为回测样本,进行 DolphinDB 回测框架与 VNPY 的性能对比:具体测试脚本请见阅读原文

对于小样本量, DolphinDB 仍然有显著的性能优势,这是因为 Backtest 能够调用数据库的一系列功能,在数据库环境下完成回测,从而降低回测系统的复杂度。这里仅回测了一支标的,是因为 VNPY仅支持单支标的回测,需要保持实验条件一致。04

DolphinDB vs 功夫量化

功能对比

功夫量化是一款内核基于 C++ 开发的量化交易平台,支持实时交易、模拟交易及实盘交易,能够提供基于Python 编写的股票、期货、外汇等多种类策略回测。该平台支持国内 A 股市场的 level-2 逐笔成交行情的高精度订单模拟撮合,支持逐笔策略回测。功夫量化允许使用原生 Python 定义高频因子的指标计算。DolphinDB 策略回测引擎支持沪深 Level-2 行情的逐笔高精度策略回测,支持股票、期货、外汇和银行间债券等多种金融市场的策略回测。回测引擎完全使用 C++ 开发,同时编写回测的脚本语言支持使用 JIT 技术来提升策略执行效率。

性能对比

通过分析当前的买卖单数量形成下单信号是订单簿不平衡策略的核心逻辑,这对于量化平台的订单实时更新提出了较高的要求。因此,我们选择股票订单簿不平衡策略作为性能测试脚本,以测试 DolphinDB 和功夫量化的订单更新和 tick 级数据处理能力。策略介绍

本策略是基于市场深度和成交量变化作为开仓信号的股票交易策略。利用实时行情数据,分析买卖双方的成交量的比值关系,并设置对应的阈值,一旦突破该阈值,触发买入和卖出操作。在行情快照数据中,同时计算买方和卖方的成交量,以及相应的持仓情况。下面为具体的策略逻辑:

买入开仓:当买方的成交量高于卖方成交量的两倍且卖方成交量大于零时,给出买入信号;获取当前持仓数量,如果持仓数量不超出最大值,并以当前的最佳卖价提交买单。

卖出开仓:当卖方的成交量高于买方成交量的两倍且买方成交量大于零时,给出卖出信号;获取当前持仓数量,确保有足够的仓位可供卖出,然后以当前最佳买价提交卖出委托订单。

性能对比测试使用八支股票一个月的快照共 85 万条行情作为测试数据,通过功夫 Windows 客户端软件云提交到服务器测试功夫量化的运行效率(纯 Python 接口),并对比 DolphinDB 的性能,得到以下结果:

具体测试脚本请见阅读原文

由于 DolphinDB 数据库带来的数据传输速度提升以及 C++ 框架的加持, DolphinDB 的回测速度相比功夫量化的 Python 接口版本明显更快。05

总结

一图总结 👇👇

相比 DolphinDB 回测平台,Backtrader 对于超高频交易的支持较弱;对于订单延迟、复杂的模拟撮合等功能,用户需要在策略中手动实现。此外,Backtrader 缺乏内置的风险管理功能(如实时保证金计算)。相比之下, DolphinDB 支持更全面,可以通过各种接口获得相应的参数和功能。

对比 MT4,DolphinDB 功能性更全,对并行化回测支持良好。在资产规模较大、资产品种更灵活、以及回测表现对市场流动性更敏感的中高频回测场景中,DolphinDB 有明显的易用性优势。

DolphinDB 的风控系统相比 VNPY 有显著的优势:对于期货交易,内嵌的风险控制系统非常重要,如果需要用户从零开发,将付出大量的时间成本,而在使用 DolphinDB 回测平台时,仅需输入一些形式参数即可;VNPY 仅支持单支标的的回测,DolphinDB 支持多标的同时回测。另外,DolphinDB 支持逐笔高频回测,而 VNPY 对高频回测的支持有限。

DolphinDB 相比于功夫量化支持沪深 A 股更高精度的逐笔回测, 在使用脚本编写策略时,支持使用 JIT 技术来提升策略执行效率。

想了解更多关于 DolphinDB 回测框架的信息?锁定明晚七点半直播间!直播包含对模拟撮合和回测框架的详细介绍、与市面产品的性能测试对比以及期货分钟频 CTA、股票高频、科创板做市实战案例分享等干货硬核内容。

直播更包含因子开发管理平台的详细介绍,以及因子构建-计算-评价、策略构建-绩效归因、因子库运维管理等多个可视化 Demo。

👇扫描海报二维码报名👇

猜你喜欢

动物界中的二十大“隧道挖掘专家”,有些可挖洞创造地下迷宫!
linux常用命令(7):chmod命令(给文件赋读写权限/chmod 777)
怣怎么读
365bet提款到账时间

怣怎么读

07-04 6812
如何称呼团队同事
365bet提款到账时间

如何称呼团队同事

06-30 4628
问道手游怎么重置技能?(问道手游怎么重置技能栏)
linux系统 如何装虚拟机
365提款一周都没到

linux系统 如何装虚拟机

07-04 9028