code: def create_interesting_times_tear_sheet(
      returns,
      benchmark_rets=None,
      periods=None,
      legend_loc="best",
      return_fig=False,
  ):
      """
      Generate a number of returns plots around interesting points in time,
      like the flash crash and 9/11.
  
      Plots: returns around the dotcom bubble burst, Lehmann Brothers' failure,
      9/11, US downgrade and EU debt crisis, Fukushima meltdown, US housing
      bubble burst, EZB IR, Great Recession (August 2007, March and September
      of 2008, Q1 & Q2 2009), flash crash, April and October 2014.
  
      benchmark_rets must be passed, as it is meaningless to analyze performance
      during interesting times without some benchmark to refer to.
  
      Parameters
      ----------
      returns : pd.Series
          Daily returns of the strategy, noncumulative.
           - See full explanation in create_full_tear_sheet.
      benchmark_rets : pd.Series
          Daily noncumulative returns of the benchmark.
           - This is in the same style as returns.
      periods: dict or OrderedDict, optional
          historical event dates that may have had significant
          impact on markets
      legend_loc : plt.legend_loc, optional
           The legend's location.
      return_fig : boolean, optional
          If True, returns the figure that was plotted on.
      """
  
      rets_interesting = timeseries.extract_interesting_date_ranges(
          returns, periods
      )
  
      if not rets_interesting:
          warnings.warn(
              "Passed returns do not overlap with any"
              "interesting times.",
              UserWarning,
          )
          return
  
      utils.print_table(
          pd.DataFrame(rets_interesting)
          .describe()
          .transpose()
          .loc[:, ["mean", "min", "max"]]
          * 100,
          name="Stress Events",
          float_format="{0:.2f}%".format,
      )
  
      if benchmark_rets is not None:
          returns = utils.clip_returns_to_benchmark(
              returns, benchmark_rets
          )
  
          bmark_interesting = (
              timeseries.extract_interesting_date_ranges(
                  benchmark_rets, periods
              )
          )
  
      num_plots = len(rets_interesting)
      # 2 plots, 1 row; 3 plots, 2 rows; 4 plots, 2 rows; etc.
      num_rows = int((num_plots + 1) / 2.0)
      fig = plt.figure(figsize=(14, num_rows * 6.0))
      gs = gridspec.GridSpec(num_rows, 2, wspace=0.5, hspace=0.5)
  
      for i, (name, rets_period) in enumerate(rets_interesting.items()):
          # i=0 -> 0, i=1 -> 0, i=2 -> 1 ;; i=0 -> 0, i=1 -> 1, i=2 -> 0
          ax = plt.subplot(gs[int(i / 2.0), i % 2])
  
          ep.cum_returns(rets_period).plot(
              ax=ax, color="forestgreen", label="algo", alpha=0.7, lw=2
          )
  
          if benchmark_rets is not None:
              ep.cum_returns(bmark_interesting[name]).plot(
                  ax=ax, color="gray", label="benchmark", alpha=0.6
              )
              ax.legend(
                  ["Algo", "benchmark"],
                  loc=legend_loc,
                  frameon=True,
                  framealpha=0.5,
              )
          else:
              ax.legend(
                  ["Algo"], loc=legend_loc, frameon=True, framealpha=0.5
              )
  
          ax.set_title(name)
          ax.set_ylabel("Returns")
          ax.set_xlabel("")
  
      if return_fig:
          return fig
  
imports: from __future__ import division
  import warnings
  from time import time
  import empyrical
  from IPython.display import display, Markdown
  import matplotlib.gridspec
  import matplotlib.pyplot
  import pandas
  from .None import _seaborn
  from .None import capacity
  from .None import perf_attrib
  from .None import plotting
  from .None import pos
  from .None import round_trips
  from .None import timeseries
  from .None import txn
  from .None import utils
label_desc: Use image node_id 8 for calling a global function with example usage: create_interesting_times_tear_sheet(returns, benchmark_rets, periods, legend_loc, return_fig) and returns: fig