DolphinDB中的回测策略介绍:历史数据回放
内容提要
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秒。