code: def factor_information_coefficient(
      factor_data, group_adjust=False, by_group=False
  ):
      """
      Computes the Spearman Rank Correlation based Information Coefficient (IC)
      between factor values and N period forward returns for each period in
      the factor index.
  
      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, compute period wise IC separately for each group.
  
      Returns
      -------
      ic : pd.DataFrame
          Spearman Rank correlation between factor and
          provided forward returns.
      """
  
      def src_ic(group):
          f = group["factor"]
          _ic = group[
              utils.get_forward_returns_columns(factor_data.columns)
          ].apply(lambda x: stats.spearmanr(x, f)[0])
          return _ic
  
      factor_data = factor_data.copy()
  
      grouper = [factor_data.index.get_level_values("date")]
  
      if group_adjust:
          factor_data = utils.demean_forward_returns(
              factor_data, grouper + ["group"]
          )
      if by_group:
          grouper.append("group")
  
      ic = factor_data.groupby(grouper).apply(src_ic)
  
      return ic
  
imports: import pandas
  import numpy
  import warnings
  import empyrical
  from pandas.tseries.offsets import BDay
  from scipy import stats
  from statsmodels.regression.linear_model import OLS
  from statsmodels.tools.tools import add_constant
  from .None import utils
label_desc: Use image node_id 1 for calling a global function with example usage: factor_information_coefficient(factor_data, group_adjust, by_group) and returns: ic, _ic