diff options
Diffstat (limited to 'openbb_terminal/etf/etf_controller.py')
-rw-r--r-- | openbb_terminal/etf/etf_controller.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/openbb_terminal/etf/etf_controller.py b/openbb_terminal/etf/etf_controller.py index 26a4311208e..589829f2802 100644 --- a/openbb_terminal/etf/etf_controller.py +++ b/openbb_terminal/etf/etf_controller.py @@ -50,6 +50,7 @@ class ETFController(BaseController): "load", "overview", "holdings", + "holding_perf", "news", "candle", "weights", @@ -106,6 +107,7 @@ class ETFController(BaseController): mt.add_raw("\n") mt.add_cmd("overview", self.etf_name) mt.add_cmd("holdings", self.etf_name) + mt.add_cmd("holding_perf", self.etf_name) mt.add_cmd("weights", self.etf_name) mt.add_cmd("news", self.etf_name) mt.add_cmd("candle", self.etf_name) @@ -638,3 +640,60 @@ class ETFController(BaseController): if ns_parser.sheet_name else None, ) + + @log_start_end(log=logger) + def call_holding_perf(self, other_args: List[str]): + """Process holdings performance command""" + + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="holding_perf", + description="Look at ETF company holdings' performance", + ) + parser.add_argument( + "-s", + "--start-date", + type=valid_date, + default=(datetime.now().date() - timedelta(days=366)), + dest="start", + help="The starting date (format YYYY-MM-DD) to get each holding's price", + ) + parser.add_argument( + "-e", + "--end-date", + type=valid_date, + default=datetime.now().date(), + dest="end", + help="The ending date (format YYYY-MM-DD) to get each holding's price", + ) + parser.add_argument( + "-l", + "--limit", + type=check_positive, + dest="limit", + help="Number of holdings to get", + default=20, + ) + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-l") + + ns_parser = self.parse_known_args_and_warn( + parser, + other_args, + export_allowed=EXPORT_BOTH_RAW_DATA_AND_FIGURES, + raw=True, + ) + if ns_parser: + if self.etf_name: + fmp_view.view_etf_holdings_performance( + ticker=self.etf_name, + start_date=ns_parser.start, + end_date=ns_parser.end, + limit=ns_parser.limit, + export=ns_parser.export, + sheet_name=ns_parser.sheet_name, + raw=ns_parser.raw, + ) + else: + console.print("Please load a ticker using <load name>. \n") |