DolphinDB中的回测策略介绍:历史数据回放

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

DolphinDB可以将历史数据按照时间顺序导入流表,作为“实时数据”,以便用于回测和实时交易。介绍了replay和replayDS函数,并演示了数据回放的过程。replay函数将指定表或数据源的数据注入到流表中。replayDS函数生成一组数据源作为replay函数的输入。可以使用replay和replayDS函数回放单个表或多个表的数据。回放的数据可以通过DolphinDB订阅和处理,或通过第三方客户端使用DolphinDB的流API进行处理。

🔎

延伸解读

回放速率与绝对速率的区别

replay函数的replayRate和absoluteRate参数决定了回放速度。当absoluteRate为true(默认)时,replayRate表示每秒回放的行数;当absoluteRate为false时,replayRate表示原始数据速度的倍数。例如,若时间列跨度n秒,则回放耗时n/replayRate秒。若不指定replayRate或为负,则以最大速度回放。理解这两个参数有助于根据回测需求调整回放节奏。

并行级别与数据源拆分

当单个分区数据量过大时,可使用replayDS函数将分区进一步拆分为更小的数据源,并通过replay的parallelLevel参数指定同时加载数据的线程数。但需注意,若inputTables直接是表或表元组,parallelLevel始终为1。因此,对于大数据量回放,建议结合replayDS和parallelLevel来提高加载效率。

回放数据的处理方式

回放的数据本质上是流数据,可以通过三种方式处理:在DolphinDB内订阅并编写自定义函数处理;使用DolphinDB内置的流聚合引擎(如时序聚合、横截面聚合、异常检测)进行实时计算;或通过第三方客户端使用DolphinDB流API处理。这为回测和实时交易提供了灵活性。

性能表现与硬件参考

在特定服务器配置(24核48线程CPU、512GB内存、10Gb网络)下,以最大速度回放且输出表无订阅时,回放336,305,414行数据仅需约100秒。这一测试结果展示了DolphinDB在大数据量回放场景下的性能潜力,但实际性能可能因硬件、数据特征和订阅情况而异。

❓

Q&A

DolphinDB如何导入历史数据进行回测?

DolphinDB可以将历史数据按时间顺序导入流表,作为实时数据,用于回测和实时交易。

replay和replayDS函数的作用是什么?

replay函数用于将指定表或数据源的数据注入到流表中,replayDS函数生成一组数据源作为replay函数的输入。

如何提高DolphinDB数据加载的效率?

可以通过设置replay函数的并行级别来提高数据加载的效率。

DolphinDB中如何处理回放后的数据?

回放的数据可以通过DolphinDB订阅和处理,或通过第三方客户端使用DolphinDB的流API进行处理。

replay函数的参数有哪些?

replay函数的参数包括输入表、输出表、日期列、时间列、回放速率、绝对速率和并行级别。

DolphinDB的性能测试结果如何?

在最大速度下,336,305,414行数据的回放仅需约100秒。

➡️

继续阅读