Files
OpenBB/openbb_platform
Henrique Joaquim b43364b465 [Feature] OpenBB Platform CLI (#5302)
* rename sdk_token to pat to follow hub convention

* black

* move OpenBBError class to error model

* add OBBject class docstring

* pylint

* add futures to app docstring

* Linting

* Fix chart-related mypy errors. Co-Author: ’hjoaquim’

* Fix more mypy warnings

* Build static

* MyPy improvements

* move get_branch request to logging_settings (#5348)

* move get_branch request to logging_settings

* black

* add todo

* Revert "add todo"

This reverts commit 7e3af83e3d.

* add todo

* Update logging_settings.py

* mac/linux install script python output suppressed

* rename .settings to .user for consistency

* update readme

* update readme

* Linting

* Linting and improvements

* Regenerate static files

* Snake_case, mypy, typing, improvements. | Co-Author: montezdesousa

* Rebuild

* Revert Fetcher

* better cpi

* Snake case

* fixes: major_indices_eod for intraday,  optional company_overview atrs

* Feature/remove unncessary stuff (#5346)

* removing the journal service from the command_runner

* remove the journal service and fix tests

* removing journal from the command_runner

* removing journal entry references and adding optional metadata

* rebuilding static assets

* removing all references to journal entry

* removing all references to journal and journal repository

* removing journal query references

* restructuring the command runner

* fix argument mismatch and settings to user mismatch

* dropping command runner session

* re generation of static assets

* ruff n black

* removing introduced bug

* removing duplicate reference due to merging

* 3.8 compatible static assets

* changing the way we deal with erros - removing the Error model

* removing unncessary filters

* fixing tests

* regenerating static assets

* remving mongodb references from user service

* remving mongodb references

* updating dependencies with removed pymongo

* updating dependencies with removed pymongo

* removing useless call

* fix typo

* ruff

* fixing tests

* ruff

* removing leftovers

* making registry map 3.8 compatible

* static assets

* ruff

* Hotfix/squeeze import (#5358)

* remove commit_hash and branch references

* lazy load stats, scipy, pandas_ta

* black & ruff

* adding commithash back to log prefix

* fix test

---------

Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>

* .user got lost in merge

* improve __repr__ for sdk classes

* changing posthog project key (#5362)

* Linting and improvements

* Rebuild QA

* fix py38 + metadata ref in docstrings

* doc ident

* restore qa

* update readme: remove journal

* doc detail

* disable black in App docstring

* update readme: command execution

* ruff

* remove run_in_isolation: cannot pickle nested classes

* remove outdated dir openbb_sdk

* outdated workflow

* update ruff

* dependency related changes

* using model validator instead

* adjustments to the system model

* minor adjustments

* revert all changes on stocks controller

* working historical price

* controller_builder file

* process class recursivly

* adding translators prop

* poc with platform as a menu and as command

* paths feature

* adding subcontrollers

* offline access

* menu text as obj variable

* adjustments

* move help to base class; print tables using rich table (for now); clear the choices for better autocompletion

* introducing the platform controller factory

* remove unnecessary file

* revert changes to files

* dinamically generate platform menus

* generated platform commands

* poetry lock

* fix for literals and choices

* adjustments - recursive iteration only if it's a class

* router name should be lower() to match the class processor

* deps

* better output

* handling base models

* comment call_news

* Feature/v4 deprecate everything (#6113)

* comment call_news

* remove news

* remove keys controller

* remove settings controller

* remove ta forex

* remove qa economy

* remove ta stocks

* remove qa stocks

* remove fa stocks

* remove ins stocks

* remove gov stocks

* remove dps stocks

* remove ba stocks

* remove bt stocks

* remove stocks

* remove stocks base controller class

* ruff

* remove qa forex

* remove oanda

* remove forex

* remove forex

* remove forex

* remove mention to fx_tickers

* remove ta crypto

* remove qa crypto

* remove dd crypto

* remove crypto controller

* remove crypto references

* remove economy controller

* remove economy folder

* remoe etf controller

* remove reports controller

* remove dashboards controller

* remove alt controller

* rmeove etf files

* remove alt files

* remove custom reports

* remove dashboard files

* remove econometrics controller

* remove forecast controller

* remove reports files

* remove forecast files

* remove econometrics files

* remove portfolio

* remove futures

* remove fixedincome

* remove funds

* remove sdk and common

* remove all from init

* remove reference to ipykernel

* remove reference to ta_helpers

* remove reference to ta_helpers

* cleanup

* adjustments to choices

* remove old sdk generator

* remove mention to dashboards

* ruff

* cleanup

* remove logging infra

* remove decorators

* remove sdk audit

* remove tought of the day

* remove tought of the day

* fix commands andmenus choices

* fixing lints

* ruffs

* remove old tests

* deps trim

* using container as condition for recursion

* remove unnecessary dependencies

* move dep to better section

* python versions

* poetry lock

* better custmo annotations

* handling properties

* handling edge cases: no func_doc and when signarute doesn't match type hints (self)

* reverting treating models as props

* provider groups

* comment debug stuff

* Revert "comment debug stuff"

This reverts commit f0a86f04a8.

* comment debug stuff

* little adjustment for annotated types

* injecting the reference to make the custom argument groups available

* comments

* custom model_dump to drop choices

* deprecated

* remove update option

* remove update

* remove translations

* remove account controller

* command descriptions

* menu descriptions

* removing interactive tables

* limit the number of columns and rows

* menu descriptions

* show indexes

* More cleanups (#6245)

* renames

* remove .init files

* remove unused files

* remove session stuff

* remove session and sources stuff

* remove unused models

* remove sdk session

* remove charting infra

* remove charting stuff but allow console style

* updates in models

* raise directly

* call terminal directly and remove artifacts

* remove reference to sources

* remove reference to source arg

* remove reference to source arg

* remove unused stuff

* remove screenshot and raise directly

* remove unnecessary helper classes

* update the config file

* remove references to old charting infra

* call terminal directly

* update deps

* make user always local for now

* rename to CLI

* ruff

* export options

* export functionality

* update rich

* update example routine

* fix issues with queue

* temporary workaround for username

* deprecate main menu commands

* deprecate commands and remove unused stuff

* deprecate commands and remove unused stuff

* deprecate commands and remove unused stuff

* adjustments and cleanups

* routines syncing w hub

* small adjustments to point to the right instance

* whoami

* custom terminal style

* adjustments related to preferences

* deprecate stuff

* rename terminal style

* deprecate more things

* more deprecation

* more adjustments

* current settings - deprecating preferences, user and system

* terminal settings

* revmap custom terminal settings

* cli version

* ruff

* black

* linting fixes

* happy mypy

* ruff

* remove old terminal build files

* remove devcontainer

* update dependencies

* trim commands and its descriptions

* better warnings

* remove commands and menus str and show warnings if dev mode

* get command descriptions from the translators instead

* Add username in brackets if logged in

* fix buggy command descriptions

* [Feature] Bug fixing the Platform CLI (#6291)

* fix buggy command descriptions

* new reference structure

* Seggregate data commands from others (settings etc)

* fix table html for charting extension

* number of rows and columns as a setting

* interactive tables

* adding menu descriptions

---------

Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>

* fix the way reference was being passed

* fix choices parsing for providers

* loosen to get instead

* obbject registry class

* obbject registry class

* using the obbject registry to show available options

* link obbject results to data processing commands data argument

* small improvements to correctly get the standard args

* intersecting data processing commands and matching the obbject trough its id

* poetry lock

* use openbb field

* safe json conversion and trimming

* better at finding nargs when union

* improved obbject registry using a stack

* data processing section

* Update argparse_translator/argparse_class_processor.py

Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>

* fix: remove unused function

* fix: terminal.py -> openbb_terminal/cli.py

* fix: move local model function to utils & delete module

* fix: rename hub_model.py to hub_service.py

* fix: delete paths_helper.py, not used

* fix: circular import console

* fix: move terminal_style.py from plots/ to config, delete plots/

* fix: delele base_helpers.py, function moved to env_handler.py

* fix: move custom_prompt_toolkit.py to core/completer

* fix: delete requirements.txt, we can export them later if needed

* fix: move routines stuff to routines/

* fix: move rich_config.py to core/config

* fix: rename parent_classes.py to base_controller.py

* Danger: create controllers/ and move stuff

* fix: move custom_prompt_toolkit.py to config and delete completer/

* fix: rename custom_prompt_toolkit.py to completer.py

* fix: move rouines stuff to folder

* ^ oops

* Edits

* fix: settings import

* fix: openbb command

* Fix routine record when local user

* Lint

* Remove quickexit

* Fix timezone change

* fix data processing commands: not allowing multiple items + need to allow 0 (which evalutes as false)

* split comma separated strings into a list so that the cli can consume them

* Feature/move terminal files (#6344)

* Move terminal files into openbb_terminal

* move routines

* Create session to handle console, user, settings, etc.

* Reset...

* Bring back frontend-components

* Move frontend-components to openbb_terminal

* rename vars

* remove doc

* rename method

* rename method

* fix routines

* read settings from .env

* rename methods

* ^

* ^

* better

* bug

* ^

* move frontend-components back to root level

* revert changes

* type checking only

* docstring

* fix: settings autocomplete

* comment

* use openbb_core singleton

* rename src to fix openbb command

* fix poetry build

* readme

---------

Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>

---------

Co-authored-by: Diogo Sousa <montezdesousa@gmail.com>
Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Pratyush Shukla <ps4534@nyu.edu>
Co-authored-by: tehcoderer <me@tehcoderer.com>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
2024-04-29 08:52:59 +00:00
..
2024-04-23 08:49:26 +00:00
2024-04-23 08:49:26 +00:00
2024-04-23 08:49:26 +00:00
2024-01-30 09:57:01 +00:00

OpenBB Platform

Downloads LatestRelease

OpenBB is committed to build the future of investment research by focusing on an open source infrastructure accessible to everyone, everywhere.
OpenBBLogo
Check our website at openbb.co

Overview

The OpenBB Platform provides a convenient way to access raw financial data from multiple data providers. The package comes with a ready to use REST API - this allows developers from any language to easily create applications on top of OpenBB Platform.

Installation

The command below provides access to the core functionalities behind the OpenBB Platform.

pip install openbb

This will install the following data providers:

Extension Name Description Installation Command Minimum Subscription Type Required
openbb-benzinga Benzinga data connector pip install openbb-benzinga Paid
openbb-federal-reserve FederalReserve data connector pip install openbb-federal-reserve Free
openbb-fmp FMP data connector pip install openbb-fmp Free
openbb-fred FRED data connector pip install openbb-fred Free
openbb-intrinio Intrinio data connector pip install openbb-intrinio Paid
openbb-oecd OECD data connector pip install openbb-oecd Free
openbb-polygon Polygon data connector pip install openbb-polygon Free
openbb-sec SEC data connector pip install openbb-sec Free
openbb-tiingo Tiingo data connector pip install openbb-tiingo Free
openbb-tradingeconomics TradingEconomics data connector pip install openbb-tradingeconomics Paid
openbb-yahoo-finance Yahoo Finance data connector pip install openbb-yfinance Free

To install extensions that expand the core functionalities specify the extension name or use all to install all.

# Install a single extension, e.g. openbb-charting and yahoo finance
pip install openbb[charting]
pip install openbb-yfinance

Alternatively, you can install all extensions at once.

pip install openbb[all]

Note: These instruction are specific to v4. For installation instructions and documentation for v3 go to our website.

Python

>>> from openbb import obb
>>> output = obb.equity.price.historical("AAPL")
>>> df = output.to_dataframe()
>>> df.head()
              open    high     low  ...  change_percent             label  change_over_time
date                                ...
2022-09-19  149.31  154.56  149.10  ...         3.46000  September 19, 22          0.034600
2022-09-20  153.40  158.08  153.08  ...         2.28000  September 20, 22          0.022800
2022-09-21  157.34  158.74  153.60  ...        -2.30000  September 21, 22         -0.023000
2022-09-22  152.38  154.47  150.91  ...         0.23625  September 22, 22          0.002363
2022-09-23  151.19  151.47  148.56  ...        -0.50268  September 23, 22         -0.005027

[5 rows x 12 columns]

API keys

To fully leverage the OpenBB Platform you need to get some API keys to connect with data providers. Here are the 3 options on where to set them:

  1. OpenBB Hub
  2. Runtime
  3. Local file

1. OpenBB Hub

Set your keys at OpenBB Hub and get your personal access token from https://my.openbb.co/app/sdk/pat to connect with your account.

>>> from openbb import obb
>>> openbb.account.login(pat="OPENBB_PAT")

>>> # Persist changes in OpenBB Hub
>>> obb.account.save()

2. Runtime

>>> from openbb import obb
>>> obb.user.credentials.fmp_api_key = "REPLACE_ME"
>>> obb.user.credentials.polygon_api_key = "REPLACE_ME"

>>> # Persist changes in ~/.openbb_platform/user_settings.json
>>> obb.account.save()

3. Local file

You can specify the keys directly in the ~/.openbb_platform/user_settings.json file.

Populate this file with the following template and replace the values with your keys:

{
  "credentials": {
    "fmp_api_key": "REPLACE_ME",
    "polygon_api_key": "REPLACE_ME",
    "benzinga_api_key": "REPLACE_ME",
    "fred_api_key": "REPLACE_ME"
  }
}

REST API

The OpenBB Platform comes with a ready to use REST API built with FastAPI. Start the application using this command:

uvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload

Check openbb-core README for additional info.

Install for development

To develop the OpenBB Platform you need to have the following:

  • Git
  • Python 3.8 or higher
  • Virtual Environment with poetry and toml packages installed
    • To install these packages activate your virtual environment and run pip install poetry toml

How to install the platform in editable mode?

  1. Activate your virtual environment
  2. Navigate into the openbb_platform folder
  3. Run python dev_install.py to install the packages in editable mode