code: def mean_information_coefficient(factor_data,
                                   group_adjust=False,
                                   by_group=False,
                                   by_time=None):
      
  
      ic = factor_information_coefficient(factor_data, group_adjust, by_group)
  
      grouper = []
      if by_time is not None:
          grouper.append(pd.Grouper(freq=by_time))
      if by_group:
          grouper.append('group')
  
      if len(grouper) == 0:
          ic = ic.mean()
  
      else:
          ic = (ic.reset_index().set_index('date').groupby(grouper).mean())
  
      return ic
docs: Get the mean information coefficient of specified groups.
      Answers questions like:
      What is the mean IC for each month?
      What is the mean IC for each group for our whole timerange?
      What is the mean IC for for each group, each week?
  
      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_adjust : bool
          Demean forward returns by group before computing IC.
      by_group : bool
          If True, take the mean IC for each group.
      by_time : str (pd time_rule), optional
          Time window to use when taking mean IC.
          See http://pandas.pydata.org/pandas-docs/stable/timeseries.html
          for available options.
  
      Returns
      -------
      ic : pd.DataFrame
          Mean Spearman Rank correlation between factor and provided
          forward price movement windows.