一种优于 Python + HDF5 的存算方案 | 以高频因子为例

本文为新闻文章,围绕高频因子存算方案对比展开,并包含发布日期信息。

Source: https://dolphindb.cn/news/detail/96

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部展示活动报名入口,并提示相关福利信息。

新闻 / 一种优于 Python + HDF5 的存算方案 | 以高频因子为例

该部分包含新闻文章标题、发布日期,以及文章主题(高频因子存算方案对比)。

背景:高频因子计算与现有 Python+HDF5 方案的痛点

该部分描述高频行情数据规模、常见技术栈(Python+HDF5),以及 HDF5 在该场景下的问题点。

对比测试说明与可获取的脚本教程

该部分说明对比测试的因子、数据规模、并行度调节方式,并提示完整脚本教程的获取途径。

测试结果:耗时对比与结论(图表+AI说明)

该部分在“两种方案结果完全一致”的前提下,给出耗时对比结论,并包含图表与说明。

测试数据结构:快照表字段(图表+AI说明)

该部分说明用于测试的快照表字段数量,并展示部分字段结构及类型示例。

测试环境:硬件配置(图表+AI说明)

该部分列出对比测试使用的硬件环境信息并附说明。

测试环境:软件栈与版本(图表+AI说明)

该部分列出对比测试使用的软件系统与版本信息并附说明。

优势点 01:存储引擎与分区机制保证高效数据读取

该部分对比 HDF5 与 DolphinDB 在读写并行性、数据管理复杂度与分区/存储引擎带来的可管理性。

优势点 02:移动窗口计算优化提供更高性能

该部分对比 Python rolling 方式与 DolphinDB 函数(mavg、rowWavg 等)在移动窗口计算上的优化与性能提升。

优势点 03:原生分布式自动并行调度

该部分对比 Python 使用 Joblib 进行多进程调度与 DolphinDB 自动任务拆解及多线程并行计算机制。

综合结论:生产环境下 DolphinDB 相对 Python+HDF5 的效率与易用性

该部分从代码实现、计算速度与并行计算三个方面给出综合性对比结论。

Facts Index

Entity Attribute Value Confidence
文章发布日期2023.06.14high
因子计算典型应用场景常见投研需求;以L2高频行情为例high
国内全市场十年L2历史数据数据量级约 20 ~ 50Thigh
L2行情数据每日新增数据量约 10 ~ 20Ghigh
常见高频投研方案技术组合使用 Python 进行投研开发,并配合 HDF5 存储行情数据,组合进行量化金融计算high
HDF5 与传统关系型数据库对比在高频数据存储上的支持强弱HDF5 的支持强于 MS SQL Server、MySQL 等传统关系型数据库medium
HDF5 在高频数据存储场景问题数据权限管理困难high
HDF5 在高频数据存储场景问题不同数据关联不便high
HDF5 在高频数据存储场景问题检索和查询不便high
HDF5 在高频数据存储场景问题需要通过数据冗余来提高性能high
Python 与 HDF5 的数据交互问题与 Python 之间的数据交互耗费时间high
券商和私募机构技术采用趋势越来越多开始采用 DolphinDB 进行高频数据存储和计算low
对比测试因子示例流动状态因子(flow)与权重偏度因子(mathWghtSkew)high
对比测试数据股票数量1992 只股票high
对比测试数据时间范围3天high
对比测试数据总行数2200万行high
对比测试方法变量与测量调节不同的并行度,测试在使用不同 CPU 核数情况下两种方式计算因子的耗时high
测试结果可用性前提一致性条件两种方案计算结果完全一致high
性能对比结论(单核)DolphinDB 相对 Python+HDF5 加速比单核库内计算比 Python + HDF5 计算快接近100倍medium
性能对比结论(多核趋势)耗时比随着可用 CPU 核数增加,耗时比逐渐趋近 1:25 左右medium
测试脚本和教程发布渠道已发布在官方知乎,可点击文末阅读原文查看medium
(AI说明)性能对比(单核)DolphinDB 相对 Python+HDF5 加速倍数约95倍low
(AI说明)性能对比(随核心数增加)效率比值稳定性计算效率比值稳定在25倍左右low
测试快照表数据(DolphinDB)字段数量共55个字段high
(AI说明)快照数据表字段示例包含字段类型包含交易日期(DATE)、原始时间与数据库时间(TIMESTAMP)、证券代码(SYMBOL)、买卖盘价格与委托量(INT/DOUBLE)等low
HDF5 文件读写线程特性读写基本是单线程medium
HDF5 存储结构设计工程代价通常需要通过一些数据冗余存储来满足不同场景的高效读写medium
HDF5 在T级数据量下管理复杂度影响数据管理和操作复杂度大幅增加,耗费大量时间和存储空间medium
DolphinDB数据管理与查询使用体验数据管理、查询、使用更为简单便捷low
DolphinDB能力来源得益于不同存储引擎及分区机制medium
DolphinDB可管理数据量级可用普通数据库方式轻松管理和使用 PB 级及以上数量级别的数据medium
因子开发难度对比DolphinDB vs Python开发这两个高频因子的难度差别不大medium
DolphinDB行计算函数支持提供 row 系列的行计算函数,使得代码量上开发更容易一些medium
Python 移动窗口计算实现方式通过 rolling 函数 + mean 等函数组合来计算high
Python 移动窗口计算优化难点难以进行针对性的增量优化medium
DolphinDB 移动窗口/行计算函数函数示例mavg(滑动窗口系列 m 系列)与 rowWavg(行计算系列 row 系列)high
DolphinDB 移动窗口计算优化性能提升上限相比之下计算性能最高可以提高100倍medium
Python 并行因子计算(示例方案)依赖库需要使用 Joblib 库high
Python 并行调度流程(示例)步骤描述将要计算的股票从文件中读出后,按并行度拆分成多组实现多进程并行调度medium
DolphinDB 计算框架并行机制将大任务拆解,自动分析数据涉及分区,并通过参数配置最大工作线程数进行多线程并行计算medium
生产环境方案选择(综合结论)效率对比使用 DolphinDB 进行因子计算和存储远比使用 Python + HDF5 计算方式更加高效low
代码实现方面(综合对比)DolphinDB 优势库内计算更易于实现因子计算调用及并行调用low
计算速度方面(综合对比)DolphinDB 相对 Python+HDF5库内计算比 Python + HDF5 的计算方式快 25 倍以上medium
并行计算方面(综合对比)DolphinDB 与 Python 脚本差异DolphinDB 可自动使用当前可用 CPU 资源;Python 脚本需要通过并行调度代码实现medium
测试硬件环境(AI说明)CPU主频2.40GHz的Intel Xeon Silver 4210R处理器low
测试硬件环境(AI说明)内存512GBlow
测试硬件环境(AI说明)SSD500GBlow
测试软件环境(AI说明)操作系统CentOS 7.9low
测试软件环境(AI说明)DolphinDB 版本DolphinDB V2.00.8.7low
测试软件环境(AI说明)Python 版本Python V3.6.8low
测试软件环境(AI说明)Numpy 版本Numpy V1.19.3low
测试软件环境(AI说明)Pandas 版本Pandas V1.1.5low
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high