Skip to main content

Extensions

The extension framework allows individual pieces to be installed and removed seamlessly within the environment, using only the desired data and toolkit extensions.

There are two primary types of extensions for the OpenBB Platform:

  • Data
  • Toolkits

The OpenBB Core installation does not include any toolkit extensions. Install the OpenBB Platform with all data and toolkit extensions from PyPI with:

pip install openbb[all]

When installing from source, navigate into the openbb_platform folder from the root of the project and enter:

python dev_install.py -e

This installs all extensions in editable mode, and the Python interface is compiled in, /openbb_platform/openbb/package, instead of the environment's site-packages folder. The tables in the next pages lists extensions as either, Core or Community. The Core extensions are installed by default.

A couple of notable differences between data and toolkit extension are:

  • In the OpenBB GitHub repo, extensions are all located under:

    ~/OpenBBTerminal/openbb_platform/extensions
  • An additional folder housing integration tests, with the tests folder staying empty.

  • There is a router file, and there can be sub-folders with additional routers.

  • Utility functions don't need their own sub-folder.

  • __init__.py files are all empty.

When an extension is installed or uninstalled, the Python interface will need to rebuild the static assets for the app to fully reflect the changes.

To invoke the build process, enter the line below from the command line:

openbb-build

Or

python -c "import openbb;openbb.build()"

This is not necessary when using the API, changes will be reflected on the next run.

Data Extensions

Details

Data extensions will expand the breadth and coverage of the data available in the OpenBB Platform. Each source (provider) is its own independent extension, even if there is only one endpoint accessible. This allows every data source to be inserted or removed, at any time, without disturbing the operation of the Core components.

Functions will appear in the Python Interface and Fast API only if a supported provider, for that specific endpoint, is installed. Additional Python libraries will be installed, where required, by the extension.

Provider Coverage

The total installed coverage can be determined through the Python interface, as a dictionary.

from openbb import obb
obb.coverage.providers

Installation

All data extensions are installed with similar syntax. Published data extensions will have names beginning with openbb. For example, yFinance.

pip install openbb-yfinance

Additions and removals update the router automatically to reflect the changes when the Python interpreter is refreshed. Below is a list of data provider extensions.

Uninstall any extension with pip uninstall.

pip uninstall openbb-yfinance

Available Data Extensions

Many data providers require an API key for access, use the name under the "API Key Name" column in the tables below when configuring the user settings.

Core openbb Providers

These packages are what will be installed when pip install openbb is run

Extension NameDescriptionInstallation CommandMinimum Subscription Type RequiredAPI Key Name
openbb-benzingaBenzinga data connectorpip install openbb-benzingaPaid
openbb-blsBureau of Labor Statistics data connectorpip install openbb-blsFreebls_api_key
openbb-cftcCommodity Futures Trading Commission data connectorpip install openbb-cftcFreecftc_app_token
openbb-econdbEconDB data connectorpip install openbb-econdbNoneecondb_api_key
openbb-imfIMF data connectorpip install openbb-imfNone-
openbb-fmpFMP data connectorpip install openbb-fmpFreefmp_api_key
openbb-fredFRED data connectorpip install openbb-fredFreefred_api_key
openbb-intrinioIntrinio data connectorpip install openbb-intrinioPaidintrinio_api_key
openbb-oecdOECD data connectorpip install openbb-oecdFree-
openbb-polygonPolygon data connectorpip install openbb-polygonFreepolygon_api_key
openbb-secSEC data connectorpip install openbb-secNone-
openbb-tiingoTiingo data connectorpip install openbb-tiingoFreetiingo_token
openbb-tradingeconomicsTradingEconomics data connectorpip install openbb-tradingeconomicsPaidtradingeconomics_api_key
openbb-yfinanceYahoo Finance data connectorpip install openbb-yfinanceNone-

Community Providers

These packages are not installed when pip install openbb is run. They are available for installation separately or by running pip install openbb[all]

Extension NameDescriptionInstallation CommandMinimum Subscription Type RequiredAPI Key Name
openbb-alpha-vantageAlpha Vantage data connectorpip install openbb-alpha-vantageFreealpha_vantage_api_key
openbb-biztocBiztoc News data connectorpip install openbb-biztocFreebiztoc_api_key
openbb-cboeCboe data connectorpip install openbb-cboeNone-
openbb-ecbECB data connectorpip install openbb-ecbNone-
openbb-federal-reserveFederal Reserve data connectorpip install openbb-federal-reserveNone-
openbb-finraFINRA data connectorpip install openbb-finraNone / Free-
openbb-finvizFinviz data connectorpip install openbb-finvizNone-
openbb-government-usUS Government data connectorpip install openbb-us-governmentNone-
openbb-nasdaqNasdaq Data Link connectorpip install openbb-nasdaqNone / Freenasdaq_api_key
openbb-seeking-alphaSeeking Alpha data connectorpip install openbb-seeking-alphaNone-
openbb-stockgridStockgrid data connectorpip install openbb-stockgridNone-
openbb-tmxTMX data connectorpip install openbb-tmxNone-
openbb-tradierTradier data connectorpip install openbb-tradierNonetradier_api_key; tradier_account_type ('sandbox' or 'live')
openbb-wsjWall Street Journal data connectorpip install openbb-wsjNone-

Have you published a data provider extension and want it featured on this list? Tell us about it! Open a pull request on GitHub to submit an extension for inclusion. Code contributions, for new and existing, data providers are always welcome.

Search PyPI to find more extensions.

Toolkit Extensions

Details

OpenBB Toolkit Extensions expand the Platform with functions for manipulating data and preparing it for display. The Core Platform installation does not install any toolkit extensions. The table below is the current list of toolkit extensions.

Extension NameDescriptionInstallation CommandCore/CommunityRouter Path
openbb-chartingRest API charting service and Plotly library.pip install openbb-chartingCommunityN/A
openbb-devtoolsAggregates dependencies that facilitate a nice development experience for OpenBB.pip install openbb-devtoolsN/A
openbb-econometricsEconometrics models for the Python interface only.pip install openbb-econometricsCommunityobb.econometrics
openbb-quantitativeFunctions for performing quantitative analysis.pip install openbb-quantitativeCommunityobb.quantitative
openbb-technicalFunctions for performing technical analysis.pip install openbb-technicalCommunityobb.technical

The sections below outline any specific installation considerations for the extension.

Charting

The OpenBB Charting Extension supplies charting infrastructure and services to the OpenBB Platform. Figure objects are served via REST API or Python Client. It utilizes PyWry for handling the display of interactive charts and tables in a separate window, with a Plotly library.

Functions with dedicated views return figures to the chart attribute of the OBBject response object. They are displayed with the class method, show().

tip

The openbb-charting is an OBBject extension, which means the general functionality is exposed in every command result.

The following packages are dependencies of the openbb-charting extension:

  • scipy
  • plotly
  • statsmodels
  • reportlab
  • pywry
  • svglib
  • nbformat
  • pandas-ta

Installation

Install from PyPI with:

pip install openbb-charting

For more information check the documentation of the openbb-charting extension.

Devtools

Please refer to the following PyPI distributed package.

This Python package, openbb-devtools, is designed for OpenBB Platform Developers and contains a range of dependencies essential for robust and efficient software development.

These dependencies cater to various aspects like code formatting, security analysis, type checking, testing, and kernel management.

The inclusion of these packages ensures that the development process is streamlined, the code quality is maintained, and the software is secure and reliable.

Included dependencies:

  • ruff: A fast Python linter focused on performance and simplicity.
  • pylint: A tool that checks for errors in Python code, enforces a coding standard, and looks for code smells.
  • mypy: A static type checker for Python, helping catch type errors during development.
  • pydocstyle: A linter for Python docstrings to ensure they meet certain style requirements.
  • black: An uncompromising Python code formatter, ensuring consistent code style.
  • bandit: A tool designed to find common security issues in Python code.
  • pre-commit: Manages and maintains pre-commit hooks that run checks before each commit, ensuring code quality.
  • nox: A generic virtualenv management and test command line tool for running tests in isolated environments.
  • pytest: A mature full-featured Python testing tool that helps in writing better programs.
  • pytest-cov: A plugin for pytest that measures code coverage during testing.
  • ipykernel: A package that provides the IPython kernel for Jupyter.
  • types-python-dateutil: Type stubs for python-dateutil, aiding in static type checking.
  • types-toml: Type stubs for TOML, useful for static type checking in TOML parsing.
  • poetry: A tool for dependency management and packaging in Python.

Each dependency plays a critical role in ensuring the code is clean, efficient, and functional, ultimately leading to the development of high-quality software.

While developing code for the OpenBB Platform, one should always install the DevTools packages so that the above development tooling is available out-of-the-box.

Installation

Install from PyPI with:

pip install openbb-devtools
info

When setting up the environment using the openbb_platform/dev_install.py script, the DevTools will also be installed.

Econometrics

The openbb-econometrics extension installs a new router path (obb.econometrics) and additional Python libraries:

  • scipy
  • statsmodels
  • arch
  • linearmodels
note

Statsmodels requires a C compiler be present on the system. Follow the instructions here for system-specific methods.

This extension is not accessible via REST API because statsmodels is not serializable.

Installation

Install from PyPI with:

pip install openbb-econometrics

To install from source in editable mode, navigate into the folder, ~/openbb_platform/extensions/econometrics, and enter:

pip install -e .

After installation, the Python interface will automatically rebuild on initialization.

Quantitative

The openbb-quantitative extension installs a new router path (obb.quantitative) and a few additional Python libraries:

  • pandas-ta
  • scipy
  • statsmodels

Installation

Install from PyPI with:

pip install openbb-quantitative

To install from source in editable mode, navigate into the folder, ~/openbb_platform/extensions/quantitative, and enter:

pip install -e .

After installation, the Python interface will automatically rebuild on initialization.

Technical

The openbb-technical extension is for performing technical analysis on time series data. It installs a new router path (obb.technical) and some additional Python libraries:

  • pandas-ta
  • scikit-learn
  • scipy
  • statsmodels

Installation

Install from PyPI with:

pip install openbb-technical

To install from source in editable mode, navigate into the folder, ~/openbb_platform/extensions/technical, and enter:

pip install -e .

After installation, the Python interface will automatically rebuild on initialization.