mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
* fix gov tests * refactor insider * new virtual path extraction * removed some symbol default params as they're considered critical * little adjustments * portfolio refactor * merge API factory * add helpers, stocks, crypto, forex * minor forex changes * include forex api paths * add 2 missing forex funcs * portfolio brokers refactor * display help on api func call * add econometrics virtual paths to api * add api unit test * fixed report for the new api * minor portfolio refactorings * added gdapps * anchor_yield path * some more crypto path fixes * small change * fixed wrong param * minor fixes * wip - inital commit for forex report * add bw as a model, we'll get better solution afterwards * added ema with dummy model as it adds great functionality to the report * minor fixes * wip - added functions to forex report * add feedparser news path * add new virtual paths to api * adding commands to equity report * revert to old paths, new ones were breaking * Add in very basic ETF report * Add candle chart to ETF report * add etf load * allow use of candle without data * add raw to candle * added forex report * ongoing equity report * equity report change * fix some portfolio bugs and add docstrings * include portfolio paths and coin class * add crypto paths * change event dates to str * starting economy report * window for limit * equity report and refactor newsapi * add helper to api * update on economy report * equity report * update economy report * refactor some docstrings * change maturities helper * refactor newsapi * refactor futures command * add some sauce to ycrv plot * black * update report * refactor alphavantage * refactor wsj * update economy report * ycrv tenor * map avaiable_indices * map economy helpers * fix econdb docstring * add plots on economy report * minor fixes * wip - crypto report * update economy report * added same default args as view * added view to explicity use chart=True when suing the api * adjustments - removed rich tables to use only df * final version economy report * change report name * equity report for review * linting * add etf symbols endpoint * incorporate feedback economy report * fix reports launch by adding tag to economy report * fix equity bug * remove analyst name * fix * fix news * make links hyperlinks for equity * click links * fixed arg name * improved news * small improves * Fix light terminal stylesheet that would prevent using it in notebooks (#2473) * improved report * run reports in installer * fix #2209 * minor ycrv refactoring * refactor portfolio/holdv virtual path * refactor benchmark trades * fix events args * adapt economy report to changes * fix portfolio controller bug * holdv refactor * refactor perf command * start portfolio report * remove perf view * refactor holp * add textwrap3 to poetry (doesn't solve the error) * fix equity after merge * add some rolling commands * fix equity after save button * improved crypto report, plus minor fixes * minor fixes on the reports * add maxdd and distr * refactor qa * var command * refactor qa expected shortfall * add es command * add es command * fix qa percentile bug * fix economy rendering * refactor qa omega * add om command * add summary command * add dret command * add mret command * add yret command * add metrics * add allocs to report * remove bro and po commands, add later * fixed some tests * adjustments to crypto report * Fix docstring for VSCode Added a note about installing Jupyter PowerToys extension for optimal API usage in Jupyter VSCode, in the API_README.md. * minor adjustment * remove nft calendar model virtual paths * Add in Portfolio report * fix external axes portfolio view * Update portfolio report with rolling plots * Details for ETF and Portfolio * fix economy report * change analyst to openbb * floppy * fixed unmatched axis in reports * Speed up tests * fix file and load on po * get_news output * add some po paths * Add integration tests for Reports menu * refactor maxsharpe * open maxsharpe * open minrisk * open maxutil * open maxret * Added fixes * black * remove useless views * Fixed small issue * refactor ef * open ef api * portfolio optimization report * Added fixes * unblock api loading * add more endpoints * update po report * unblock api loading * update po report * expose herc * expose property endpoint * Added fixes * More api fixes * flake8 * Fixed some mypy * news api model * flake8 * mypy fix * mypy * black * pylint * fix tests * markdown * markdown * Added fixes * fix economy report * merge * fix economy report * remove empty notebook * expose nco * remove jupyter notebook * expose plot endpoint * remove po report, just used for tests * api v paths plot * remove api_old * change loading msg Co-authored-by: montezdesousa <montezdesousa@gmail.com> Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Om Gupta <guptagom@gmail.com> Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com> Co-authored-by: JerBouma <jer.bouma@gmail.com> Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com> Co-authored-by: Om Gupta <85685255+soggyomelette@users.noreply.github.com> Co-authored-by: Diogo Sousa <diogosousa@Diogos-MBP.lan> Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com> Co-authored-by: northern-64bit <75195383+northern-64bit@users.noreply.github.com> Co-authored-by: colin99d <colin99delahunty@gmail.com> Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>
114 lines
3.8 KiB
Markdown
Vendored
114 lines
3.8 KiB
Markdown
Vendored
# OpenBB API
|
|
|
|
## Usage
|
|
|
|
The OpenBB API can simply be imported with:
|
|
|
|
```python
|
|
from openbb_terminal.api import openbb
|
|
```
|
|
|
|
This imports all the commands at once. Now you can directly begin to use it. The api function is structured
|
|
in the way that it always retrieves the underlying data. For charts add the `chart=True` parameter.
|
|
|
|
For example see:
|
|
|
|
```python
|
|
# Returns data:
|
|
openbb.stocks.ba.snews("aapl")
|
|
# Returns charts:
|
|
openbb.stocks.ba.snews("aapl", chart=True)
|
|
```
|
|
|
|
This allows easy integration to the jupyter notebook and allows you to build new applications on top of the terminal.
|
|
The api also has new functionalities that are used in the backend of the Terminal (CLI). With these backend functions
|
|
you can develop new functionalities and avoid copy-pasting the code from the repository.
|
|
|
|
**Note:**\
|
|
API keys for data fetching still have to be entered
|
|
|
|
### Jupyter Notebook Tricks
|
|
|
|
**Get matplotlib charts in the output cells**\
|
|
If you copy-paste the code below and use it as your initialization then you're matplotlib graphs will be inside
|
|
the result cell.
|
|
|
|
```python
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib_inline.backend_inline
|
|
from openbb_terminal.api import openbb
|
|
%matplotlib inline
|
|
matplotlib_inline.backend_inline.set_matplotlib_formats("svg")
|
|
```
|
|
|
|
**Get function signature and docstring**\
|
|
When you press `shift + tab` in jupyter notebook while having the mouse parser in an API function, you get the
|
|
signature and docstring of the function.
|
|
|
|
### Visual Studio Code Tricks
|
|
|
|
**Get function docstring and signature**\
|
|
In order to get the docstrings and function signatures for the API when opening a Jupyter Notebook in VSCode,
|
|
you have to install the [Jupyter PowerToys
|
|
extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.vscode-jupyter-powertoys).
|
|
|
|
## Code Examples
|
|
|
|
Just copy-paste the code examples below into a python script or jupyter notebook, and you're ready to go.
|
|
|
|
**Basic Stock Information**\
|
|
Prints general information about the selected stock (in this case Gamsetop)
|
|
|
|
```python
|
|
from openbb_terminal.api import openbb
|
|
gme_info = openbb.stocks.fa.info("gme").transpose()
|
|
print("-- Gamstop Stock --\n\n- Basic Info -")
|
|
print(f"Sector: {gme_info['Sector'].iloc[0]}")
|
|
print(f"Country: {gme_info['Country'].iloc[0]}")
|
|
print(f"Description: {gme_info['Long business summary'].iloc[0]}")
|
|
print("\n- Financial Info -")
|
|
print(f"Ebitda Margins: {gme_info['Ebitda margins'].iloc[0]}")
|
|
print(f"Profit Margins: {gme_info['Profit margins'].iloc[0]}")
|
|
print(f"Revenue growth: {gme_info['Revenue growth'].iloc[0]}")
|
|
print("\n- Target Price -")
|
|
print(f"Current price: {gme_info['Current price'].iloc[0]}")
|
|
print(f"Target mean price: {gme_info['Target mean price'].iloc[0]}")
|
|
print(f"Target high price: {gme_info['Target high price'].iloc[0]}")
|
|
print(f"Target low price: {gme_info['Target low price'].iloc[0]}")
|
|
```
|
|
|
|
**Use external axis**\
|
|
The code below utilises the `external_axes` parameter to get two axis in one chart
|
|
|
|
```python
|
|
import matplotlib.pyplot as plt
|
|
from openbb_terminal.api import openbb
|
|
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)
|
|
openbb.stocks.dps.dpotc(
|
|
"aapl",
|
|
external_axes=[ax1, ax2],
|
|
chart=True,
|
|
)
|
|
fig.tight_layout()
|
|
```
|
|
|
|
**Stocks Return Distribution** \
|
|
Fetches data from the OpenBB API and then plots the return distribution. This is a good example, where the data from
|
|
the API is leveraged to build a new feature on top of the API.
|
|
|
|
```python
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from openbb_terminal.api import openbb
|
|
# Fetches data from the api
|
|
gme = openbb.stocks.load("gme")
|
|
# Calculates logarithmic returns
|
|
gme["Log Returns"] = np.log(gme["Adj Close"]/gme["Adjusted Close"].shift(1))
|
|
# Plots the return distributions
|
|
gme["Log Returns"].hist(bins=1000)
|
|
plt.thight_layout()
|
|
plt.show()
|
|
```
|
|
|
|
For more examples see the OpenBB jupyter notebook reports. They all use the API to its fullest extent!
|