mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
SDK mapping refactors + FA refactor (#3440)
* First commit * Other sources * Update trail map * Couple more trail map updates * Balance Sheet SDK * Cash flow for SDK Co-authored-by: Chavithra <chavithra@gmail.com>
This commit is contained in:
@@ -35,7 +35,7 @@ stocks.ba.infer,openbb_terminal.common.behavioural_analysis.twitter_model.load_a
|
||||
stocks.ba.sentiment,openbb_terminal.common.behavioural_analysis.twitter_model.get_sentiment,openbb_terminal.common.behavioural_analysis.twitter_view.display_sentiment
|
||||
etf.news,openbb_terminal.common.newsapi_model.get_news,openbb_terminal.common.newsapi_view.display_news
|
||||
news,openbb_terminal.common.feedparser_model.get_news,
|
||||
qa.bw,openbb_terminal.common.quantitative_analysis.qa_view.display_bw,openbb_terminal.common.quantitative_analysis.qa_view.display_bw
|
||||
qa.bw,openbb_terminal.common.quantitative_analysis.qa_view.display_bw,
|
||||
qa.calculate_adjusted_var,openbb_terminal.common.quantitative_analysis.qa_model.calculate_adjusted_var,
|
||||
qa.es,openbb_terminal.common.quantitative_analysis.qa_model.get_es,openbb_terminal.common.quantitative_analysis.qa_view.display_es
|
||||
qa.normality,openbb_terminal.common.quantitative_analysis.qa_model.get_normality,openbb_terminal.common.quantitative_analysis.qa_view.display_normality
|
||||
@@ -105,7 +105,6 @@ crypto.disc.categories_keys,openbb_terminal.cryptocurrency.discovery.pycoingecko
|
||||
crypto.disc.coin_list,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coin_list,
|
||||
crypto.disc.coins,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins,openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_coins
|
||||
crypto.disc.coins_for_given_exchange,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins_for_given_exchange,
|
||||
crypto.disc.gainers_or_losers,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_gainers_or_losers,
|
||||
crypto.disc.gainers,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_gainers,openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_gainers
|
||||
crypto.disc.losers,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_losers,openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_losers
|
||||
crypto.disc.trending,openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_trending_coins,openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_trending
|
||||
@@ -250,11 +249,10 @@ 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_ids,openbb_terminal.economy.fred_model.get_series_ids,
|
||||
economy.fred_notes,openbb_terminal.economy.fred_model.get_series_notes,
|
||||
economy.fred_yield_curve,openbb_terminal.economy.fred_model.get_yield_curve,openbb_terminal.economy.fred_view.display_yield_curve
|
||||
economy.ycrv,openbb_terminal.economy.fred_model.get_yield_curve,openbb_terminal.economy.fred_view.display_yield_curve
|
||||
economy.get_events_countries,openbb_terminal.economy.investingcom_model.get_events_countries,
|
||||
economy.events,openbb_terminal.economy.nasdaq_model.get_economic_calendar,
|
||||
economy.get_ycrv_countries,openbb_terminal.economy.investingcom_model.get_ycrv_countries,
|
||||
economy.ycrv,openbb_terminal.economy.fred_model.get_yield_curve,openbb_terminal.economy.fred_view.display_yield_curve
|
||||
economy.country_codes,openbb_terminal.economy.nasdaq_model.get_country_codes,
|
||||
economy.bigmac,openbb_terminal.economy.nasdaq_model.get_big_mac_indices,openbb_terminal.economy.nasdaq_view.display_big_mac_index
|
||||
economy.glbonds,openbb_terminal.economy.wsj_model.global_bonds,
|
||||
@@ -278,9 +276,8 @@ etf.etf_by_name,openbb_terminal.etf.stockanalysis_model.get_etfs_by_name,openbb_
|
||||
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
|
||||
forex.get_currency_list,openbb_terminal.forex.av_model.get_currency_list,
|
||||
forex.hist,openbb_terminal.forex.av_model.get_historical,
|
||||
forex.quote,openbb_terminal.forex.av_model.get_quote,openbb_terminal.forex.av_view.display_quote
|
||||
forex.oanda.fwd,openbb_terminal.forex.fxempire_model.get_forward_rates,openbb_terminal.forex.fxempire_view.display_forward_rates
|
||||
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.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
|
||||
@@ -409,12 +406,12 @@ stocks.dd.analyst,openbb_terminal.stocks.due_diligence.finviz_model.get_analyst_
|
||||
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.av_balance,openbb_terminal.stocks.fundamental_analysis.av_model.get_balance_sheet,
|
||||
stocks.fa.av_cash,openbb_terminal.stocks.fundamental_analysis.av_model.get_cash_flow,openbb_terminal.stocks.fundamental_analysis.av_view.display_cash_flow
|
||||
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.av_income,openbb_terminal.stocks.fundamental_analysis.av_model.get_income_statements,
|
||||
stocks.fa.income,openbb_terminal.stocks.fundamental_analysis.sdk_helpers.get_income_statement,
|
||||
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.mgmt,openbb_terminal.stocks.fundamental_analysis.business_insider_model.get_management,
|
||||
@@ -423,22 +420,17 @@ stocks.fa.fama_raw,openbb_terminal.stocks.fundamental_analysis.dcf_model.get_fam
|
||||
stocks.fa.historical_5,openbb_terminal.stocks.fundamental_analysis.dcf_model.get_historical_5,
|
||||
stocks.fa.similar_dfs,openbb_terminal.stocks.fundamental_analysis.dcf_model.get_similar_dfs,
|
||||
stocks.fa.analysis,openbb_terminal.stocks.fundamental_analysis.eclect_us_model.get_filings_analysis,
|
||||
stocks.fa.fmp_balance,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_balance,
|
||||
stocks.fa.fmp_cash,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_cash,
|
||||
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_income,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_income,
|
||||
stocks.fa.fmp_metrics,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_metrics,
|
||||
stocks.fa.fmp_ratios,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_ratios,
|
||||
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,
|
||||
stocks.fa.score,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_score,
|
||||
stocks.fa.data,openbb_terminal.stocks.fundamental_analysis.finviz_model.get_data,
|
||||
stocks.fa.poly_financials,openbb_terminal.stocks.fundamental_analysis.polygon_model.get_financials,openbb_terminal.stocks.fundamental_analysis.polygon_view.display_fundamentals
|
||||
stocks.fa.cal,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_calendar_earnings,
|
||||
stocks.fa.divs,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_dividends,
|
||||
stocks.fa.yf_financials,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_financials,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_view.display_fundamentals
|
||||
stocks.fa.hq,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_hq,
|
||||
stocks.fa.info,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_info,
|
||||
stocks.fa.mktcap,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_mktcap,openbb_terminal.stocks.fundamental_analysis.yahoo_finance_view.display_mktcap
|
||||
@@ -555,4 +547,4 @@ 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.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
|
||||
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.
|
@@ -252,9 +252,11 @@ def get_income(
|
||||
# Invalid API Keys
|
||||
except ValueError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
# Premium feature, API plan is not authorized
|
||||
except HTTPError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
|
||||
if ratios:
|
||||
types = df_fa.copy().applymap(lambda x: isinstance(x, (float, int))).all(axis=1)
|
||||
@@ -321,9 +323,11 @@ def get_balance(
|
||||
# Invalid API Keys
|
||||
except ValueError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
# Premium feature, API plan is not authorized
|
||||
except HTTPError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
|
||||
if ratios:
|
||||
types = df_fa.copy().applymap(lambda x: isinstance(x, (float, int))).all(axis=1)
|
||||
@@ -387,9 +391,11 @@ def get_cash(
|
||||
# Invalid API Keys
|
||||
except ValueError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
# Premium feature, API plan is not authorized
|
||||
except HTTPError as e:
|
||||
console.print(e)
|
||||
return pd.DataFrame()
|
||||
|
||||
if ratios:
|
||||
types = df_fa.copy().applymap(lambda x: isinstance(x, (float, int))).all(axis=1)
|
||||
|
||||
200
openbb_terminal/stocks/fundamental_analysis/sdk_helpers.py
Normal file
200
openbb_terminal/stocks/fundamental_analysis/sdk_helpers.py
Normal file
@@ -0,0 +1,200 @@
|
||||
"""SDK Helper Functions"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import pandas as pd
|
||||
from openbb_terminal.stocks.fundamental_analysis import (
|
||||
yahoo_finance_model,
|
||||
polygon_model,
|
||||
av_model,
|
||||
fmp_model,
|
||||
eodhd_model,
|
||||
)
|
||||
|
||||
|
||||
def get_income_statement(
|
||||
symbol: str,
|
||||
quarterly: bool = False,
|
||||
ratios: bool = False,
|
||||
source: str = "YahooFinance",
|
||||
limit: int = 10,
|
||||
) -> pd.DataFrame:
|
||||
"""Get income statement.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get income statement for
|
||||
source : str, optional
|
||||
Data source for income statement, by default "YahooFinance"
|
||||
quarterly : bool, optional
|
||||
Flag to get quarterly data
|
||||
ratios : bool, optional
|
||||
Flag to return data as a percent change.
|
||||
limit : int
|
||||
Number of statements to return (free tiers may be limited to 5 years)
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
Dataframe of income statement
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> income_statement = openbb.stocks.fa.income("AAPL", source="YahooFinance)
|
||||
|
||||
If you have a premium AlphaVantage key, you can use the quarterly flag to get quarterly statements
|
||||
>>> quarterly_income_statement = openbb.stocks.fa.income("AAPL", source="AlphaVantage", quarterly=True)
|
||||
"""
|
||||
if source == "YahooFinance":
|
||||
if quarterly:
|
||||
print(
|
||||
"Quarterly income statement not available from Yahoo Finance. Returning annual"
|
||||
)
|
||||
df = yahoo_finance_model.get_financials(
|
||||
symbol=symbol, statement="financials", ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "AlphaVantage":
|
||||
df = av_model.get_income_statements(
|
||||
symbol=symbol, quarterly=quarterly, ratios=ratios, limit=limit
|
||||
)
|
||||
return df
|
||||
if source == "FinancialModelingPrep":
|
||||
df = fmp_model.get_income(
|
||||
symbol=symbol, limit=limit, quarterly=quarterly, ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "Polygon":
|
||||
df = polygon_model.get_financials(symbol, "income", quarterly, ratios)
|
||||
return df
|
||||
if source == "EODHD":
|
||||
df = eodhd_model.get_financials(symbol, "income", quarterly, ratios)
|
||||
return df
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
def get_balance_sheet(
|
||||
symbol: str,
|
||||
quarterly: bool = False,
|
||||
ratios: bool = False,
|
||||
source: str = "YahooFinance",
|
||||
limit: int = 10,
|
||||
) -> pd.DataFrame:
|
||||
"""Get balance sheet.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get balance sheet for
|
||||
source : str, optional
|
||||
Data source for balance sheet, by default "YahooFinance"
|
||||
quarterly : bool, optional
|
||||
Flag to get quarterly data
|
||||
ratios : bool, optional
|
||||
Flag to return data as a percent change.
|
||||
limit : int
|
||||
Number of statements to return (free tiers may be limited to 5 years)
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
Dataframe of balance sheet
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> balance_sheet = openbb.stocks.fa.balance("AAPL", source="YahooFinance)
|
||||
|
||||
If you have a premium AlphaVantage key, you can use the quarterly flag to get quarterly statements
|
||||
>>> quarterly_income_statement = openbb.stocks.fa.balance("AAPL", source="AlphaVantage", quarterly=True)
|
||||
"""
|
||||
if source == "YahooFinance":
|
||||
if quarterly:
|
||||
print(
|
||||
"Quarterly statements not available from Yahoo Finance. Returning annual"
|
||||
)
|
||||
df = yahoo_finance_model.get_financials(
|
||||
symbol=symbol, statement="balance-sheet", ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "AlphaVantage":
|
||||
df = av_model.get_balance_sheet(
|
||||
symbol=symbol, quarterly=quarterly, ratios=ratios, limit=limit
|
||||
)
|
||||
return df
|
||||
if source == "FinancialModelingPrep":
|
||||
df = fmp_model.get_balance(
|
||||
symbol=symbol, limit=limit, quarterly=quarterly, ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "Polygon":
|
||||
df = polygon_model.get_financials(symbol, "balance", quarterly, ratios)
|
||||
return df
|
||||
if source == "EODHD":
|
||||
df = eodhd_model.get_financials(symbol, "balance", quarterly, ratios)
|
||||
return df
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
def get_cash_flow(
|
||||
symbol: str,
|
||||
quarterly: bool = False,
|
||||
ratios: bool = False,
|
||||
source: str = "YahooFinance",
|
||||
limit: int = 10,
|
||||
) -> pd.DataFrame:
|
||||
"""Get Cash Flow.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Symbol to get cash flow for
|
||||
source : str, optional
|
||||
Data source for cash flow, by default "YahooFinance"
|
||||
quarterly : bool, optional
|
||||
Flag to get quarterly data
|
||||
ratios : bool, optional
|
||||
Flag to return data as a percent change.
|
||||
limit : int
|
||||
Number of statements to return (free tiers may be limited to 5 years)
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
Dataframe of cash flow
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> cash_flow = openbb.stocks.fa.cash("AAPL", source="YahooFinance)
|
||||
|
||||
If you have a premium AlphaVantage key, you can use the quarterly flag to get quarterly statements
|
||||
>>> quarterly_income_statement = openbb.stocks.fa.cash("AAPL", source="AlphaVantage", quarterly=True)
|
||||
"""
|
||||
if source == "YahooFinance":
|
||||
if quarterly:
|
||||
print(
|
||||
"Quarterly statements not available from Yahoo Finance. Returning annual"
|
||||
)
|
||||
df = yahoo_finance_model.get_financials(
|
||||
symbol=symbol, statement="cash-flow", ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "AlphaVantage":
|
||||
df = av_model.get_cash_flow(
|
||||
symbol=symbol, quarterly=quarterly, ratios=ratios, limit=limit
|
||||
)
|
||||
return df
|
||||
if source == "FinancialModelingPrep":
|
||||
df = fmp_model.get_cash(
|
||||
symbol=symbol, limit=limit, quarterly=quarterly, ratios=ratios
|
||||
)
|
||||
return df
|
||||
if source == "Polygon":
|
||||
df = polygon_model.get_financials(symbol, "cash", quarterly, ratios)
|
||||
return df
|
||||
if source == "EODHD":
|
||||
df = eodhd_model.get_financials(symbol, "cash", quarterly, ratios)
|
||||
return df
|
||||
return pd.DataFrame()
|
||||
Reference in New Issue
Block a user