Ejemplo n.º 1
0
 def call_hcorr(self, other_args: List[str]):
     """Process historical correlation command"""
     parser = argparse.ArgumentParser(
         add_help=False,
         formatter_class=argparse.ArgumentDefaultsHelpFormatter,
         prog="hcorr",
         description=
         """ Correlation heatmap based on historical price comparison between similar
         companies.
         """,
     )
     parser.add_argument(
         "-t",
         "--type",
         action="store",
         dest="type_candle",
         type=str,
         choices=["o", "h", "l", "c", "a"],
         default="a",  # in case it's adjusted close
         help=
         "Candle data to use: o-open, h-high, l-low, c-close, a-adjusted close.",
     )
     parser.add_argument(
         "-s",
         "--start",
         type=valid_date,
         default=(datetime.now() -
                  timedelta(days=366)).strftime("%Y-%m-%d"),
         dest="start",
         help="The starting date (format YYYY-MM-DD) of the stock",
     )
     if other_args and "-" not in other_args[0][0]:
         other_args.insert(0, "-t")
     ns_parser = parse_known_args_and_warn(
         parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES)
     if ns_parser:
         if self.similar and len(self.similar) > 1:
             yahoo_finance_view.display_correlation(
                 similar_tickers=self.similar,
                 start=ns_parser.start.strftime("%Y-%m-%d"),
                 candle_type=ns_parser.type_candle,
             )
         else:
             console.print(
                 "Please make sure there are similar tickers selected. \n")
Ejemplo n.º 2
0
    def call_hcorr(self, other_args: List[str]):
        """Process historical correlation command"""
        parser = argparse.ArgumentParser(
            add_help=False,
            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
            prog="hcorr",
            description=
            """ Correlation heatmap based on historical price comparison between similar
            companies.
            """,
        )
        parser.add_argument(
            "-t",
            "--type",
            action="store",
            dest="type_candle",
            type=str,
            choices=["o", "h", "l", "c", "a"],
            default="a",  # in case it's adjusted close
            help=
            "Candle data to use: o-open, h-high, l-low, c-close, a-adjusted close.",
        )

        try:
            ns_parser = parse_known_args_and_warn(parser, other_args)
            if not ns_parser:
                return

            if not self.similar or not self.ticker:
                print(
                    "Please make sure there are both a loaded ticker and similar tickers selected. \n"
                )
                return

            yahoo_finance_view.display_correlation(
                ticker=self.ticker,
                similar_tickers=self.similar,
                start=self.start,
                candle_type=ns_parser.type_candle,
            )
        except Exception as e:
            print(e, "\n")
def test_display_correlation(mocker):
    # FORCE SINGLE THREADING
    yf_download = yahoo_finance_view.yahoo_finance_model.yf.download

    def mock_yf_download(*args, **kwargs):
        kwargs["threads"] = False
        return yf_download(*args, **kwargs)

    mocker.patch("yfinance.download", side_effect=mock_yf_download)

    # MOCK VISUALIZE_OUTPUT
    mocker.patch(
        target="gamestonk_terminal.helper_classes.TerminalStyle.visualize_output"
    )

    yahoo_finance_view.display_correlation(
        similar_tickers=["TSLA", "GM"],
        start=datetime.strptime("2020-12-21", "%Y-%m-%d"),
        candle_type="o",
    )
def test_display_correlation(mocker):
    # FORCE SINGLE THREADING
    yf_download = yahoo_finance_view.yahoo_finance_model.yf.download

    def mock_yf_download(*args, **kwargs):
        kwargs["threads"] = False
        return yf_download(*args, **kwargs)

    mocker.patch("yfinance.download", side_effect=mock_yf_download)

    mock_show = mocker.Mock()
    mocker.patch("matplotlib.pyplot.show", new=mock_show)

    yahoo_finance_view.display_correlation(
        similar_tickers=["TSLA", "GM"],
        start=datetime.strptime("2020-12-21", "%Y-%m-%d"),
        candle_type="o",
    )

    mock_show.assert_called_once()