复杂因子秒级计算,文谛资产是这样做到的...

Posted DolphinDB智臾科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复杂因子秒级计算,文谛资产是这样做到的...相关的知识,希望对你有一定的参考价值。

上海文谛资产管理有限公司(以下简称“文谛资产”)秉持理性、务实、高效、专业的投资精神,凭借科学的量化投资战略、先进的量化交易技术和成熟的风险管理能力深耕量化领域,以创造长期稳定收益为投资目标,为国内外投资者和合作机构提供专业的投资服务。文谛资产业务持续保持稳健发展,公司主要从事 CTA 和股票的量化策略研究与运作。

本文由文谛资产的首席策略官刘一夫、首席框架官吴永华、首席数据分析师王哲共同撰写,分享关于 DolphinDB 的使用场景、使用效果、技术服务、选型过程和学习经验。

文谛资产首席策略官 刘一夫
文谛资产首席框架官 吴永华
文谛资产首席数据分析师 王哲

大数据技术的飞速发展为量化投资注入了新鲜活力,随着数据挖掘工具的更迭换代,各大投资机构也在不断夯实自身的数据处理和分析能力。文谛资产作为量化统计及应用数学领域的投顾专家,在存储、计算和分析大量时间序列数据的过程中,选择了高性能的分布式时序数据库 DolphinDB 作为强有力的研究工具。在合作的三年间,DolphinDB 为文谛资产提供了集数据库、分布式计算和编程建模于一体的专业服务。

使用场景

我们主要在行情存储、因子挖掘和模型回测三方面用到了 DolphinDB。

行情存储

在行情存储方面,我们主要使用 DolphinDB 进行数据的入库、清洗与查询。

在存储数据时,我们借助 DolphinDB 的分布式特性,通过提前确定好数据导入的分区字段与分区粒度,提高后续数据检索与分析的效率。比如在查询数据时,DolphinDB 会以分区字段为数据过滤,通过 SQL 引擎快速定位要查找的数据块,从而避免对整张表进行扫描,这极大提高了查询速度。此外,为方便后续的数据分析工作,我们会使用 DolphinDB 对海量时序数据进行高效清洗, 找出并消除残缺、错误或重复的数据,进而输出一份高质量的、满足业务需求的数据。相比其他数据清洗工具随着数据量的增大自身性能会下降的情况,DolphinDB 在实际应用中能够保持稳定性能

因子挖掘

在因子挖掘方面,我们主要使用 DolphinDB 处理数据量庞大、运算复杂的工作任务。

目前我们处理的总数据量大概在几十 TB每日新增数据约为 70GB。在使用过程中,我们不仅会用到 DolphinDB 高速存取数据的基本功能,同时会用到其内置的多范式编程语言多种计算引擎

比如在处理一些 tick 数据时,我们会使用 DolphinDB 完成前期的一些运算,然后通过 Python API, 将计算结果导入 Python 模型进行组合。其中我们会用到 DolphinDB 的流计算框架,进行流数据的发布、订阅、预处理、实时内存计算以及复杂指标计算等。以 DolphinDB 内置的时间序列聚合引擎为例,仅需设定几个参数指标,配合 wsumcorr 等聚合函数的使用,就可以快速方便地实现复杂的滑动时间窗口聚合计算

模型回测

在模型回测方面,我们会用到 DolphinDB 提供的函数接口、元编程和计算框架,根据这些现有的方法和框架来进行高效回测

一些现成函数如 context bycrossStat 等的使用可以帮助我们大大提升数据处理、特别是编程的工作效率。例如 context by,该函数作为 DolphinDB 的独创功能可以实现对时序数据的快速分组。相比 group by 每组只能返回一个标量值的特性,context by 可以使每一个组返回一个和组内元素数量相同的向量。并且在回测工作中,group by 只能配合聚合函数使用,但是 context by 可以与其他聚合函数、移动窗口函数或累计函数等结合使用,这极大方便了研发工作。总的来说,DolphinDB 独创的诸多函数功能丰富、使用方便,切实有效地帮助我们提升了回测效率

同时,我们会使用 DolphinDB 的元编程功能。利用元编程设计的程序具有读取、生成、分析及转化其他程序的功能。通过生成动态表达式以及延迟执行的元编程,使得研究人员即便在代码运行时仍可自行修改代码。此外,一些计算框架如 MapReduce 帮助我们进行并发计算,极大提升了计算效率

使用效果

在行情存储方面,我们的研究人员能够清晰感受到 DolphinDB 的压缩比率之高和数据落库速度之快。举例来说,在处理几十 TB 的历史数据时,需要在 DolphinDB 中压缩数据,而 DolphinDB 的压缩比例非常优秀, 最高可以达到 10:1,能够切实地满足我们的业务需求。

在因子挖掘方面,我们经常会计算一些复杂因子。比如使用单日新增数据计算一个复杂因子,可以实现秒级计算。如果使用大量的历史数据,整个测试的运算时间甚至可以控制在分钟级别。

在模型回测方面,由于 DolphinDB 支持数据项目化的批量处理,因此总体的回测效率很高。比如在进行某个特定参数的测试,整体时间可以控制在 1 分钟内。再比如对大量历史数据测试全方位的特定参数,从逻辑的实现到最后的产出,整体效率非常高。

技术服务

谈及对 DolphinDB 最深刻的印象,就是技术支持服务。

2020年,我们与 DolphinDB CEO 周小华博士及技术团队当面进行了深入交流。周博士为我们提供了许多专业的建议,同时技术团队针对我们的业务需求进行了详细记录,并且在后续的跟踪服务中帮助我们逐一实现了需求。

在之后的使用中,我们也会遇到技术疑惑与功能需求。比如今年在处理一些高频数据时,我们急需一些函数的详细用法。在与我们沟通后,DolphinDB 的工程师及时教授了我们关于函数的构建、以及改善调优的方法。在平时的技术咨询中,不论是多晚,即便有时是在周末,我们总会得到技术支持工程师们的及时回复。当然,除了技术咨询,我们也会向 DolphinDB 提出一些开发需求。比如实现因子,虽然有些因子是不常规的、甚至非常复杂,DolphinDB 的工程师们都会通过现有的功能向我们提供支持。还有必须提的一点,我们曾经向 DolphinDB 沟通了一个特别的功能需求,结果这个功能很快就在下一个版本中得到实现。从需求的提出到功能的实现,整体速度确实是非常惊人的。

无论是支持效率,还是专业程度,我们对 DolphinDB 的技术支持服务都非常满意。

时序数据库选型

我们在选型时对比了多家时序数据库,其中主要考虑的是 Kdb+与 DolphinDB。

Kdb+作为金融领域的老牌时序数据库,虽然名气大、使用面广,但是其作为国外厂商缺乏国内的技术支持,并且其语法晦涩,培训成本和学习成本较高。

DolphinDB 在查询和存储方面的性能明显优于其他数据库,其具备的多种流计算引擎对于流数据处理非常友好。同时 DolphinDB 具有高压缩比,内置丰富的金融函数库,可以极大便捷研发生产。此外,DolphinDB 可以提供及时专业的技术支持,同时上手门槛较低。

最终,我们选择了集存储、计算与开发于一体的高性能分布式时序数据库 DolphinDB。

学习和使用经验

总体来看,DolphinDB 的入门是比较容易的。如果有 Python 和 SQL 的语法基础,那么只需一两周的时间就可以上手 DolphinDB

若要更加精进地使用 DolphinDB,需要对 DolphinDB 进行更加深入的了解。首先要了解存储引擎的架构,目前 DolphinDB 使用的是 OLAPTSDB 两种引擎,可以提供很高的写入吞吐。其次,要深入理解数据库的设计原理,比如分区表的工作原理,这会大大提升数据查询的效率。然后,在数据计算方面要学习一些高效处理所需的函数,这样在实际业务场景中可以更加自如地使用函数。最后,要保持一颗学习的心态。因为 DolphinDB 在不断地优化提升,不断地扩展迭代一些新的功能,要用好 DolphinDB,一定要保持学习态度、紧跟版本技术动态。

结尾

在友好合作的三年间,DolphinDB 切实有效地助力文谛资产进行量化投研。希望 DolphinDB 可以精益求精,未来在行业中的发展越来越好,越来越强。文谛资产也会坚守不断追求创新、大胆向前的精神,推动量化投资向更高更远发展。

上海文谛资产管理有限公司简介

上海文谛资产管理公司在中国上海自贸区注册成立,注册资金1000万元人民币。2018年取得证券投资基金业协会会员资格,2019年取得“3+3投顾资格”。

公司以科学的量化投资战略、先进的量化交易技术和成熟的风险管理能力为国内外投资者和合作机构带来世界前沿的投资服务体验,以创造长期稳定收益为投资理念及投资目标。目前企业的合作机构包括国信证券、光大证券、国海证券、国新证券、华泰期货、兴证期货、东证期货、五矿期货、上海信托等金融机构。

以上是关于复杂因子秒级计算,文谛资产是这样做到的...的主要内容,如果未能解决你的问题,请参考以下文章

腾讯 PB 级大数据计算如何做到秒级?

易仓跨境Saas全球租户,如何做到数据秒级响应?

clickhouse微信基于Clickhouse的实时数仓

组合数(阶乘数质因子分解)

模拟测试54

什么是时序时空数据库TSDB