code: def model_performance_graph(
      pred_label: pd.DataFrame,
      lag: int = 1,
      N: int = 5,
      reverse=False,
      rank=False,
      graph_names: list = ["group_return", "pred_ic", "pred_autocorr"],
      show_notebook: bool = True,
      show_nature_day: bool = False,
      **kwargs,
  ) -> [list, tuple]:
      r"""Model performance
  
      :param pred_label: index is **pd.MultiIndex**, index name is **[instrument, datetime]**; columns names is **[score, label]**.
             It is usually same as the label of model training(e.g. "Ref($close, -2)/Ref($close, -1) - 1").
  
  
              .. code-block:: python
  
                  instrument  datetime        score       label
                  SH600004    2017-12-11  -0.013502       -0.013502
                                  2017-12-12  -0.072367       -0.072367
                                  2017-12-13  -0.068605       -0.068605
                                  2017-12-14  0.012440        0.012440
                                  2017-12-15  -0.102778       -0.102778
  
  
      :param lag: `pred.groupby(level='instrument')['score'].shift(lag)`. It will be only used in the auto-correlation computing.
      :param N: group number, default 5.
      :param reverse: if `True`, `pred['score'] *= -1`.
      :param rank: if **True**, calculate rank ic.
      :param graph_names: graph names; default ['cumulative_return', 'pred_ic', 'pred_autocorr', 'pred_turnover'].
      :param show_notebook: whether to display graphics in notebook, the default is `True`.
      :param show_nature_day: whether to display the abscissa of non-trading day.
      :param \*\*kwargs: contains some parameters to control plot style in plotly. Currently, supports
         - `rangebreaks`: https://plotly.com/python/time-series/#Hiding-Weekends-and-Holidays
      :return: if show_notebook is True, display in notebook; else return `plotly.graph_objs.Figure` list.
      """
      figure_list = []
      for graph_name in graph_names:
          fun_res = eval(f"_{graph_name}")(
              pred_label=pred_label,
              lag=lag,
              N=N,
              reverse=reverse,
              rank=rank,
              show_nature_day=show_nature_day,
              **kwargs,
          )
          figure_list += fun_res
  
      if show_notebook:
          BarGraph.show_graph_in_notebook(figure_list)
      else:
          return figure_list
  
file_path: qlib/qlib/contrib/report/analysis_model/analysis_model_performance.py
imports: from functools import partial
  import pandas
  import plotly.graph_objs
  import statsmodels.api
  import matplotlib.pyplot
  from scipy import stats
  from typing import Sequence
  from qlib.typehint import Literal
  from ..graph import ScatterGraph, SubplotsGraph, BarGraph, HeatmapGraph
  from ..utils import guess_plotly_rangebreaks
label_desc: Use image node_id 7 for calling a global function with example usage: model_performance_graph(pred_label, lag, N, reverse, rank, graph_names, show_notebook, show_nature_day) and returns: figure_list