探索OpenBB的设计

OpenBB是一个开源平台,使终端用户方便且无障碍地访问、分析和预测高级金融数据。OpenBB不是一个数据提供商,而是轻松连接用户到数据并提供与数据交互的工具,包括许多机器学习模型。

探索OpenBB的设计
一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK

OpenBB是一个开源平台,使终端用户方便且无障碍地访问、分析和预测高级金融数据。OpenBB不是一个数据提供商,而是轻松连接用户到数据并提供与数据交互的工具,包括许多机器学习模型。此外,用户可以配置个人设置并连接自己的API密钥到特定的数据提供商以定制他们的研究。虽然它们为基本数据(如历史股票价格)提供了默认来源,但更深入的分析需要连接API密钥。使用OpenBB,希望使用机器学习技术进行财务预测的用户无需支付昂贵的软件费用。

该产品有多种形式:软件开发工具包(SDK)、命令行界面(CLI)和Excel插件。SDK通过conda安装,并允许用户将其作为Python中的典型包进行交互。终端版本在网站上安装,用户直接通过命令行与产品交互,具有与SDK相同的功能。虽然产品是为终端用户设计的,但可能的接口将潜在用户限制为那些知道如何使用这些工具或愿意学习的人,因此他们目前正在开发一个更友好的Web应用程序,称为Terminal Pro。

1、架构

平台的核心组件被称为openbb-core,这是一个Python包,运行一个REST API,具有返回不同提供商金融数据的端点。应用程序的核心在于这个“core”中,所以我将简要介绍其他组件,然后专注于核心。从宏观角度来看,应用程序的整体结构如下所示:

图1. OpenBB架构概述。来源

SDK、CLI、Excel插件和Discord机器人是用户交互的地方,openbb-core是API和模型逻辑存在的地方,路由器和提供商将用户连接到外部数据。要获取特定公司的历史数据,使用openbb-equity。对于宏观经济数据,使用openbb-economy。一旦用户创建账户,他们可以在网站上的API密钥部分自由设置外部数据源的API密钥。这里的绿色方块只是某些数据源的例子,可以根据程序兼容性互换其他数据源。在提供者层,OpenBB使用Transform-Extract-Transform管道模式将数据返回给路由器,以便模型可以使用。

非机器学习组件的核心位于openbb-core中。这包含API的逻辑以及模型和功能的逻辑。REST API在openbb-core中定义,并使用FastAPI框架定义API,使用Uvicorn作为应用程序服务器。这是处理和转发HTTP请求的地方。

对于机器学习组件,有多种不同用途的模型,例如用于加密货币、股票、外汇和共同基金。机器学习模型通过Model-View-Controller(MVC)设计模式与显示和其他程序集成,下面会更详细地解释。根据应用的不同,有几十种模型可供选择。一旦加载数据,用户可以轻松尝试和比较多个模型的结果。这些模型存在于openbb-core中,并在用户登录后变得可用。主菜单如下所示:

图2. 可用功能的OpenBB终端仪表板

在较小的层面,整个程序由几个MVC模式设计构成。每个功能、每个ML模型和每个工具包都有与其相关的MVC模式。例如,在上面的图2中,预测工具包有自己的模型、视图和控制器Python文件。在这个工具包内,存在多个机器学习模型(~20个),每个模型都有自己的MVC文件。模型用于获取给定用例的数据并运行模型(如果需要),视图处理数据的显示,控制器处理协调。此外,OpenBB使用Poetry包来管理项目依赖项,并确保各种外部库和工具的平滑集成。

2、设计选择

OpenBB完全由超过100名贡献者和成千上万次提交构建而成。如上所述,程序的整体结构可以描述为由MVC模式组成的微服务架构。这种架构风格是一个重要的设计决策,使得更多人更容易贡献。例如,如果我想添加一个预测模型,我可以为该特定模型添加模型、视图和控制器Python文件,并相对容易地将其集成。这种模式便于将机器学习与框架的其余部分集成,模型存在于每个MVC模式的模型组件中。对于每个功能,使用pytest创建单元测试,以测试新功能的功能。继续上述示例,我会为每个单独的文件添加单元测试。这些针对每个组件的单元测试是批准拉取请求的检查清单的一部分。检查清单的目的是确保一个贡献者的工作不会对另一个贡献者产生负面影响,并确保新更改的功能正常。

OpenBB的另一个关键设计选择是希望连接用户到数据提供商,而不是成为数据提供商。虽然这对用户来说稍微增加了工作量——需要注册并从他们选择的数据提供商处复制粘贴API密钥,但它为用户提供了显著更多的灵活性。通过这种方式设计数据集成,用户能够自定义他们的体验并在他们选择的数据上使用提供的模型。从可扩展性的角度来看,对平台而言,简单地将用户连接到数据提供商并使用各自的密钥比提供自己的数据更有利。而不是必须支付大量数据的费用,他们转而与提供者建立有利双方的关系。

最后,关于界面的设计决策(或缺乏决策)。OpenBB的主要用户目前使用CLI、SDK或Excel插件。虽然他们已经意识到需要一个Web应用程序(命名为Terminal Pro),但最初决定通过CLI和SDK提供程序可能是为了在不必维护Web应用程序的情况下扩大初始用户群。很可能他们的大多数用户(希望将高级机器学习技术应用于金融数据的用户)足够技术熟练,可以通过CLI和SDK与程序交互,并且这些选项允许用户根据具体需求定制程序。此外,不维护Web应用程序允许贡献者快速集成和部署新功能和模型。

3、演示

我尝试了平台的终端版本。开始非常简单,只需从网站下载正确的版本,打开终端并导航到安装位置即可。要开始使用,您需要一个帐户,或者可以直接通过电子邮件或GitHub登录。一旦登录,您可以访问上述菜单。我想对特定股票应用一些预测模型。

首先,我导航到/stocks并加载了苹果和谷歌的数据。这会在CSV文件中加载历史股票价格数据,用户可以选择起始和结束日期。Stocks还有一个端点,/news,您可以轻松查看公司最近的新闻,链接也一目了然,如下所示。

图3. GOOGL的/stocks/news示例

加载数据后,您可以使用/candle显示它或下载为csv。这是Google的样子。

图4. GOOGL的历史价格表。能够绘图/下载
图5. GOOGL的历史价格图

现在我有了想要的数据,我可以导航到/forecast,开始探索可用的机器学习模型。由于Transform-Extract-Transform管道的存在,数据已经预处理并准备就绪。非常方便,不需要手动操作数据或更改任何格式。

进入/forecast后,您只需指定要在哪个数据上使用哪个模型。大多数模型是从statsforecast和darts导入的,两者都是包含许多预测模型的库。OpenBB中另一个有趣的模型是异常检测。我尝试了RWD(随机游走漂移)、一个预训练的RNN和其他几个模型。您可以指定要预测的时间范围。所有模型都可以指定自己的参数或接受默认值。这是我的Google股票在RNN上的结果:

图6. 2024年3月24日GOOGL当前周的RNN预测

总之,该平台非常方便、实用,并且具有极小的学习成本。牛津布鲁克斯曲线。还有一个完整的YouTube系列讲解了安装、设置和使用,这很有帮助。OpenBB为用户免费提供了高级的、深入的分析和预测工具。由于其架构和设计选择,最终用户在数据和模型方面保持灵活性,定制自己的体验。


原文链接:Exploring the Design of OpenBB

DefiPlot翻译整理,转载请标明出处

免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。
通过 NowPayments 打赏