上海财经大学基于DolphinDB的量化高频数据中心系统介绍针对豪爽史书数据搜集慢、拜望慢,行情及时执掌贫穷等题目,上海财经大学的实习团队测验搭筑一套职能优良、应用简单的新体例。他们测验过应用Hadoop、MongoDB等存储数据,但职能永远不行餍足需求。2019年因为杰出的试用体验,上海财经大学正式采购了DolphinDB时序数据库。本文将由谢斐教化先容基于DolphinDB的量化高频数据核心体例。
之前上海财经大学应用的体例正在数据存储、压缩、移用和运算等方面存正在很大题目,须要蹧跶豪爽时刻实行数据摒挡。为探求若何存储 CTP 数据,教研团队编写了一套特意存储豪爽二进制文献的压缩体例,但正在应用时发觉体例无法执掌众泉源冗余等题目。
咱们正在总结体验后作战了体例,能够直接存储 HDF5文献同时实行直接检索,不过该体例相应速率慢、无法动态处理数据。
之后咱们测验了 Hadoop 的 hive 系列,发觉该体例不行高效研讨布局化数据,须要将布局化题目转化为 MapReduce 剧本后实行执掌。
我和研讨团队用 Python 编写的基于 DolphinDB 的量化高频数据核心体例总体职能杰出,重要管理长时刻搜集众半据点、及时因子筹算和高频数据搜集等题目。目前这套体例仍然成为教学和科研中的主要器械。接下来本文将从研发布景、数据类型、功用架构、职能测试、选取 DolphinDB 和综上所述等方面临量化高频数据核心体例实行先容。
▪天性化需求:行情厂牌号准数据无法供给自界说的 MinBar、HourBar、贯串合约及自界说合约等拼接正派,导致量化战略无法实行。
▪史书数据搜集近况:数据量大,搜集慢,拜望慢。搜集一年数据也许要耗时几天,无法担保数据没有漏掉。
重要研讨 level2 的公然数据,网罗每只股票每3秒钟的速照数据,每10毫秒搜集众笔的逐笔成交数据和逐笔委托数据。通过数据商获取及时搜集数据和盘后数据,数据领域是全商场,网罗股票、债券、商品期货、金融期货和期权等。
咱们将这两种数据汇总正在一同,对数据实行备份、比对,冲洗和入库。正在目前的研讨中,咱们入库了2013年到现正在的商场全景数据,原始数据一共正在 60TB 驾御。
▪比拟守旧数据搜集计划,本套体例采用职能优良、牢靠性高的架构打算,能够实行高速、自愿搜集证券或期货的史书数据。
▪采用 ETL 计划团结数据布局,担保了数据质料和前后依赖干系,同时确保数据的相同性和安宁性。
▪扩展性强,声援 Python、C++、C#、Java 等接口对接第三方体例。
量化高频数据核心体例的核心功用重要分六大模块:数据搜集、数据存储、数据执掌、上层运用、状况监控和对外接口。数据核心功用模块的涌现图如下:
1.数据搜集:声援 CSV 文献,体例能够搜集 SQL、Orcale、万德、邦泰安、通联、聚宽等数据源的史书行情、及时行情及根底数据。
2.数据存储:应用 DolphinDB 存储网罗流形式和库形式的 Ticks 和 Bar、合约讯息、基类、因子及自界说合约。PostgresSQL 存储数据核心的日记、劳动、自愿或手动谋划及宗派前端数据库讯息。
4.上层运用:重要分处理后台和搜集劳动处理。处理后台供给合约处理功用,网罗盘查、自界说合约、贯串合约和因子等。搜集劳动处理网罗自愿或手动搜集处理数据,谋划劳动处理及数据完美性查抄。
5.状况运用:供给 AirFlow 更改平台的运转状况、日记任事及知照网闭。
数据核心应用 AirFlow 通过 TaskID、JobID 更改整体体例的运转挨次和状况。TaskID 和 JobID 能够担保数据搜集的完美性和失足重做机制。将搜集的数据写入 DolphinDB 集群和内存中以简单移用,同时对数据实行拼接和校验。体例供给 Exporter 输出接口,通过 Manager 后台对整个实行筑设和处理。数据核心体例的架构图如下:
辨别测试一致硬件条款下,采用 MongoDB 和 DolphinDB 两种数据库存储数据的体例搜集入库上海期货生意所一周 Tick 数据(712万条)的职能。整个测试数据如下:
之前应用 MongoDB 入库一周 tick 级的数据须要1000秒钟驾御。重构体例后应用 DolphinDB 众线程搜集宏汇的数据源,正在担保整体原始劳动的逻辑干系的根底前进行入库存在。由于 DolphinDB 目前还不声援同区众线程写入,于是我凭据 DolphinDB 的个性编写了入库步调实行劳动分配,入库上海期货生意所一周 tick 级的数据仅须要120秒钟驾御。比拟 MongoDB,DolphinDB 的速率晋升效益是比拟彰着的,足以声援咱们下锐意采购这套贸易体例。咱们正在应用其他开源体例时,比方做大数据并行时碰到过不少题目,不过无法实时取得管理。DolphinDB 的技艺声援团队正在数据入库和分区等方面为咱们供给了良众计划, 能够担保实时、专业的技艺声援。
用基于 DolphinDB 研发的量化高频数据核心体例读取深市某股票一年数据,整个测试结果如下:
之前是正在每台机械两块硬盘的情状下实行测试,将所罕有据放入一个库中实行执掌。现正在凭据 DolphinDB 技艺专家的倡导,提出对数据实行分区别外的新计划。目前的现实速率要比外中的速率愈加快。
借助 DolphinDB 专有的流筹算引擎,正在现实应用中能够实行10毫秒内因子筹算,比方获取行情,将行情数据转换成筹算因子如均线、K 线等然后实行存储,同时遵从需求订阅须要的众个合约和因子数据。
起初,DolphinDB 的职能很好。咱们正在2018年采购了5台 256GB 内存、十几 TB 硬盘的任事器和一套任事体例,重要研讨商场微观布局,比方研讨融资融券,思虑生意若何影响商场。再比方识别、探究订单户数据时,数据量概略正在每天八万万到一亿条。之前咱们每天要花概略3个小时去向理数据,修正数据分外贫穷。现正在应用 DolphinDB 供给的一站式任事只须要花30分钟即可竣工执掌,应用变得分外便捷。
正在做高频量化生意时,模子和参数的迭代是很速的,挑选以周为单元、一年的史书数据仍然正在单机上占用了很大内存。咱们之前应用 512GB 内存的任事器研讨相闭商场布局的课题,念以整体商场截面盘查良众证券的操作情状,须要的数据量概略正在 500GB 驾御,往往会超限。
于是咱们须要做一套分散式的执掌体例,这对咱们团队的代码编写和步调打算才略有很高的央浼。因为咱们不是并行执掌方面的专家,我会用 Python 或者 MATLAB 正在众节点平分开筹算,但面临数据正在500GB 以上的场景时依旧比拟力所不及,须要用小的截面屡次去做,然后统计全体截面数据寻找闭系性。这块职责的强度很大,而且须要花费不少时刻。
不过正在应用 DolphinDB 后,研讨变得分外简单。全体节点的总内存是1.0TB,DolphinDB 执掌这个范畴数目级的数据是比拟安宁急速的,能够自愿实行分散式筹算。
其次,DolphinDB 上手速,研习门槛低。由于 DolphinDB 的剧本说话是类 SQL 的逻辑,我会调动学生先研习 SQL,学会用 SQL 读取数据后,再研习应用 DolphinDB Script 实行丰富操作。因为学生都有 Python 根底,正在研习 SQL 后概略一个星期就能上手 DolphinDB。教学实质网罗数据导入、盘查、战略回测和 DolphinDB 的少许个性操作如外拼接等。对待学金融和量化投资的学生来说,DolphinDB 是一套上手容易、应用友谊的数据库。
基于 DolphinDB 研发的量化高频数据核心体例很好地餍足了每天实行及时战略回测、模仿生意等营业的需求。不管是学校的科研项目,依旧与券商、基金公司等配合的项目,越发正在高频量化场景等主要场景中,都市应用这套体例来拓荒相应的战略和运用。
目前 DolphinDB 仍然正式成为我的量化投资和步调化生意课程中分外主要的一局限。我以为 DolphinDB 勤学、好用、好维持,分外适合IT气力单薄的机构。咱们与 DolphinDB 的配合是彼此尊崇、友谊踊跃的,诚挚欲望来日能够有更众的配合机缘。