上海财经大学基于 DolphinDB 的量化高频数据中心系统介绍
回顾既有方案的限制,并提出在持续增长的时序数据场景下,需要搭建优秀且易用的新系统。
What this page covers
- 案例概述与人物信息(系统介绍者与背景)。
- 既有方案问题与建设目标(为何需要新系统)。
- 数据类型与数据规模(研究数据范围与体量)。
- 功能架构要点(采集、存储、ETL、接口等)。
- 中心功能模块(六大模块与模块说明)。
- 性能测试:写入性能对比(MongoDB vs DolphinDB)。
- 选择 DolphinDB 的原因(性能、分布式与易用性)。
技能认证特训营第二期限时报名入口
页面顶部提供活动报名提示与外链入口。
- 提供“技能认证特训营第二期”的报名链接入口。
- 报名链接指向站外页面。
新闻栏目与文章标题、日期
页面展示新闻栏目标识、文章标题与发布日期信息。
- 页面为新闻栏目下的文章页面。
- 文章标题为“上海财经大学基于 DolphinDB 的量化高频数据中心系统介绍”。
- 页面展示发布日期信息。
案例概述与作者/人物信息
介绍上海财经大学为解决高频数据采集与处理痛点而采用 DolphinDB,并说明文章由谢斐教授介绍该系统。
- 上海财经大学为应对高频数据采集与处理痛点而采用 DolphinDB。
- 文章由谢斐介绍该系统。
- 谢斐为上海财经大学实验中心副主任、金融学院副教授。
既有方案问题与建设目标
回顾此前系统与多种技术方案的限制,并提出需要搭建优秀、易用的新系统。
- 此前系统在存储、压缩、调用与运算方面存在较大问题。
- 此前系统需要耗费大量时间进行数据整理。
- 经验总结后建立的系统可直接存储 HDF5 文件并实现直接检索。
- 该系统响应速度慢,且无法动态管理数据。
- 在持续增长的时序数据场景下,目标是搭建优秀且易用的新系统。
系统现状与文章结构
说明基于 DolphinDB 的系统总体性能良好、已成为教学科研工具,并列出后续将介绍的维度。
- 基于 DolphinDB 的系统由研究团队用 Python 编写。
- 该系统总体性能良好。
- 该系统已成为教学和科研中的重要工具。
- 系统主要面向高频数据采集、实时因子计算与长时间多数据点采集等问题。
案例封面图与说明
展示上海财经大学与 DolphinDB 合作案例封面及其说明文字。
- 页面包含合作案例的封面展示元素。
- 封面相关内容附带说明文字。
研发背景
列出个性化行情需求、历史采集慢、实时处理困难与自建成本高等背景原因。
- 行情厂商标准数据难以满足自定义拼接规则的个性化需求。
- 历史数据采集存在数据量大、采集慢与访问慢的问题。
- 实时行情处理存在缺乏高效内存型数据库的缺口。
- 自建数据库采集工具成本高,高频处理系统开发难度高。
数据类型与数据规模
描述研究的 level2 公开数据类型、数据范围以及入库数据时间跨度与体量。
- 研究数据主要为 level2 的公开数据。
- 数据范围覆盖全市场,包含股票、债券、商品期货、金融期货和期权等。
- 两种数据汇总后进行备份、比对、清洗和入库。
- 入库市场全景数据时间跨度为 2013 年到现在。
- 原始数据总量约 60TB。
功能架构:功能要点
概述系统在采集、调度、存储、ETL、一致性与多语言接口方面的功能要点。
- 系统架构设计可实现高速、自动采集证券或期货的历史数据。
- AirFlow 用于全自动调度处理金融资产高频历史数据。
- DolphinDB 用于高性能分布式数据存储。
- ETL 方案用于统一数据结构并保证一致性与稳定性。
- 对外接口支持 Python、C++、C#、Java 等对接第三方系统。
中心功能模块(六大模块)
说明数据中心系统的六大模块并给出模块说明与支持的数据源、存储与应用层能力。
- 量化高频数据中心系统包含六大模块。
- 六大模块包括:数据采集、数据存储、数据处理、上层应用、状态监控、对外接口。
- 数据采集模块支持 CSV 文件。
- 数据采集模块支持多种数据源(如 SQL、Orcale、万德、国泰安、通联、聚宽等)。
- 数据存储模块中,DolphinDB 存储 Ticks/Bar、合约信息、因子与自定义合约等。
架构介绍(AirFlow 调度与组件流程)
描述使用 AirFlow 通过 TaskID/JobID 调度,写入 DolphinDB 集群/内存并进行拼接校验,提供 Exporter 与 Manager 管理。
- AirFlow 通过 TaskID、JobID 调度系统运行顺序和状态。
- TaskID 与 JobID 用于保证数据采集完整性与出错重做机制。
- 采集数据写入 DolphinDB 集群与内存以方便调用。
- 写入后对数据进行拼接与校验处理。
- Exporter 输出接口通过 Manager 后台进行配置与管理。
性能测试:写入性能(MongoDB vs DolphinDB)
对比同等硬件下 MongoDB 与 DolphinDB 入库一周 Tick 数据的写入耗时与实现方式描述。
- 写入性能测试数据集为上海期货交易所一周 Tick 数据(712 万条)。
- 此前 MongoDB 入库该数据集耗时约 1000 秒。
- 重构后 DolphinDB 入库该数据集耗时约 120 秒。
- DolphinDB 目前不支持同区多线程写入。
- 入库程序会针对 DolphinDB 特性进行任务分派以实现入库保存。
性能测试:读取性能
展示读取深市某股票一年不同类型高频数据的耗时结果,并说明分区分表后实际速度更快。
- 读取性能测试任务为读取深市某股票一年数据。
- 处理上千万条、十余列字段记录的读取耗时在 10 秒以内(概述)。
- 数据分区分表方案来自 DolphinDB 技术专家建议。
- 分区分表后实际读取速度被描述为比表中速度更快。
性能测试:实时数据计算性能
给出实时计算各环节耗时与“10毫秒内完成全流程/因子计算”的描述。
- 端到端实时计算全流程被描述为 10 毫秒内完成。
- 环节耗时包含获取行情(1–2 毫秒)。
- 环节耗时包含行情数据转换(1–3 毫秒)。
- 环节耗时包含计算和存储因子(1–6 毫秒)。
- DolphinDB 具有专有的流计算引擎。
选择 DolphinDB:性能、分布式与易用性
从性能提升、分布式计算能力以及学习门槛等角度说明选择 DolphinDB 的原因与教学实践。
- 使用 DolphinDB 前,每天大概 3 小时处理数据。
- 使用 DolphinDB 的一站式服务后,处理时间约 30 分钟。
- 使用 DolphinDB 后节点总内存为 1.0TB。
- DolphinDB 被描述为可自动进行分布式计算。
- DolphinDB 脚本语言被描述为类 SQL 的逻辑。
结论与合作评价
总结系统满足回测与模拟交易等需求,DolphinDB 成为课程重要部分,并表达合作积极与未来合作意愿。
- 系统满足每天进行实时策略回测与模拟交易等业务需求。
- DolphinDB 已成为量化投资与程序化交易课程的重要组成部分。
- 文中对双方合作关系给出积极评价(观点)。
- 文中表达未来希望有更多合作机会(观点)。
上海财经大学简介图与说明
展示上海财经大学简介背景材料图片及其说明文字。
- 说明文字提及“自1917年创办以来”。
- 说明文字提及“入选国家‘双一流’建设序列”。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 上海财经大学基于 DolphinDB 的量化高频数据中心系统介绍 | 发布日期 | 2022.09.13 | high |
| 上海财经大学 | 正式采购 DolphinDB 时间 | 2019年(由于良好的试用体验) | high |
| 谢斐 | 身份/职务 | 上海财经大学实验中心副主任、金融学院副教授 | high |
| 上海财经大学此前系统 | 存在的问题 | 在数据存储、压缩、调用和运算等方面存在很大问题,需要耗费大量时间进行数据整理 | medium |
| 自研二进制压缩存储系统(用于存储 CTP 数据) | 问题 | 无法处理多来源冗余等问题 | high |
| 系统(经验总结后建立) | 能力 | 可以直接存储 HDF5 文件并实现直接检索 | high |
| 系统(经验总结后建立) | 问题 | 响应速度慢、无法动态管理数据 | high |
| Hadoop hive 系列 | 不适用点 | 不能高效研究结构化数据,需要将结构化问题转化为 MapReduce 脚本后处理 | high |
| 持续增长的时序数据场景 | 目标 | 希望搭建一套优秀的、使用方便的新系统 | high |
| 基于 DolphinDB 的量化高频数据中心系统 | 实现方式 | 由研究团队用 Python 编写 | high |
| 基于 DolphinDB 的量化高频数据中心系统 | 总体表现 | 总体性能良好 | medium |
| 基于 DolphinDB 的量化高频数据中心系统 | 主要解决的问题 | 长时间采集多数据点、实时因子计算和高频数据采集等问题 | high |
| 基于 DolphinDB 的量化高频数据中心系统 | 在教学科研中的地位 | 已经成为教学和科研中的重要工具 | medium |
| 行情厂商标准数据 | 不能满足的个性化需求 | 无法提供自定义 MinBar、HourBar、连续合约及自定义合约等拼接规则,导致量化策略无法实现 | medium |
| 历史数据采集现状 | 问题 | 数据量大,采集慢,访问慢;采集一年数据可能要耗时几天,无法保证数据没有遗漏 | medium |
| 行情实时处理 | 缺口 | 缺乏高效的内存型数据库,无法实时计算因子 | medium |
| 自建数据库采集工具/高频处理系统自建 | 困难 | 自建数据库采集工具成本高,高频处理系统开发难度高 | high |
| 研究数据 | 数据级别 | 主要研究 level2 的公开数据 | high |
| 快照数据(每只股票) | 采样频率 | 每3秒钟的快照数据 | high |
| 逐笔成交数据与逐笔委托数据 | 采样频率 | 每10毫秒采集多笔 | high |
| 数据获取方式 | 来源 | 通过数据商获取实时采集数据和盘后数据 | high |
| 数据范围 | 覆盖市场与品类 | 全市场,包括股票、债券、商品期货、金融期货和期权等 | high |
| 数据处理流程 | 处理步骤 | 两种数据汇总后进行备份、比对、清洗和入库 | high |
| 入库市场全景数据 | 时间跨度 | 2013年到现在 | medium |
| 原始数据总量 | 规模 | 60TB 左右 | high |
| 系统架构设计(相较传统采集方案) | 能力 | 可实现高速、自动采集证券或期货的历史数据 | medium |
| AirFlow | 用途 | 工作流平台全自动调度处理金融资产高频历史数据 | high |
| 系统(结合实时行情) | 用途 | 为多因子量化投资策略等工具提供高效完整的数据计算基础 | medium |
| DolphinDB | 用途 | 用于数据存储(高性能分布式数据库) | high |
| ETL 方案 | 作用 | 统一数据结构,保证数据质量和前后依赖关系,同时确保一致性和稳定性 | medium |
| 对外接口 | 支持语言/接口 | 支持 Python、C++、C#、Java 等接口对接第三方系统 | high |
| 量化高频数据中心系统 | 中心功能模块 | 六大模块:数据采集、数据存储、数据处理、上层应用、状态监控、对外接口 | high |
| 数据采集模块 | 支持的文件类型 | 支持 CSV 文件 | high |
| 数据采集模块 | 支持的数据源 | SQL、Orcale、万德、国泰安、通联、聚宽等数据源(历史行情、实时行情及基础数据) | medium |
| 数据存储模块 | DolphinDB 存储内容 | 存储包括流模式和库模式的 Ticks 和 Bar、合约信息、基类、因子及自定义合约 | high |
| 数据存储模块 | PostgresSQL 存储内容 | 存储数据中心的日志、任务、自动或手动计划及门户前端数据库信息 | high |
| 数据处理模块 | Builder 功能 | 实现历史及实时 Ticks 拼接 MinBar 和 HourBar、连续合约和配对合约 | high |
| 数据处理模块 | Validator 功能 | 校检日线数据和 Tick 数据的准确性 | high |
| 上层应用模块(管理后台) | 合约管理功能 | 包括查询、自定义合约、连续合约和因子等 | high |
| 上层应用模块(采集任务管理) | 包含内容 | 自动或手动采集管理数据、计划任务管理及数据完整性检查 | high |
| 状态应用/监控模块 | 依托与提供能力 | 提供 AirFlow 调度平台运行状态、日志服务及通知网关 | high |
| 对外接口模块 | 支持 API | 支持 Python、C++、C# 等 API 接口 | high |
| AirFlow(在数据中心系统中) | 调度机制 | 通过 TaskID、JobID 调度系统运行顺序和状态 | high |
| TaskID 与 JobID | 作用 | 保证数据采集完整性与出错重做机制 | high |
| 数据写入与处理流程 | 流程描述 | 采集数据写入 DolphinDB 集群和内存中以方便调用,同时对数据进行拼接和校验 | high |
| Exporter 输出接口 | 配置与管理方式 | 通过 Manager 后台对整体进行配置和管理 | high |
| 写入性能测试数据集 | 数据范围与规模 | 上海期货交易所一周 Tick 数据(712万条) | high |
| MongoDB 入库耗时(之前) | 写入耗时 | 1000秒钟左右(入库一周 tick 级数据) | high |
| DolphinDB 入库耗时(重构后) | 写入耗时 | 120秒钟左右(入库上海期货交易所一周 tick 级数据) | high |
| DolphinDB | 写入限制 | 目前还不支持同区多线程写入 | high |
| 入库程序(针对 DolphinDB 特性编写) | 作用 | 进行任务分派以实现入库保存 | high |
| DolphinDB 相比 MongoDB | 速度提升结论 | 速度提升效果比较明显,支持采购商业系统的决策 | medium |
| DolphinDB 技术支持团队 | 支持内容 | 在数据入库和分区等方面提供方案,保证及时、专业的技术支持 | medium |
| 读取性能测试 | 测试任务 | 读取深市某股票一年数据 | high |
| 读取性能测试结果(概述) | 耗时表现 | 处理上千万条、包含十余列字段的记录,其耗时均在10秒以内 | medium |
| 数据分区分表方案 | 来源 | 根据 DolphinDB 技术专家建议提出 | high |
| 分区分表后实际读取速度 | 与表中速度对比 | 目前实际速度比表中的速度更加快 | low |
| 实时计算性能(端到端) | 全流程耗时 | 10毫秒内完成从原始数据录入到因子计算存储的全流程 | medium |
| 实时计算环节耗时(表格指标) | 耗时范围 | 获取行情(1-2毫秒)、行情数据转换(1-3毫秒)、计算和存储因子(1-6毫秒) | medium |
| DolphinDB | 引擎能力 | 专有的流计算引擎 | high |
| 实时因子计算示例 | 计算内容 | 将行情数据转换成计算因子如均线、K线等然后进行存储,并可按需订阅多个合约和因子数据 | medium |
| 服务器采购(用于研究市场微观结构) | 采购时间 | 2018年 | high |
| 2018年采购服务器配置 | 数量与规格 | 5台服务器;每台 256GB 内存、十几 TB 硬盘(另有一套服务系统) | medium |
| 订单簿/订单户数据研究数据量 | 每日数据量 | 每天八千万到一亿条 | medium |
| 使用 DolphinDB 前处理耗时 | 耗时 | 每天大概3个小时去处理数据 | medium |
| 使用 DolphinDB 后处理耗时 | 耗时 | 使用 DolphinDB 提供的一站式服务只需要30分钟即可完成处理 | medium |
| 单机一年历史数据(高频量化交易场景) | 资源占用 | 选取以周为单位、一年的历史数据已在单机上占用很大内存 | low |
| 此前用于研究市场结构课题的服务器 | 内存 | 512GB 内存 | high |
| 市场截面查询所需数据量 | 规模 | 500GB 左右,经常会超限 | medium |
| 团队需求 | 系统能力需求 | 需要一套分布式处理系统;对代码编写和程序设计能力要求高 | medium |
| 并行处理能力(团队) | 困难 | 并非并行处理专家;在 500GB 以上场景下用 Python/MATLAB 分节点计算仍力不从心,需要用小截面反复计算并汇总统计 | medium |
| 使用 DolphinDB 后节点总内存 | 总内存 | 1.0TB | high |
| DolphinDB | 处理规模表现 | 处理该规模数量级的数据稳定快速,并可自动进行分布式计算 | medium |
| DolphinDB | 脚本语言特性 | 脚本语言是类 SQL 的逻辑 | medium |
| 学生上手 DolphinDB 的时间 | 学习周期 | 学生有 Python 基础,学完 SQL 后大概一个礼拜就能上手 DolphinDB | medium |
| 教学内容(DolphinDB 相关) | 覆盖范围 | 数据导入、查询、策略回测、以及表拼接等特性操作 | high |
| 基于 DolphinDB 的量化高频数据中心系统 | 满足的业务需求 | 满足每天进行实时策略回测、模拟交易等业务需求 | medium |
| 该系统应用场景 | 项目类型 | 学校科研项目及与券商、基金公司等合作项目,尤其高频量化场景 | medium |
| DolphinDB 在课程中的地位 | 课程应用 | 已正式成为量化投资与程序化交易课程中非常重要的一部分 | medium |
| DolphinDB 适用机构类型(作者观点) | 适用性 | 非常适合 IT 力量薄弱的机构 | low |
| 上海财经大学与 DolphinDB 的合作关系(作者观点) | 合作评价 | 互相尊重、友好积极;希望未来有更多合作机会 | low |
| 上海财经大学 | 创办时间(图片说明中提及) | 自1917年创办以来 | medium |
| 上海财经大学 | 国家建设序列(图片说明中提及) | 入选国家“双一流”建设序列 | medium |