Making the SDK more intuitive. (#3450)

* Add earnings to fa trailmap.  More trailmap deletes

* Crypto renaming

* Economy futures sdk

* Forex quote function

* Update events docstring

* pydocstyle on this file

Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
This commit is contained in:
James Maslek
2022-11-18 09:08:49 -05:00
committed by GitHub
parent cca41d4f08
commit 95db246ec4
5 changed files with 170 additions and 37 deletions

View File

@@ -38,6 +38,16 @@ def get_economic_calendar(
-------
pd.DataFrame
Economic calendar
Examples
--------
Get todays economic calendar for the United States
>>> from openbb_terminal.sdk import openbb
>>> calendar = openbb.economy.events("United States")
To get multiple countries for a given date, pass the same start and end date as well as
a list of countries
>>> calendars = openbb.economy.events(["United States","Canada"], start_date="2022-11-18", end_date="2022-11-18")
"""
if start_date is None:
@@ -128,7 +138,7 @@ def get_country_codes() -> List[str]:
@log_start_end(log=logger)
@check_api_key(["API_KEY_QUANDL"])
def get_big_mac_index(country_code: str = "USA") -> pd.DataFrame:
"""Gets the Big Mac index calculated by the Economist
"""Get the Big Mac index calculated by the Economist
Parameters
----------

View File

@@ -0,0 +1,40 @@
"""SDK Helper Functions."""
__docformat__ = "numpy"
import pandas as pd
from openbb_terminal.economy import wsj_model, finviz_model
def futures(source="WSJ", future_type: str = "Indices") -> pd.DataFrame:
"""Get futures data.
Parameters
----------
source : str
Data source for futures data. From the following: WSJ, Finviz
future_type : str
(Finviz only) Future type to get. Can be: Indices, Energy, Metals, Meats, Grains, Softs, Bonds, Currencies.
Returns
-------
pd.DataFrame
Dataframe of futures data.
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> wsj_futures = openbb.economy.futures()
To sort by the largest percent change:
>>> futures_sorted = openbb.economy.futures().sort_values(by="%Chg", ascending=False)
FinViz provides different options for future types. We can get Meats with the following command:
>>> meat_futures = openbb.economy.futures(source="Finviz", future_type="Meats")
"""
if source.lower() == "wsj":
return wsj_model.top_commodities()
if source.lower() == "finviz":
return finviz_model.get_futures(future_type.title())
return pd.DataFrame()

View File

@@ -0,0 +1,50 @@
"""Forex SDK Helpers."""
__docformat__ = "numpy"
import pandas as pd
import yfinance as yf
from openbb_terminal.forex import av_model
def quote(symbol: str, source: str = "YahooFinance") -> pd.DataFrame:
"""Get forex quote.
Parameters
----------
symbol : str
Forex symbol to get quote for.
source : str, optional
Source to get quote from, by default "YahooFinance"
Returns
-------
pd.DataFrame
DataFrame of quote data.
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> EUR_USD_quote = openbb.forex.quote("EURUSD")
This also supports AlphaVantage and will handle different conventions
>>> EUR_USD= openbb.forex.quote("EUR/USD", source="AlphaVantage")
"""
symbol = symbol.replace("/", "").replace("-", "")
to_symbol = symbol[:3]
from_symbol = symbol[3:]
if source == "YahooFinance":
data = yf.download(f"{symbol}=X", period="1d", interval="1m", progress=False)
return pd.DataFrame.from_dict(
{
"Last Refreshed": data.index[-1].strftime("%Y-%m-%d %H:%M:%S %Z"),
"Quote": data.Close[-1],
},
orient="index",
)
if source == "AlphaVantage":
to_symbol = symbol[:3]
from_symbol = symbol[3:]
data = av_model.get_quote(to_symbol, from_symbol)
return pd.DataFrame.from_dict(data)
return pd.DataFrame()

View File

@@ -180,28 +180,28 @@ crypto.onchain.whales,openbb_terminal.cryptocurrency.onchain.whale_alert_model.g
crypto.ov.altindex,openbb_terminal.cryptocurrency.overview.blockchaincenter_model.get_altcoin_index,openbb_terminal.cryptocurrency.overview.blockchaincenter_view.display_altcoin_index
crypto.ov.btcrb,openbb_terminal.cryptocurrency.overview.glassnode_model.get_btc_rainbow,openbb_terminal.cryptocurrency.overview.glassnode_view.display_btc_rainbow
crypto.ov.cbpairs,openbb_terminal.cryptocurrency.overview.coinbase_model.get_trading_pairs,openbb_terminal.cryptocurrency.overview.coinbase_view.display_trading_pairs
crypto.ov.cpplatforms,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_all_contract_platforms,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_platforms
crypto.ov.cpinfo,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_coins_info,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_coins_info
crypto.ov.platforms1,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_all_contract_platforms,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_platforms
crypto.ov.info,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_coins_info,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_coins_info
crypto.ov.cpmarkets,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_coins_market_info,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_coins_market_info
crypto.ov.cpcontracts,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_contract_platform,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_contracts
crypto.ov.cpexmarkets,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_exchanges_market,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_exchange_markets
crypto.ov.contracts,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_contract_platform,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_contracts
crypto.ov.exmarkets,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_exchanges_market,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_exchange_markets
crypto.ov.cpglobal,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_global_market,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_global_market
crypto.ov.cpexchanges,openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_list_of_exchanges,openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_exchanges
crypto.ov.news,openbb_terminal.cryptocurrency.overview.cryptopanic_model.get_news,openbb_terminal.cryptocurrency.overview.cryptopanic_view.display_news
crypto.ov.cr,openbb_terminal.cryptocurrency.overview.loanscan_model.get_rates,openbb_terminal.cryptocurrency.overview.loanscan_view.display_crypto_rates
crypto.ov.cgderivatives,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_derivatives,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_derivatives
crypto.ov.cgexrates,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_exchange_rates,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_exchange_rates
crypto.ov.derivatives,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_derivatives,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_derivatives
crypto.ov.exrates,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_exchange_rates,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_exchange_rates
crypto.ov.exchanges,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_exchanges,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_exchanges
crypto.ov.cgproducts,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_finance_products,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_products
crypto.ov.products,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_finance_products,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_products
crypto.ov.platforms,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_financial_platforms,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_platforms
crypto.ov.cgdefi,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_defi_info,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_defi_info
crypto.ov.defi,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_defi_info,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_defi_info
crypto.ov.global_info,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_info,
crypto.ov.cgglobal,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_markets_info,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_market_info
crypto.ov.cghold,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_holdings_overview,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_holdings_overview
crypto.ov.cgindexes,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_indexes,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_indexes
crypto.ov.cgstables,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_stable_coins,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_stablecoins
crypto.ov.cgcategories,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_top_crypto_categories,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_categories
crypto.ov.cghm,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_crypto_heatmap
crypto.ov.global,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_markets_info,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_market_info
crypto.ov.hold,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_holdings_overview,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_holdings_overview
crypto.ov.indexes,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_indexes,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_indexes
crypto.ov.stables,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_stable_coins,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_stablecoins
crypto.ov.categories,openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_top_crypto_categories,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_categories
crypto.ov.hm,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins,openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_crypto_heatmap
crypto.ov.crypto_hack,openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hack,
crypto.ov.crypto_hack_slugs,openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hack_slugs,
crypto.ov.crypto_hacks,openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hacks,openbb_terminal.cryptocurrency.overview.rekt_view.display_crypto_hacks
@@ -242,11 +242,11 @@ economy.macro_countries,openbb_terminal.economy.econdb_model.get_macro_countries
economy.treasury,openbb_terminal.economy.econdb_model.get_treasuries,openbb_terminal.economy.econdb_view.show_treasuries
economy.treasury_maturities,openbb_terminal.economy.econdb_model.get_treasury_maturities,
economy.future,openbb_terminal.economy.finviz_model.get_futures,
economy.spectrum,openbb_terminal.economy.finviz_model.get_spectrum_data,openbb_terminal.economy.finviz_view.display_spectrum
economy.spectrum,openbb_terminal.economy.finviz_view.display_spectrum,
economy.valuation,openbb_terminal.economy.finviz_model.get_valuation_data,
economy.performance,openbb_terminal.economy.finviz_model.get_performance_data,
economy.perfmap,openbb_terminal.economy.finviz_model.get_performance_map,
economy.fred_series,openbb_terminal.economy.fred_model.get_aggregated_series_data,openbb_terminal.economy.fred_view.display_fred_series
economy.fred,openbb_terminal.economy.fred_model.get_aggregated_series_data,openbb_terminal.economy.fred_view.display_fred_series
economy.fred_ids,openbb_terminal.economy.fred_model.get_series_ids,
economy.fred_notes,openbb_terminal.economy.fred_model.get_series_notes,
economy.ycrv,openbb_terminal.economy.fred_model.get_yield_curve,openbb_terminal.economy.fred_view.display_yield_curve
@@ -258,26 +258,26 @@ economy.bigmac,openbb_terminal.economy.nasdaq_model.get_big_mac_indices,openbb_t
economy.glbonds,openbb_terminal.economy.wsj_model.global_bonds,
economy.currencies,openbb_terminal.economy.wsj_model.global_currencies,
economy.overview,openbb_terminal.economy.wsj_model.market_overview,
economy.futures,openbb_terminal.economy.wsj_model.top_commodities,
economy.futures,openbb_terminal.economy.sdk_helpers.futures,
economy.usbonds,openbb_terminal.economy.wsj_model.us_bonds,
economy.indices,openbb_terminal.economy.wsj_model.us_indices,
economy.index,openbb_terminal.economy.yfinance_model.get_indices,openbb_terminal.economy.yfinance_view.show_indices
economy.available_indices,openbb_terminal.economy.yfinance_model.get_available_indices,
economy.search_index,openbb_terminal.economy.yfinance_model.get_search_indices,
etf.disc.mover,openbb_terminal.etf.discovery.wsj_model.etf_movers,openbb_terminal.etf.discovery.wsj_view.show_top_mover
etf.etf_by_category,openbb_terminal.etf.financedatabase_model.get_etfs_by_category,openbb_terminal.etf.financedatabase_view.display_etf_by_category
etf.ld,openbb_terminal.etf.financedatabase_model.get_etfs_by_description,openbb_terminal.etf.financedatabase_view.display_etf_by_description
etf.ln,openbb_terminal.etf.financedatabase_model.get_etfs_by_name,openbb_terminal.etf.financedatabase_view.display_etf_by_name
etf.disc.mover,openbb_terminal.etf.discovery.wsj_model.etf_movers,
etf.etf_by_category,openbb_terminal.etf.financedatabase_model.get_etfs_by_category,
etf.ld,openbb_terminal.etf.financedatabase_model.get_etfs_by_description,
etf.ln,openbb_terminal.etf.financedatabase_model.get_etfs_by_name,
etf.scr.screen,openbb_terminal.etf.screener.screener_model.etf_screener,openbb_terminal.etf.screener.screener_view.view_screener
etf.holdings,openbb_terminal.etf.stockanalysis_model.get_etf_holdings,openbb_terminal.etf.stockanalysis_view.view_holdings
etf.holdings,openbb_terminal.etf.stockanalysis_model.get_etf_holdings,
etf.symbols,openbb_terminal.etf.stockanalysis_model.get_all_names_symbols,
etf.overview,openbb_terminal.etf.stockanalysis_model.get_etf_overview,openbb_terminal.etf.stockanalysis_view.view_overview
etf.etf_by_name,openbb_terminal.etf.stockanalysis_model.get_etfs_by_name,openbb_terminal.etf.stockanalysis_view.display_etf_by_name
etf.weights,openbb_terminal.etf.yfinance_model.get_etf_sector_weightings,openbb_terminal.etf.yfinance_view.display_etf_weightings
etf.summary,openbb_terminal.etf.yfinance_model.get_etf_summary_description,openbb_terminal.etf.yfinance_view.display_etf_description
etf.overview,openbb_terminal.etf.stockanalysis_model.get_etf_overview,
etf.etf_by_name,openbb_terminal.etf.stockanalysis_model.get_etfs_by_name,
etf.weights,openbb_terminal.etf.yfinance_model.get_etf_sector_weightings,
etf.summary,openbb_terminal.etf.yfinance_model.get_etf_summary_description,
forex.get_currency_list,openbb_terminal.forex.av_model.get_currency_list,
forex.quote,openbb_terminal.forex.av_model.get_quote,
forex.fwd,openbb_terminal.forex.fxempire_model.get_forward_rates,openbb_terminal.forex.fxempire_view.display_forward_rates
forex.quote,openbb_terminal.forex.sdk_helpers.quote,
forex.fwd,openbb_terminal.forex.fxempire_model.get_forward_rates,
forex.oanda.summary,openbb_terminal.forex.oanda.oanda_model.account_summary_request,openbb_terminal.forex.oanda.oanda_view.get_account_summary
forex.oanda.cancel,openbb_terminal.forex.oanda.oanda_model.cancel_pending_order_request,openbb_terminal.forex.oanda.oanda_view.cancel_pending_order
forex.oanda.close,openbb_terminal.forex.oanda.oanda_model.close_trades_request,openbb_terminal.forex.oanda.oanda_view.close_trade
@@ -407,13 +407,13 @@ stocks.dd.news,openbb_terminal.stocks.due_diligence.finviz_model.get_news,
stocks.dd.rating,openbb_terminal.stocks.due_diligence.fmp_model.get_rating,
stocks.dd.sec,openbb_terminal.stocks.due_diligence.marketwatch_model.get_sec_filings,openbb_terminal.stocks.due_diligence.marketwatch_view.sec_filings
stocks.fa.dupont,openbb_terminal.stocks.fundamental_analysis.av_model.get_dupont,
stocks.fa.earnings,openbb_terminal.stocks.fundamental_analysis.av_model.get_earnings,
stocks.fa.fraud,openbb_terminal.stocks.fundamental_analysis.av_model.get_fraud_ratios,
stocks.fa.income,openbb_terminal.stocks.fundamental_analysis.sdk_helpers.get_income_statement,
stocks.fa.earnings,openbb_terminal.stocks.fundamental_analysis.sdk_helpers.earnings,
stocks.fa.cash,openbb_terminal.stocks.fundamental_analysis.sdk_helpers.get_cash_flow,
stocks.fa.balance,openbb_terminal.stocks.fundamental_analysis.sdk_helpers.get_balance_sheet,
stocks.fa.av_metrics,openbb_terminal.stocks.fundamental_analysis.av_model.get_key_metrics,
stocks.fa.av_overview,openbb_terminal.stocks.fundamental_analysis.av_model.get_overview,
stocks.fa.key,openbb_terminal.stocks.fundamental_analysis.av_model.get_key_metrics,
stocks.fa.overview,openbb_terminal.stocks.fundamental_analysis.av_model.get_overview,
stocks.fa.mgmt,openbb_terminal.stocks.fundamental_analysis.business_insider_model.get_management,
stocks.fa.fama_coe,openbb_terminal.stocks.fundamental_analysis.dcf_model.get_fama_coe,
stocks.fa.fama_raw,openbb_terminal.stocks.fundamental_analysis.dcf_model.get_fama_raw,
@@ -423,7 +423,7 @@ stocks.fa.analysis,openbb_terminal.stocks.fundamental_analysis.eclect_us_model.g
stocks.fa.dcf,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_dcf,
stocks.fa.enterprise,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_enterprise,
stocks.fa.growth,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_financial_growth,
stocks.fa.fmp_metrics,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_metrics,
stocks.fa.metrics,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_metrics,
stocks.fa.ratios,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_ratios,
stocks.fa.profile,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_profile,
stocks.fa.quote,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_quote,
@@ -467,9 +467,6 @@ stocks.options.process_chains,openbb_terminal.stocks.options.tradier_model.proce
stocks.options.generate_data,openbb_terminal.stocks.options.yfinance_model.generate_data,
stocks.options.dte,openbb_terminal.stocks.options.yfinance_model.get_dte,
stocks.options.vsurf,openbb_terminal.stocks.options.yfinance_model.get_iv_surface,openbb_terminal.stocks.options.yfinance_view.display_vol_surface
stocks.options.vol_yf,openbb_terminal.stocks.options.yfinance_model.get_vol,openbb_terminal.stocks.options.yfinance_view.plot_vol
stocks.options.voi_yf,openbb_terminal.stocks.options.yfinance_model.get_volume_open_interest,openbb_terminal.stocks.options.yfinance_view.plot_volume_open_interest
stocks.options.price,openbb_terminal.stocks.options.yfinance_model.get_price,
stocks.qa.capm_information,openbb_terminal.stocks.quantitative_analysis.factors_model.capm_information,
stocks.qa.fama_raw,openbb_terminal.stocks.quantitative_analysis.factors_model.get_fama_raw,
stocks.qa.historical_5,openbb_terminal.stocks.quantitative_analysis.factors_model.get_historical_5,
@@ -544,7 +541,7 @@ keys.eodhd,openbb_terminal.keys_model.set_eodhd_key,
keys.santiment,openbb_terminal.keys_model.set_santiment_key,
keys.tokenterminal,openbb_terminal.keys_model.set_tokenterminal_key,
keys.shroom,openbb_terminal.keys_model.set_shroom_key,
futures.search,openbb_terminal.futures.yfinance_model.get_search_futures,openbb_terminal.futures.yfinance_view.display_search
futures.search,openbb_terminal.futures.yfinance_model.get_search_futures,
futures.historical,openbb_terminal.futures.yfinance_model.get_historical_futures,openbb_terminal.futures.yfinance_view.display_historical
futures.curve,openbb_terminal.futures.yfinance_model.get_curve_futures,openbb_terminal.futures.yfinance_view.display_curve
economy.get_groups,openbb_terminal.economy.finviz_model.get_groups
Can't render this file because it has a wrong number of fields in line 463.

View File

@@ -198,3 +198,39 @@ def get_cash_flow(
df = eodhd_model.get_financials(symbol, "cash", quarterly, ratios)
return df
return pd.DataFrame()
def earnings(
symbol: str, source: str = "YahooFinance", quarterly: bool = False
) -> pd.DataFrame:
"""Get earnings data.
Parameters
----------
symbol : str
Stock ticker
source : str, optional
Source to use, by default "AlphaVantage"
quarterly : bool, optional
Flag to get quarterly data (AlphaVantage only), by default False.
Returns
-------
pd.DataFrame
Dataframe of earnings
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> aapl_earnings = openbb.stocks.fa.earnings("AAPL", source ="YahooFinance)
To obtain quarterly earnings, use the quarterly flag with AlphaVantage
>>> aapl_earnings = openbb.stocks.fa.metrics("earnings", source ="AlphaVantage, quarterly=True)
"""
if source == "YahooFinance":
df = yahoo_finance_model.get_earnings_history(symbol)
return df
if source == "AlphaVantage":
df = av_model.get_earnings(symbol, quarterly)
return df
return pd.DataFrame()