首页 > 编程学习 > 盈米基金如何实现基金实时评价的百倍提速?

产品总监 李一芃、数据团队负责人 贺云晓

珠海盈米基金销售有限公司(以下简称“盈米基金”),是一家深度运用互联网技术、深度耕耘泛资管行业的创新型金融科技公司。盈米基金致力于用买方投顾的理念及实践改变中国人买基金的方式,帮助更多的客户实现可持续回报。

盈米基金在量化分析及投研成果开发的场景中应用 DolphinDB,投资研究与科技实现团队在 DolphinDB 的协助下提升了应用实现效率。

本篇文章主要分享盈米基金使用 DolphinDB 的具体场景、业务改善、选择理由、学习经历和使用感受。

使用 DolphinDB 的业务场景

由蜂鸟开发迭代的盈米蜂鸟投研系统,通过复杂的后台计算,实时为用户提供即时的投资研究相关的工具应用,为专业机构投资者提供了交易运营服务及投研投顾业务解决方案。

目前我们主要研究日频数据,研究的数据类别包括全量的基金净值,报告的截面数据等。目前全市场基金数据包含1万多只基金产品,由于基金成立时间不一,日频净值数据年增300万的数据量,数据计算量十分庞大。

虽然在具体投研中数据的频率和总量较低,但是我们需要基于存量数据进行大量且复杂的实时计算。在此过程中,涉及到很多时间窗口对齐、标的过滤的连表操作。之前我们使用的其他方法,开发复杂度很高,同时计算效率非常不理想。因此,我们亟需强大的算力支持,实现高效处理数据的存储、查询与计算。目前,在使用 DolphinDB 后,我们的查询和计算的效率已经达到了200~300倍的提升。

DolphinDB 在我们的业务场景中主要被用于实现投研系统的算法工程化,其在数据查询与计算方面可以达到毫秒级响应,完全满足了我们的性能需求,实现对各种模型指标的实时计算。

此外,我们用 DolphinDB 支持算法来实现各种功能,比如计算基金的各种业绩评价指标,构建风格因子等。通过这些功能帮助客户进行高效投研。

DolphinDB 带来的业务改善

目前,对于业务带来的最大的改善是计算性能和研发效率的明显提升。

相比之前使用其他系统,新系统完全满足了用户操作秒级响应的需求,部分场景下的计算速度甚至是之前的300倍以上。

此外,使用 DolphinDB 极大加快了项目的投产速度,简单估算,现在的研发速度是之前的4~5倍。

计算性能和研发效率的提升不仅仅会优化用户的使用体验,更重要的是在金融市场诸多细分领域为用户创造更多具有投研价值的产品及服务从而发现更多的投资机会。

选择 DolphinDB 的理由

经由推荐,我们对于 DolphinDB 有了初步的了解,并且了解到其提供的服务能为我们目前算力、数据等方面提供支持。之后我们搜索了研报和一些排名数据,发现 DolphinDB 在全球时序数据库中位列前茅。最令我们惊喜的是,DolphinDB 超越了传统数据库功能,提供了分布式存储、编程建模与高性能计算的一站式大数据解决方案。

之后我们正式进行了数据库选型。从多个维度谨慎对比 DolphinDB了与同类型其他产品。经过全面的资料对比与性能测试,最终我们选择了高性能的分布式时序数据库 DolphinDB。

在产品对比中,除了存算性能,我们还考虑了如下三大因素。

首先,是否具备金融属性。许多数据库产品只提供一些通用功能。但是 DolphinDB 提供了投研方面非常便利的高效工具,比如内置丰富的金融场景的相关函数,能够快速实现一些复杂的数据分析需求。此外,DolphinDB 提供大量的截面计算和连接引擎等,能够对数据清洗和分析进行快速验证。

其次,是否支持多种接口。我们在使用中会涉及多系统的对接,无论在系统的对接,还是在接口的定制和使用上,DolphinDB 都具备良好的扩展性。

最后,是否易上手易使用。DolphinDB 的学习门槛很低,大多数研发和投研人员可以快速上手。同时,DolphinDB 对很多计算函数及引擎做了较好的优化,在迁移已有的计算和实现新的计算需求时,我们不需要考虑太多底层优化的事情。

一周上手 DolphinDB

正式达成合作后,我们团队面临的挑战是——项目进度紧,了解并熟悉 DolpinDB 使用的时间短。DolpinDB团队提供了专人支持,配合我们团队成员只花了一周的时间就实现了上手。在前半周,我们认真学习了 DolphinDB 提供的培训材料。后半周对着接口文档查询各种资料,同时在 ask.dolphindb 的社区里搜索相关的用户问答。通过结合使用这三项工具,我们很快就实现了 DolphinDB 的基本运用。

在后续使用中,我们会产生一些或大或小的技术疑问。这时我们会带着这些问题寻求 DolphinDB 技术支持团队的帮助。在交流技术问题与解决方案的过程中,技术支持们会非常积极地帮助我们寻找、复现和解决问题。我们可以切实感受到 DolphinDB 技术支持团队成员的专业度,以及技术服务的及时性。在技术团队的帮助下,大概一个月后,我们就做到了真正熟练使用 DolphinDB,通过自主编写代码完成项目。

回顾学习及使用 DolphinDB 的经历,我们认为想要用好 DolphinDB,必须要做好以下三件事:

  • 要有具体的使用场景。学习 DolphinDB,本质上也是学习一门编程语言。有了具体的使用场景才能用好语言,只有用得好才算真正学会了这门语言。

  • 要有具体的使用数据。DolphinDB 是一款数据库,数据库的使用定然需要大量数据的支持。有了使用数据,才能跑出各种模型;有了使用数据,模型才能进行使用。

  • 要学会用 DolphinDB 的思维来写算法。我们发现 DolphinDB 相比 Python 还是有一些不一样、但是使用体验更佳的地方。举例来讲,Python 习惯于使用矩阵的思维去做计算,有时计算逻辑会非常复杂;而 DolphinDB 有很多基于字段、基于 SQL 的语法糖,这些语法糖在方便使用者的同时极大加快了研发效率。在习惯 DolphinDB 的算法思维之后,使用自然会变得更加顺利。

关于 DolphinDB 的使用感受

使用 DolphinDB 已有些时日,我们也见证了团队成员从刚开始的辛苦学习,到逐渐接受并且认可 DolphinDB 的强大与便捷,再到大家开始主动探索 DolphinDB 的更多功能。在这个过程中,大家也分享了很多关于 DolphinDB 的使用感受,总结后共有如下五点:

  1. DolphinDB 使用体验非常好。这是同事们最大、也是最深刻的使用感受。DolphinDB 针对金融领域提供了很多方便开发的工具。比如 window join、context by 这种功能点非常好用,有效避免了一些复杂逻辑。很多同事之前习惯使用 Python,但在接触 DolphinDB 后也会被这些引擎和函数惊艳到,确确实实地感受到开发变得更加便捷。

  2. DolphinDB 是轻量级的。如果一款产品技术太重,是很难被引入一个团队并且真正使用起来。如果一款产品不够轻量级,就无法做到将很多复杂的架构和复杂的体系完美地融合在一起。但是反观 DolphinDB,真正做到了产品的轻量,并且在保持轻量的同时提供了很多接口,具备良好的扩展性。

  3. DolphinDB 的存储性能非常优秀。压缩比例非常高,最高可以达到10:1。当前项目因为数据总量不大,压缩对节省存储空间的意义一般,但是在并发请求时,对提升磁盘 IO 效率很有帮助。

  4. DolphinDB 的计算性能非常优秀。这一点我们团队、尤其是负责算法的同事有着深刻体会。同样的算法例子,使用 Python 可能需要两分钟才能执行完成,但是 DolphinDB 的执行时间只需要一秒。

  5. DolphinDB 非常好上手。前文也分享了我们学习 DolphinDB 的经历。一周实现基本上手,一个月达到熟练使用,对比其他产品的学习周期,我们认为 DolphinDB 的学习门槛是比较低的。

让一款产品真正应用于一家企业并不容易,从接触了解到引入准备,从探索磨合到落地实践,需要团队上下每个成员的齐心努力。从敲定项目到引入 DolphinDB,再到第一个版本的成功上线,其实只是很短、甚至不到一个月的时间。而 DolphinDB 也确实得到了开发团队、产品团队和研究员们的一致认可与接受。大家都在各自的领域发光发热,一起探索如何最大化地将 DolphinDB 给用起来。

衷心希望盈米基金和 DolphinDB 可以保持长期合作,相互拥抱、相互成就。让我们一起在投研系统的建设方面做出更多创新性的合作,一起推动未来行业的蓬勃发展。

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式