From 68239df094e25ed36d6b417eca9b59ed50587ac1 Mon Sep 17 00:00:00 2001 From: OpenBB Date: Sat, 22 Jul 2023 09:57:51 -0700 Subject: [PATCH] fix Finviz screener Perf 1Y returning as 1970-01-01 --- .../comparison_analysis/finviz_compare_model.py | 17 ++++++++++++++++- openbb_terminal/stocks/screener/finviz_model.py | 14 ++++++++++++++ openbb_terminal/stocks/screener/finviz_view.py | 16 ++++++++-------- .../stocks/screener/screener_controller.py | 2 +- .../test_get_comparison_data[performance].csv | 2 +- .../test_get_screener_data[performance].csv | 2 +- 6 files changed, 41 insertions(+), 12 deletions(-) diff --git a/openbb_terminal/stocks/comparison_analysis/finviz_compare_model.py b/openbb_terminal/stocks/comparison_analysis/finviz_compare_model.py index cc89e4186e0..899b40019be 100644 --- a/openbb_terminal/stocks/comparison_analysis/finviz_compare_model.py +++ b/openbb_terminal/stocks/comparison_analysis/finviz_compare_model.py @@ -79,6 +79,7 @@ def get_comparison_data(similar: List[str], data_type: str = "overview"): screen = ownership.Ownership() elif data_type == "performance": screen = performance.Performance() + elif data_type == "technical": screen = technical.Technical() else: @@ -87,7 +88,21 @@ def get_comparison_data(similar: List[str], data_type: str = "overview"): screen.set_filter(ticker=",".join(similar)) try: - return screen.screener_view(verbose=0) + screen_df = screen.screener_view(verbose=0) + screen_df.columns = screen_df.columns.str.strip() + screen_df = screen_df.rename( + columns={ + "Perf Week": "1W", + "Perf Month": "1M", + "Perf Quart": "3M", + "Perf Half": "6M", + "Perf Year": "1Y", + "Perf YTD": "YTD", + "Volatility W": "1W Volatility", + "Volatility M": "1M Volatility", + } + ) + return screen_df except IndexError: console.print("[red]Invalid data from website[red]\n") return pd.DataFrame() diff --git a/openbb_terminal/stocks/screener/finviz_model.py b/openbb_terminal/stocks/screener/finviz_model.py index 65ab9b3aed4..5f825739626 100644 --- a/openbb_terminal/stocks/screener/finviz_model.py +++ b/openbb_terminal/stocks/screener/finviz_model.py @@ -191,6 +191,20 @@ def get_screener_data( df_screen.columns = [val.strip("\n") for val in df_screen.columns] if "Company" in df_screen.columns: df_screen["Company"] = df_screen["Company"].str.replace(",", "") + df_screen.columns = df_screen.columns.str.strip() + if data_type == "performance": + df_screen = df_screen.rename( + columns={ + "Perf Week": "1W", + "Perf Month": "1M", + "Perf Quart": "3M", + "Perf Half": "6M", + "Perf Year": "1Y", + "Perf YTD": "YTD", + "Volatility W": "1W Volatility", + "Volatility M": "1M Volatility", + } + ) return df_screen diff --git a/openbb_terminal/stocks/screener/finviz_view.py b/openbb_terminal/stocks/screener/finviz_view.py index 30da375525f..fdc8f786aa8 100644 --- a/openbb_terminal/stocks/screener/finviz_view.py +++ b/openbb_terminal/stocks/screener/finviz_view.py @@ -90,14 +90,14 @@ d_cols_to_sort = { ], "performance": [ "Ticker", - "Perf Week", - "Perf Month", - "Perf Quart", - "Perf Half", - "Perf Year", - "Perf YTD", - "Volatility W", - "Volatility M", + "1W", + "1M", + "3M", + "6M", + "1Y", + "YTD", + "1W Volatility", + "1M Volatility", "Recom", "Avg Volume", "Rel Volume", diff --git a/openbb_terminal/stocks/screener/screener_controller.py b/openbb_terminal/stocks/screener/screener_controller.py index 49c804e2c20..36e32e42e02 100644 --- a/openbb_terminal/stocks/screener/screener_controller.py +++ b/openbb_terminal/stocks/screener/screener_controller.py @@ -540,7 +540,7 @@ class ScreenerController(BaseController): choices=screener_helper.finviz_choices("performance"), type=str.lower, dest="sort", - default="perfytd", + default="ytd", metavar="SORTBY", help="Sort elements of the table.", ) diff --git a/tests/openbb_terminal/stocks/comparison_analysis/csv/test_finviz_compare_model/test_get_comparison_data[performance].csv b/tests/openbb_terminal/stocks/comparison_analysis/csv/test_finviz_compare_model/test_get_comparison_data[performance].csv index 2a01191baf2..bce2ad61cfb 100644 --- a/tests/openbb_terminal/stocks/comparison_analysis/csv/test_finviz_compare_model/test_get_comparison_data[performance].csv +++ b/tests/openbb_terminal/stocks/comparison_analysis/csv/test_finviz_compare_model/test_get_comparison_data[performance].csv @@ -1,2 +1,2 @@ -,Ticker,Perf Week,Perf Month,Perf Quart,Perf Half,Perf Year,Perf YTD,Volatility W,Volatility M,Recom,Avg Volume,Rel Volume,Price,Change,Volume +,Ticker,1W,1M,3M,6M,1Y,YTD,1W Volatility,1M Volatility,Recom,Avg Volume,Rel Volume,Price,Change,Volume 0,GM,-0.07769999999999999,-0.002,0.051100000000000007,0.0063,-0.3714,0.0508,0.0255,0.0277,2.2,13360000.0,0.0,35.35,0.0,0.0 diff --git a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[performance].csv b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[performance].csv index 1bef1f71b77..66cd4f7feac 100644 --- a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[performance].csv +++ b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[performance].csv @@ -1,4 +1,4 @@ -,Ticker,Perf Week,Perf Month,Perf Quart,Perf Half,Perf Year,Perf YTD,Volatility W,Volatility M,Recom,Avg Volume,Rel Volume,Price,Change,Volume +,Ticker,1W,1M,3M,6M,1Y,YTD,1W Volatility,1M Volatility,Recom,Avg Volume,Rel Volume,Price,Change,Volume 0,CDIO,2.1081,2.3173,0.725,-0.6526000000000001,,2.2547,0.1937,0.2682,2.0,2130000.0,194.21,3.45,1.5847,100099160.0 1,LION,1.2992,0.4106,0.44549999999999995,0.46880000000000005,,0.4328,0.6442,0.2623,,65860.0,13.79,14.6,1.0563,739802.0 2,CHS,0.1783,0.1079,-0.0496,-0.0987,0.1711,0.16870000000000002,0.0602,0.0466,3.0,2420000.0,2.87,5.75,0.1616,6759202.0