-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Showing
3 changed files
with
215 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
200 changes: 200 additions & 0 deletions
200
openbb_terminal/stocks/fundamental_analysis/sdk_helpers.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() |