ArcticDB 的优势何在?我们在量化金融领域处理海量 DataFrame 的解决方案

Abhi

Abhi Thakur

2024 年 1 月 5 日

1*ibCObt-z4ucdUbGicO3VUg

在量化和金融数据分析中从数据中挖掘价值,不仅仅是将原始数据转化为可用格式。事实上,在现代金融分析中,这些转化只是整个过程中的一小部分,之后数据科学才真正开始。

英国数学家 Clive Humby 在 2006 年曾说过一句名言:“数据是新的石油”,我们认为这句话至今仍适用。然而,一个当代的解读是,数据更像是一种可再生商品;因为它在整个数据价值链中不断地被重复使用、共享和更新。当今表现最佳的系统正是那些优化了技术和人员之间数据共享、重复使用和更新的系统。

量化和金融数据分析师可以被比作现代的工匠;就像钟表匠的工作室配备了用于制造复杂时计的专用工具一样,量化研究人员和工程师需要仔细考虑可用的工具,以便构建将数据、技术和人员整合在一起的复杂系统。

选择构建量化系统的正确工具包

构建工具包时需要考虑哪些最重要的因素?

为问题选择正确的解决方案:高度专业化的问题可能需要高度专业化的解决方案。用大锤砸鸡蛋是可能的,但这是最好的方法吗?

选择互操作性强的工具:工具需要具有适应性,并能随组织的变革、方法的演变而变化,并能与现有系统无缝集成。

保持高效扩展的能力:在现代数据科学环境中,工具应该能够从个人用户一直扩展到生产级系统。

重视隐形性:最好的工具是那些能无缝融入意识的工具;学习和使用的门槛应该很低。

我们如何利用 Python 和开源进行金融数据科学

我们是一个相信开源的技术团队。几年前,我们决定将我们的前台分析中心设在 Python 中。那时,Python 正在成为一种日益流行的开源语言。它的可读性和与其他技术的易于集成使其成为我们运行的工作流程的理想选择;我们将其用于从数据导入到复杂算法交易市场的各个环节。我们很高兴做出了这个选择,因为自那以后 Python 呈爆炸式增长;它的广度、可移植性和易于扩展性意味着它已成为大规模数据科学领域的通用语言。这加上其开源特性,促使了量化和金融数据分析专用工具的协作和社区驱动开发。

事实上,选择 Python 意味着我们能够利用丰富的工具生态系统,这些工具是为解决大规模量化数据科学问题而构建的。

我们拥有的最受欢迎的工具之一是 Pandas,这是一个强大的 Python 数据处理库。Pandas 提供了用于高效处理和分析结构化数据的数据结构和函数,使其成为量化研究人员和工程师的关键工具。借助 Pandas,用户可以轻松地清洗、转换和分析金融数据,执行统计计算并创建可视化。

它也是引入直观二维数据结构 DataFrame 的工具。DataFrame 特别重要,因为它通常是现代数据科学工作流程中的基本分析单元。

该领域的另一个重要工具是 NumPy。NumPy 是用于 Python 科学计算的基础包。它支持大型多维数组和矩阵,并提供了一系列对这些数组进行操作的数学函数。量化研究人员和工程师经常使用 NumPy 进行金融领域的数值计算和数学建模。

转向其他库,我们还要重点介绍 Scikit-learn,这是一个用于 Python 的机器学习库,它提供了简单高效的工具来增强数据分析和建模。它专门用于各种机器学习算法,提供分类、回归、聚类等功能。用户经常使用其特性进行数据预处理、特征选择和模型评估。

植根于 Python 生态系统意味着所有这些工具都具有高度的互操作性,从而易于构建定制扩展并进行维护。该系统以高效的方式解决了从数据中生成价值的问题。流经系统的是数据——其形式是 DataFrame,我们可以将其视为结合剂。

个人、团队和组织面临的问题是如何在不损失互操作性、隐形工具和组织效率的任何好处的情况下扩展 DataFrame。

扩展 DataFrame:ArcticDB

这是我们在 Man Group 面临的问题,也是我们开发 ArcticDB 的原因——ArcticDB 是一个量化金融数据库,其设计理念是基于我们对技术和人员驱动系统的原则。

解决问题

ArcticDB 解决的问题是使数据高度可用,占用空间接近零,认知负荷最小化。

在现代量化数据科学中,能够处理海量数据至关重要:典型的数据集可能有数十万列宽,数十亿行深。令人沮丧的是,没有 ArcticDB 的 DataFrame 的大小要小得多,相差几个数量级。我们还在 ArcticDB 中内置了智能功能,以优化处理金融数据的复杂性。

具有互操作性

ArcticDB 无缝融入 Python 数据科学生态系统,扩展了 DataFrame 作为公共主线的概念。

ArcticDB 的设计宗旨是快速使数据在现有系统中可用,而无需复杂地重构代码

高效扩展

ArcticDB 在边缘运行,它是一个客户端数据库,可以通过一个命令安装。它真正做到了无服务器,用户可以在自己的机器(物理或虚拟)上运行它,而无需配置专用的数据库服务器。C++ 引擎处理为用户检索数据的所有复杂性,他们无需思考,只需在 Python 中发送命令即可。

我们设计 ArcticDB 的目的是使其无需专用基础设施或管理即可扩展。它也设计为可用于生产环境,它为 Man Group 的前台分析提供支持,并正在其他金融服务组织中被使用。

隐形工具

我们在设计 ArcticDB 时考虑的最重要因素是它应该是一个能够赋能我们的工具。

Python API 设计的第一步和另一个重要元素是最大限度地减少认知负荷。ArcticDB 使数据高度可用,用户无需切换上下文;它以一种可立即使用的格式(DataFrame)带回海量数据。这意味着用户可以花更多时间专注于他们的数据科学——从而加快实现价值的时间。

Nick Clarke,ArcticDB 量化负责人

我从事量化工作多年,使用过许多不同的数据库技术。当我尝试 ArcticDB 时,我立刻意识到它的不同之处。我对此充满热情,因为它消除了处理数据的痛苦。这让我可以自由地专注于通过更好的模型创造价值,并最终解决业务问题。

结论

现代量化数据科学中的有效系统需要兼顾技术和人员。选择合适的工具包构建系统时,考虑上述所有因素非常重要:用正确的解决方案解决问题,重视互操作性,高效扩展以及工具的隐形性——这些因素结合起来,使技术成为团队的延伸,而不是障碍。

通过使用 Python 开源生态系统,可以构建一个在一定程度上实现这一目标的系统。但是,为了真正达到现代金融数据工作流程所需的流畅状态,我们必须关注数据的重复使用、共享和更新。需要考虑的基本分析单元是 DataFrame,以及如何解决针对我们在解决现代业务问题时使用的海量和复杂数据来扩展 DataFrame 的挑战。

ArcticDB 是我们对大规模 DataFrame 挑战的回答——我们发现它彻底改变了我们进行数据科学的方式,我们很荣幸能够与大家分享它。