百万数据直接返回,高性能量化数据库Arctic,基于mongo的列存引擎

发布于:2022-12-19 ⋅ 阅读:(710) ⋅ 点赞:(0)

持续行动1期 44/100,“AI技术应用于量化投资研资”之可转债投资。

让我们一起“持续行动”10期,也就是1000天看看有什么效果。

第一期主要围绕量化投资的基础设施,包括数据存储,查询,因子计算,回测系统等,切入点是“可转债”。我们不是搞学术研究,调调参之类的,而是应用实战!就是要求做到按这个思考,你敢拿真金白银去市场上交易。

原定要开始继续讲回测系统,但今天要插入一个新主题:Arctic,基于mongo的高性能时间序列。这是一个朋友给我留言的,我看了下还不错。

昨天我们说用qlib做时间序列的基础设施(其实是不得已),qlib的数据库更新需要通过存成csv这样一个环节,增量很不方便,而且毕竟它不是真正的数据,对于一个查询确实不太方便。但直接基于mongo做因子计算性能太差了。

01 Arctic 北极

一个做量化的公司给出的评测结果:DophinDB排第一,然后就是Arctic。

https://github.com/man-group/arctic

文档地址:https://arctic.readthedocs.io/en/latest/

时间序列和交易数据的高性能存储,可以说有点为量化量身定制的意味。

而且背后的存储就是mongo,这个对我们来说,引入的成本小很多。

Arctic背后的公司是一家英国的资产管理公司

其实我一直比较倾向这种做交易的公司开源的组件,真是为量化而生!最直接的就是pandas,另外还有一个流计算框架叫faust,有机会也要介绍给大家。

02 Hello Arctic

官方给出的安装命令如下,国内可能会由于github不稳定不成功。

pip install git+https://github.com/man-group/arctic.git

我直接下载源码包,后使用python setup.py install进行安装

02 三种存储引擎

Arctic内置三种存储引擎:VersionStore,TickStore和ChunkStore。

ChunkStore就是按Chunk(块)来存、取dataframe,主要是对读做的优化,可以写入很大的数据集。

这里有一个关键技术,就是把“行存”变“列存”了,大家知识,现代很多分析型数据库都是列存,因为读取速度可以非常快。

Arctic似乎不支持mongo的auth机制。

mongo未开启密码认证的话,连接特别简单

from arctic import CHUNK_STORE, Arctic

a = Arctic('localhost')
a.initialize_library('mychunkstore', lib_type=CHUNK_STORE)
lib = a['mychunkstore']

然后我们初始化一个复合index的dataframe

写入mongo:

数据库里与我们传统使用mongo看到的不一样:

write和read是直接写入一个df和读出一个df,write是直接覆盖。

这里比较好理解,也挺有用,其实我们从tushare读回来的数据就是一个dataframe,我们做好_id的预处理后,使用insert_many插入到批量写入到mongo里,自动跳过_id冲突的数据。

mongo原生读写都不快,写其实还好,我们是离线计算。

按日期范围读取数据:

按列子集读取数据:

按data_range读取行子集,columns读取列子集,相当于读出一个子dataframe。

追加与更新:

append就是每天追加一个dataframe——这个我暂时未想到使用场景。

update会更新相应的date对应的行,如果是新增了列,那就新增一个列。

update功能很有用,update是若date已经存在就更新,若不存在就新增,无论是行,还是列。尤其是列这个,大家知道,行存数据库,当历史数据很大时,要新增一列是比较麻烦的,你要逐行去update,而列存的话,直接加上一列就好了。这个特征在量化里太重要了,比如4000支股票,我要加一列财务指标,我只需要对应好key, update就好了。

VersionStore存储一份数据的多个版本。

TickStore用于存储海量的交易tick数据,高频交易中用的较多。

目前看,ChunkStore在日频交易中较有用。

我们daily quotes数据可以写入 bond_daily 的chunk_store里,可快速按天和列读取指定数据。

后面评测下使用qlib和arctic读出全部的转债数据,并计算指标哪个更快——若是差不多或者arctic完胜,那么qlib的数据库就没有使用之必要,而且甚至qlib就没有使用之必要!

年化17.5%,十年8倍的“双低”转债策略:从零实现量化回测系统之三

飞狐,科技公司CTO,用AI技术做量化投资;以投资视角观历史,解时事;专注个人成长与财富自由。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到