基于中高频数据的极速因子投研
客户案例引言说明:WILLIAM O’NEIL 因高频时序数据处理需求选择 DolphinDB,并引出工程师分享。
What this page covers
- 客户案例背景与选型动因概述
- 公司与团队背景信息
- DolphinDB 的使用范围与数据规模概览
- 因子研发、衍生因子与回测/回放相关做法
- 中高频数据处理与分钟级研究精度相关实践
- tick 级数据流架构(Kafka + DolphinDB)与流计算框架
- 数据库选型对比与最终选择过程
技能认证特训营第二期报名提示
页面顶部包含活动报名提示与限时报名链接。
- 该区块用于提示读者进行活动报名。
- 该区块包含报名相关的跳转链接。
导航/面包屑与客户名称
页面提供指向客户案例列表的导航链接,并标示客户名称 WILLIAM O’NEIL。
- 该区块提供返回客户案例列表的导航入口。
- 该区块显示客户名称为 WILLIAM O’NEIL。
基于中高频数据的极速因子投研
主标题与引言说明:WILLIAM O’NEIL 因高频时序数据处理需求选择 DolphinDB,并引出工程师分享。
- 案例选择了 DolphinDB(基于市场调研与产品性能测试)。
- 原有系统架构难以有效处理高频数据处理需求。
- 引言以工程师分享视角展开案例内容。
公司与团队背景(WILLIAM O’NEIL 简介)
介绍 WILLIAM O’NEIL 的成立时间、服务对象与规模,以及上海信息科技团队的职责。
- WILLIAM O’NEIL(威廉欧奈尔)成立于 1963 年。
- 其业务定位为提供投资建议与独立调研报告。
- 页面表述其已服务超过 500 家世界顶级投资机构。
- 上海信息科技团队负责量化基金产品业务与数据技术研发。
我们用 DolphinDB 做了什么
概述使用 DolphinDB 处理时序数据的范围、主要任务类型与每日新增数据规模。
- DolphinDB 用于处理所有时序数据。
- 主要用途包括因子研发与中高频数据处理。
- 也用于 tick 级流数据处理。
- 每日新增数据量为 1000 万~5000 万条级别。
- 若存为 CSV,每日新增数据总量为 4~5 GB。
因子研发
用 DolphinDB 的分布式与流计算能力进行因子存储、计算、建模、衍生因子实时计算与回测(含 replay 回放)。
- 因子研发结合财报和日线数据衍生大量因子。
- 分布式存储可用于因子存储。
- 分布式计算可用于因子计算与建模。
- 实时流计算可用于实时计算衍生因子。
- DolphinDB 可用于因子评估以测试因子有效性。
- 此前因子回测使用 Python 加国外某云服务商数据库。
- DolphinDB 提供高效回测工具(页面表述)。
- replay 函数可通过模拟回放将数据注入流计算框架。
- replay 支持不同回放形式与回放速率设置。
- replay 可将多个表数据回放到同一张表中。
- 未来计划将因子回测业务逐渐迁移到 DolphinDB。
- 投研效率提升的表述在页面中出现(低置信度)。
处理中高频数据
使用时间序列聚合引擎生成分钟级 K 线、生成状态因子并输出到流表,以提升分钟级研究精度与处理效率。
- 中高频历史数据量在 TB 级别。
- 对行情输入使用时间序列聚合引擎生成分钟级 K 线。
- 基于分钟级 K 线用自定义函数生成状态因子。
- 输出结果指向另一个流数据表以便后续计算。
- 页面表述将研究数据精度推进到分钟级。
搭建 tick 级数据流架构
使用 Kafka 连接数据流并传入 DolphinDB 进行计算分析;利用流计算框架与流数据表实现处理、发布订阅与批流一体,并提及毫秒级延时。
- 页面表述 tick 级数据流架构为“去年搭建”。
- 使用 Kafka 连接数据流并传到 DolphinDB。
- 在 DolphinDB 中对流数据进行计算分析并得到所需数据。
- 该框架可实时产生所需的市场信号(中等置信度)。
- 实时流计算框架核心部件包含流计算引擎与流数据表。
- 流数据引擎支持时间序列、横截面与窗口处理等操作。
- 流数据引擎支持表关联与异常检测等操作。
- 流数据表可用于数据发布与订阅(简化版消息中间件)。
- 投研阶段的批量因子函数可投入生产以实现批流一体(中等置信度)。
- 页面表述延时可控制在毫秒级(中等置信度)。
回顾数据库选型
对比 KDB+、Cassandra、DolphinDB 三套方案,并说明未采纳原因与最终选择 DolphinDB 的过程与结果。
- 此前中低频分析主要使用 Python 进行计算。
- 在高频需求下,原体系反应速度非常慢。
- 选型需求包含高效处理时序数据与便于未来扩展。
- 未选择 KDB+ 的原因包括语言晦涩与学习成本高。
- 未选择 Cassandra 的原因包括需重构与维护成本增加。
- 页面表述 DolphinDB 在 21 年初进入选型讨论。
- 页面提及“非 KDB+ 即 DolphinDB”的趋势(低置信度)。
- 对照示例后,页面表述 DolphinDB 脚本更简洁(中等置信度)。
- 页面表述在一些例子中性能超越 KDB+(中等置信度)。
- 选型表决结果为 DolphinDB 以压倒性优势胜出(中等置信度)。
对 DolphinDB 的评价
从高性能、易上手与技术支持响应三个维度给出使用评价,并包含学习周期与交付速度等表述。
- 页面提到的总体印象包括高性能、易上手与及时支持。
- 页面表述可对实时数据快速计算与分析,实现毫秒级响应速度(中等置信度)。
- 页面表述脚本语言类似 Python(中等置信度)。
- 页面表述提供很多官方技术教程(中等置信度)。
- 具备 C 或 Python 经验者可在 2 周到 1 个月上手(中等置信度)。
- 页面表述技术支持响应速度非常好(低置信度)。
- 页面个案:新接口/函数需求可在不到一个月随新版本上线(中等置信度)。
文章最后(总结与推荐)
总结 DolphinDB 带来的业务改善,并表示会向国外同事推荐与期望其国际知名度提升。
- 页面表述 DolphinDB 给业务带来极大改善(低置信度)。
- 与国外同事交流时会推荐 DolphinDB(中等置信度)。
- 页面表达希望 DolphinDB 未来提升国际知名度(低置信度)。
客户简介
以行业与公司概况形式再次给出客户背景信息(私募;成立时间;服务机构数量与业务)。
- 客户行业为私募。
- 成立时间为 1963 年。
- 已服务超过 500 家世界顶级投资机构。
- 业务定位包括投资建议与独立调研报告。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| WILLIAM O’NEIL | 选择的产品 | 经过市场调研与产品性能测试,最终选择了 DolphinDB | high |
| 原有系统架构(WILLIAM O’NEIL) | 对高频数据处理的适配性 | 面对高频数据处理需求,原有系统架构难以进行有效处理 | high |
| WILLIAM O’NEIL(威廉欧奈尔) | 成立时间 | 1963年成立 | high |
| WILLIAM O’NEIL(威廉欧奈尔) | 业务定位 | 致力于为投资机构和投资者提供投资建议和独立调研报告 | high |
| WILLIAM O’NEIL(威廉欧奈尔) | 服务的投资机构数量 | 已服务超过500家世界顶级投资机构 | high |
| 威廉欧奈尔信息科技上海有限公司团队 | 职责范围 | 负责公司所有量化基金产品的业务,同时进行所有数据相关的技术研发 | high |
| DolphinDB(在 WILLIAM O’NEIL) | 处理的数据类型与用途 | 处理所有时序数据,主要用于因子研发、中高频数据处理和 tick 级流数据处理 | high |
| 每日新增数据量(WILLIAM O’NEIL) | 规模 | 1000万~5000万条级别 | high |
| 每日新增数据(若存为 CSV) | 体积 | 总共为 4~5 GB | high |
| 因子研发(WILLIAM O’NEIL 使用 DolphinDB) | 数据来源与方式 | 结合财报和日线数据衍生出大量因子 | high |
| DolphinDB | 用于因子研发的能力 | 分布式存储、分布式计算和实时流计算可用于因子存储、计算和建模 | high |
| DolphinDB(因子研发场景) | 对海量数据集处理与开发效率 | 可快速处理海量数据集,并用内置多范式编程语言高效开发不同风格因子 | medium |
| DolphinDB(因子研发流程) | 衍生因子生成方式 | 在计算得到一些因子后,可再次使用 DolphinDB 实时计算产生基于这些因子的衍生因子 | high |
| 投研效率(因子研发) | 变化 | 投研效率得到极大提升 | low |
| DolphinDB(因子评估) | 用途 | 用于因子评估以测试因子有效性 | high |
| 因子回测(此前方案) | 工具栈 | 之前使用 Python 加上国外某知名云服务商的数据库进行因子回测 | medium |
| DolphinDB | 回测工具 | 提供一些高效的回测工具 | medium |
| DolphinDB replay 函数 | 用途 | 可模拟真实生产环境,通过模拟回放将数据注入到流计算框架中,方便回测计算 | high |
| DolphinDB replay 回放 | 回放形式与速率控制 | 可使用不同回放形式,并设置不同回放速率进行匀速、倍速或极速回放 | high |
| DolphinDB replay 回放 | 多表回放能力 | 可将多个表的数据回放到同一张表中 | high |
| WILLIAM O’NEIL 因子回测业务 | 迁移计划 | 未来计划将该块业务逐渐迁移到 DolphinDB 中 | high |
| 中高频历史数据量(WILLIAM O’NEIL) | 规模 | 历史数据大概在 TB 级别 | high |
| DolphinDB(处理中高频数据) | 行情数据处理方式 | 对输入的行情数据使用时间序列聚合引擎生成分钟级 K 线 | high |
| DolphinDB(处理中高频数据) | 因子生成方式 | 根据分钟级 K 线使用自定义函数生成状态因子 | high |
| DolphinDB(处理中高频数据) | 输出与后续计算 | 将输出结果指向另一个流数据表以方便之后的其他计算 | high |
| 日线数据处理(WILLIAM O’NEIL) | 效果 | 在 DolphinDB 助力下实现日线数据的高效处理 | medium |
| 研究精度(WILLIAM O’NEIL) | 变化 | 将研究的数据精度推进到分钟级 | high |
| 研发效率(WILLIAM O’NEIL) | 变化 | 在降低开发成本基础上极大提升研发效率 | low |
| tick 级数据流架构(WILLIAM O’NEIL) | 搭建时间 | 去年搭建 | medium |
| Kafka 与 DolphinDB(WILLIAM O’NEIL) | 数据流架构 | 使用 Kafka 连接数据流,然后传到 DolphinDB 中进行计算分析,最后得到所需数据 | high |
| tick 级数据流框架(WILLIAM O’NEIL) | 实时产出能力 | 能够实时产生所需的市场信号 | medium |
| DolphinDB | 实时流计算框架核心部件 | 最核心的部件是流计算引擎和流数据表 | high |
| 流数据引擎(DolphinDB) | 支持的操作 | 可进行时间序列处理、横截面处理、窗口处理、表关联和异常检测等操作 | high |
| 流数据表(DolphinDB) | 作用 | 可作为简化版的消息中间件,实现数据发布和订阅 | high |
| 批流一体(WILLIAM O’NEIL 使用 DolphinDB) | 实现方式 | 投研阶段封装的基于批量数据开发的因子函数可无缝投入实际生产,实现批流一体 | medium |
| DolphinDB(在 WILLIAM O’NEIL 环境) | 延时水平 | 延时可以控制在毫秒级 | medium |
| DolphinDB(在 WILLIAM O’NEIL 环境) | 对需求满足度 | 毫秒级延时完全满足需求 | low |
| 此前中低频数据分析(WILLIAM O’NEIL) | 主要工具 | 主要使用 Python 进行分析计算 | high |
| 原系统(Python 为主的体系) | 在高频数据需求下的问题 | 不能满足理想数据处理需求,尤其数据分析反应速度非常慢 | high |
| 新产品选型需求(WILLIAM O’NEIL) | 能力要求 | 需要高效处理时序数据,并且方便未来扩展 | high |
| KDB+ | 未采纳原因 | 语言晦涩、学习成本过高 | high |
| NoSQL Cassandra | 未采纳原因 | 需要额外招人重构搭建且后续需专人维护,会极大增加成本 | high |
| DolphinDB 进入选型讨论的时间点 | 时间 | 21年初 | medium |
| 金融行业时序数据产品格局(页面表述) | 趋势 | “非 KDB+ 即 DolphinDB”的两家争霸趋势 | low |
| DolphinDB(相对 KDB+ 的脚本/语言) | 脚本简洁性 | 对照 KDB+ 算法例子展示后,使用 DolphinDB 语言编写脚本明显更简洁 | medium |
| DolphinDB(性能对比) | 相对 KDB+ 的性能 | 在一些例子中,性能超越了 KDB+ | medium |
| 基金经理(WILLIAM O’NEIL) | 对 KDB+ 的熟悉度 | 当时基金经理们大多熟悉 KDB+ | medium |
| 选型表决结果(WILLIAM O’NEIL) | 最终方案 | DolphinDB 以压倒性优势胜出 | medium |
| DolphinDB(总体评价) | 印象最深的特点 | 高性能、易上手与及时支持 | medium |
| DolphinDB(性能) | 实时计算与响应速度 | 可对实时数据快速计算与分析,实现毫秒级响应速度 | medium |
| DolphinDB(性能) | 对需求满足度 | 完全满足高效处理时序数据的需求 | low |
| DolphinDB 脚本语言 | 与 Python 的相似性 | 脚本语言类似 Python | medium |
| DolphinDB | 学习支持资源 | 提供很多官方的技术教程 | medium |
| 具备 C 或 Python 开发经验的同事 | 上手开发所需时间(页面表述) | 只需要2周、最多1个月即可对布置的项目上手开发 | medium |
| DolphinDB 技术支持团队 | 响应速度评价 | 响应速度非常好 | low |
| DolphinDB 新接口/函数需求交付(页面个案描述) | 上线周期 | 不到一个月,需求会随着 DolphinDB 的新版本同时上线 | medium |
| DolphinDB(业务影响) | 整体改善 | 给业务带来了极大的改善 | low |
| WILLIAM O’NEIL(跨国公司) | 推荐行为 | 与国外同事交流时会推荐性能优秀的时序数据库 DolphinDB | medium |
| DolphinDB(国际发展期望) | 期望 | 希望未来在国际上打出更高知名度 | low |
| 客户行业 | 行业 | 私募 | high |