summaryrefslogtreecommitdiffstats
path: root/openbb_terminal/etf/etf_controller.py
diff options
context:
space:
mode:
Diffstat (limited to 'openbb_terminal/etf/etf_controller.py')
-rw-r--r--openbb_terminal/etf/etf_controller.py59
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")