docs: def create_information_tear_sheet(factor_data,
                                    group_neutral=False,
                                    by_group=False):
      """
      Creates a tear sheet for information analysis of a factor.
  
      Parameters
      ----------
      factor_data : pd.DataFrame - MultiIndex
          A MultiIndex DataFrame indexed by date (level 0) and asset (level 1),
          containing the values for a single alpha factor, forward returns for
          each period, the factor quantile/bin that factor value belongs to, and
          (optionally) the group the asset belongs to.
          - See full explanation in utils.get_clean_factor_and_forward_returns
      group_neutral : bool
          Demean forward returns by group before computing IC.
      by_group : bool
          If True, display graphs separately for each group.
      """
  
      ic = perf.factor_information_coefficient(factor_data, group_neutral)
  
      plotting.plot_information_table(ic)
  
      columns_wide = 2
      fr_cols = len(ic.columns)
      rows_when_wide = (((fr_cols - 1) // columns_wide) + 1)
      vertical_sections = fr_cols + 3 * rows_when_wide + 2 * fr_cols
      gf = GridFigure(rows=vertical_sections, cols=columns_wide)
  
      ax_ic_ts = [gf.next_row() for _ in range(fr_cols)]
      plotting.plot_ic_ts(ic, ax=ax_ic_ts)
  
      ax_ic_hqq = [gf.next_cell() for _ in range(fr_cols * 2)]
      plotting.plot_ic_hist(ic, ax=ax_ic_hqq[::2])
      plotting.plot_ic_qq(ic, ax=ax_ic_hqq[1::2])
  
      if not by_group:
  
          mean_monthly_ic = \
              perf.mean_information_coefficient(factor_data,
                                                group_adjust=group_neutral,
                                                by_group=False,
                                                by_time="M")
          ax_monthly_ic_heatmap = [gf.next_cell() for x in range(fr_cols)]
          plotting.plot_monthly_ic_heatmap(mean_monthly_ic,
                                           ax=ax_monthly_ic_heatmap)
  
      if by_group:
          mean_group_ic = \
              perf.mean_information_coefficient(factor_data,
                                                group_adjust=group_neutral,
                                                by_group=True)
  
          plotting.plot_ic_by_group(mean_group_ic, ax=gf.next_row())
  
      plt.show()
      gf.close()