From 83d46a55bf46c95f0200b82b8c913de22bc541cf Mon Sep 17 00:00:00 2001 From: nectariosouzo Date: Wed, 27 Sep 2023 19:34:56 -0400 Subject: [PATCH] Fix url issue and change logic for edge cases --- openbb_terminal/etf/fmp_model.py | 50 +++++++++---------- openbb_terminal/etf/fmp_view.py | 2 +- ...pct_change[2023-09-01-2022-09-01-ARKK].csv | 2 +- ...ice_change[2023-09-01-2022-09-01-TSLA].csv | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/openbb_terminal/etf/fmp_model.py b/openbb_terminal/etf/fmp_model.py index fa7d7fe0218..4315d3dbacd 100644 --- a/openbb_terminal/etf/fmp_model.py +++ b/openbb_terminal/etf/fmp_model.py @@ -74,9 +74,10 @@ def get_stock_price_change( Percent change of closing price over time period """ current_user = get_current_user() - url = f"""https://financialmodelingprep.com/api/v3/historical-price-full/{ticker}? - from={start_date}&to={end_date}&serietype=line - &apikey={current_user.credentials.API_KEY_FINANCIALMODELINGPREP}""" + + url = f"""https://financialmodelingprep.com/api/v3/historical-price-full/{ticker}?\ +from={start_date}&to={end_date}&serietype=line\ +&apikey={current_user.credentials.API_KEY_FINANCIALMODELINGPREP}""" response = request(url) if response.status_code != 200 or "Error Message" in response.json(): message = f"Error, Status Code: {response.status_code}." @@ -113,8 +114,8 @@ def get_etf_holdings(ticker: str) -> List[Dict[str, Any]]: """ current_user = get_current_user() - url = f"""https://financialmodelingprep.com/api/v3/etf-holder/{ticker}? - apikey={current_user.credentials.API_KEY_FINANCIALMODELINGPREP}""" + url = f"""https://financialmodelingprep.com/api/v3/etf-holder/{ticker}\ +?apikey={current_user.credentials.API_KEY_FINANCIALMODELINGPREP}""" response = request(url) if response.status_code != 200 or "Error Message" in response.json(): message = f"Error, Status Code: {response.status_code}." @@ -146,26 +147,25 @@ def get_holdings_pct_change( pd.DataFrame Calculated percentage change for each stock in the ETF, in descending order. """ - holdings = get_etf_holdings(ticker=ticker) - if len(holdings) == 0: - return pd.DataFrame() - data_list = [] + df = pd.DataFrame(columns=['Ticker', 'Name', 'Percent Change'], data=[]) + holdings = get_etf_holdings(ticker) + for stock in holdings: - if stock["asset"]: - pct_change = get_stock_price_change( - ticker=stock["asset"], start_date=start_date, end_date=end_date - ) - data_list.append( - { - "Ticker": stock["asset"], - "Name": stock["name"], - "Percent Change": pct_change, - } - ) - else: - data_list.append({"Ticker": "", "Name": stock["name"], "Percent Change": 0}) + pct_change = get_stock_price_change(stock["asset"], start_date, end_date) + if pct_change is None: + pct_change = 0 - df = pd.DataFrame(data_list) - df.sort_values(by="Percent Change", ascending=False, inplace=True) + new_df = pd.DataFrame( + { + "Ticker": stock["asset"], + "Name": stock["name"], + "Percent Change": pct_change, + }, + index=[0], + ) - return df + df = pd.concat([df, new_df], ignore_index=True) + + sorted_df = df.sort_values(by="Percent Change", ascending=False, inplace=False) + + return sorted_df diff --git a/openbb_terminal/etf/fmp_view.py b/openbb_terminal/etf/fmp_view.py index b875a0eb9b7..a0e5529ca38 100644 --- a/openbb_terminal/etf/fmp_view.py +++ b/openbb_terminal/etf/fmp_view.py @@ -148,7 +148,7 @@ def view_etf_holdings_performance( export: str Type of format to export data """ - data = fmp_model.get_holdings_pct_change(ticker, start_date, end_date)[0:limit] + data = fmp_model.get_holdings_pct_change(ticker, start_date, end_date).head(limit) if raw: print_rich_table( diff --git a/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_holdings_pct_change[2023-09-01-2022-09-01-ARKK].csv b/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_holdings_pct_change[2023-09-01-2022-09-01-ARKK].csv index e16c76dff88..09bd5b648a0 100644 --- a/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_holdings_pct_change[2023-09-01-2022-09-01-ARKK].csv +++ b/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_holdings_pct_change[2023-09-01-2022-09-01-ARKK].csv @@ -1 +1 @@ -"" +,Ticker,Name,Percent Change diff --git a/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_stock_price_change[2023-09-01-2022-09-01-TSLA].csv b/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_stock_price_change[2023-09-01-2022-09-01-TSLA].csv index e16c76dff88..09bd5b648a0 100644 --- a/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_stock_price_change[2023-09-01-2022-09-01-TSLA].csv +++ b/tests/openbb_terminal/etf/csv/test_fmp_model/test_get_stock_price_change[2023-09-01-2022-09-01-TSLA].csv @@ -1 +1 @@ -"" +,Ticker,Name,Percent Change