乐商网_商业资讯网站
您当前的位置 : 乐商网  >  资讯
如何高效提升量化投研效率?来自辰钰投资的案例分享
2022-09-30 11:35:03 来源:互联网 阅读:-

面对海量增长的高频数据,关系型数据库多次崩溃。在对 DolphinDB、MongoDB 和 KDB+ 进行充分调研对比后,辰钰投资选择了高性能、易学习、同时提供丰富金融函数的时序数据库 DolphinDB。在DolphinDB 的助力下,辰钰投资的量化投研效率得到极大提升。本文将由辰钰投资分享使用DolphinDB的具体实践。

本文作者:辰钰投资 董事长 李栋,董事 陈志凌, 高级工程师 苏虎臣

图1 辰钰的核心策略发展图

目前辰钰投资使用的系统可以轻松实现 Tick-to-trade 微秒级延时,支持多策略、大并发报单,同时支持券商多种风控模式,形成了低延时、高并发、强风控的显著优势。


投研到交易,全流程效率提升

在系统中,我们使用高性能时序数据库 DolphinDB 来帮助提升投研和交易的生产效率。面对每天 20GB 左右的新增数据,DolphinDB 在我们的研究端起到了支撑作用。目前我们的主要业务是数据挖掘和策略研究。在做量化的过程中比如进行因子挖掘、性能计算时,对数据处理的性能要求非常高。在使用 DolphinDB 后,业务效率提升了5-10倍。

图2 DolphinDB 的系统架构图

首先,我们使用 DolphinDB 进行数据的准备、清洗和挖掘。比如数据清洗。随着数据量的持续增长,难免出现残缺、错误或者重复的数据,那么在进行因子挖掘、策略研究等操作前要先找出并消除这些不符合规范的数据。之前使用的数据清洗工具的性能会随着数据量的增大而下降,无法处理 TB 级别以上的数据。但是通过 DolphinDB 内置的分布式文件系统,合理设计分区,分布式计算与数据清洗性能基本不会随着数据量的增大而下降,目前效率提升超过70倍。

其次,使用 DolphinDB 强大的流数据功能助力指数增强、CTA、套利等方面策略研究。比如中证500指数增强,我们以大量全新的 Alpha 因子为技术核心,同时结合全新改版的交易算法和日内回转交易算法进行选股。在研发环境中,以行情回放的方式模拟实时数据流,通过流数据订阅发布机制和时间序列聚合引擎、响应式状态引擎、横截面引擎等多种流计算引擎,实时高效地计算主买、主卖等量价指标,极大地提升了研发效能。

最后,我们使用 DolphinDB 的分布式计算功能处理高频数据。研发策略时,需要处理大量的逐笔行情数据,之前使用的关系型数据库的性能非常差,远远不能满足我们的业务需求。DolphinDB 的分布式架构可以轻松实现对海量数据的毫秒级快速访问和计算。再比如处理一些股票或者标的,每天要进行几十万、甚至上百万笔的自动交易,关系型数据库很难对此进行处理,但是 DolphinDB 可以快速基于逐笔数据建立策略,极大提升了研发效率。由于团队的技术人员大多熟悉 Python,在实际使用中,我们将 DolphinDB 封装成一个库,可以通过 Python 直接进行访问。仅仅通过一行命令就可以高效、充分地使用 DolphinDB 的海量存储和快速计算功能。


存储大 PK

在使用 DolphinDB 前,我们先后使用过文件系统、MySQL 和 PostgreSQL 存储数据。

之前使用文件系统会先将数据落在本地,然后用 Python 进行计算。但是文件系统在实际应用中存在一些不足。首先,在存储过程中文件系统的 IO 是一个很大的瓶颈。其次,在处理大量数据时,文件系统过于庞大,进行存储、查询等操作费时且费力。同样地,MySQL 和 PostgreSQL 这两个数据库在实际测试中都非常慢。如果要处理的数据量很大,系统甚至会无法工作。

因此,我们想要搭建一套新的系统。主要考虑的数据库有 DolphinDB、MongoDB 和 KDB+。

由于 MongoDB 缺乏函数支持、旧代码改起来比较费劲,KDB+的语言较难学习,整体上手很慢,所以我们放弃了这两个数据库。

反观 DolphinDB,性能比 KDB+更好,语言类 SQL 容易上手,同时提供丰富的金融函数。在低频转向高频的过程中,原来的系统无法处理骤然剧增的数据,但 DolphinDB 是这方面的专家,相较之下新系统的速度可以提升10倍左右。在处理逐笔数据时,相比之前使用过的文件系统,现在的系统效率得到大大提升,并且使用起来也非常方便。此外,DolphinDB 作为一站式数据库,综合了分布式存储、编程建模和高性能计算,可以在研究时快速抽取某些特定的数据,这大大加快了我们的研究进度。


代码“惊魂”

因为之前的很多业务都用 Python 进行相关计算,所以需要将代码转移到 DolphinDB 中。当时发生了一件极其反常的事情——用 Python 和 DolphinDB 分别计算同一个问题,但最后得到了不同的结果!

究竟哪个计算结果是对的?为什么会发生这种情况?会不会影响到实际生产?

带着这些疑虑,我不断进行调试,最后发现原来是Python的脚本出现了编写失误。一个因子有很多计算方法,必须深入到每个因子的具体需求才能对应实现,相应的代码也会较为复杂。当时 Python 的脚本中使用了很多嵌套循环,编写的代码较多较复杂,难免出现脚本编写错误的情况。但是 DolphinDB 的语言非常简洁,实际中不需要那么多循环,只要一行代码就可以全部解决,这大大降低了脚本出错的概率,同时也可以减轻开发人员的压力,有效提升研发的效率。


本文最后

我觉得想要用好 DolphinDB,关键在于理解架构。只有清楚一些技术细节比如分区表的设计原理,才能高效使用工具进行量化投研。刚开始使用 DolphinDB 的时候,我发现使用时系统的反应速度并不是特别快,后来研究了 DolphinDB 的底层架构后,我重新优化了代码,发现速度立刻提升了很多。所以我觉得 DolphinDB 比较考验使用者的水平。使用不同的设计方法解决具体的业务问题,会得到完全不一样的效率。

在此简单分享我司使用 DolphinDB 提升投研效率的经历。希望有更多的朋友了解并使用高性能时序数据库 DolphinDB!

推荐阅读:叶紫网

频道推荐
  • 娱乐新势力、互动再升级 高达中国计划发布 万代南梦宫中国市场再提速
    娱乐新势力、互动再升级 高达中国计划发布 万

    高达中国计划(简称GCP)正式发布。2021年,实物大自由高达立像将会震撼登场,这将会成为上海新的消费旅游地标,以及众多高达粉丝的圣地。在7月11日线上举行的G...

    2020-07-13
  • 秋刀鱼又硬又小为啥日本人那么爱它?哈尔滨网友:只怪我知识浅薄
    秋刀鱼又硬又小为啥日本人那么爱它?哈尔滨网友

    秋刀鱼又硬又小,为啥日本人那么爱它?了解原因:只怪我知识浅薄。秋刀鱼是日本的一种名菜,日本人最喜欢这种肉食。比起鱼子酱,更多的日本人喜欢吃秋刀鱼,当地人把这种鱼...

    2020-02-12
  • 一口电饭锅就能做的六道烤箱美食,快来学习一下
    一口电饭锅就能做的六道烤箱美食,快来学习一下

    对普通的家庭来说,日常的各种吃食一般用不到烤箱,所以厨房也就一直没有配备烤箱,那么在这个时候如果自己想吃一些好吃的美食的话,除了去外面店买之外也没有其他得更好的...

    2020-02-12
  • 不要再买枣糕了,教你在家自己做,香甜可口,比买的还要好吃
    不要再买枣糕了,教你在家自己做,香甜可口,比

    枣糕可以说是一种从小吃到大的甜食,从小就喜欢枣糕的味道,每次去超市或者蛋糕店的时候总是要买上几块吃。味道特别丰富,红枣的味道充斥在其中,香甜可口,特别诱人。现在...

    2020-02-12
  • 世界十大冰激凌排行榜 世界顶级冰激凌品牌
    世界十大冰激凌排行榜 世界顶级冰激凌品牌

    爱吃冰淇淋的你知道世界十大冰激凌排行榜是怎么样的吗?哈根达斯、COLD STONE、VIVOLI GELATO、COPPELIA、BERTHILION、Dair...

    2020-02-12
  • 四菜一汤,精美套餐
    四菜一汤,精美套餐

    可乐鸡翅鸡翅中 8个可乐 半瓶葱 适量姜 2片生抽 适量料酒 适量冰糖 5粒老抽 少许盐 适量鸡精 适量1.把鸡翅洗净后背面划几刀,正面用牙签扎些小眼方便入味。...

    2020-02-12
  • 无法拒绝的温暖,甜蜜的中式甜品了解一下
    无法拒绝的温暖,甜蜜的中式甜品了解一下

    现在的人一说到甜品,就会想到蛋糕、马卡龙、蛋挞还有各种派这样子的西式甜品,不得不说,在甜品这方面西方确实做得很好。但西式甜品的入侵,也导致了许多人对于我们传统的...

    2020-02-12