code: def mean_return_by_quantile(
      factor_data,
      by_date=False,
      by_group=False,
      demeaned=True,
      group_adjust=False,
  ):
      """
      Computes mean returns for factor quantiles across
      provided forward returns columns.
  
      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
      by_date : bool
          If True, compute quantile bucket returns separately for each date.
      by_group : bool
          If True, compute quantile bucket returns separately for each group.
      demeaned : bool
          Compute demeaned mean returns (long short portfolio)
      group_adjust : bool
          Returns demeaning will occur on the group level.
  
      Returns
      -------
      mean_ret : pd.DataFrame
          Mean period wise returns by specified factor quantile.
      std_error_ret : pd.DataFrame
          Standard error of returns by specified quantile.
      """
  
      if group_adjust:
          grouper = [factor_data.index.get_level_values("date")] + [
              "group"
          ]
          factor_data = utils.demean_forward_returns(
              factor_data, grouper
          )
      elif demeaned:
          factor_data = utils.demean_forward_returns(factor_data)
      else:
          factor_data = factor_data.copy()
  
      grouper = [
          "factor_quantile",
          factor_data.index.get_level_values("date"),
      ]
  
      if by_group:
          grouper.append("group")
  
      group_stats = factor_data.groupby(grouper)[
          utils.get_forward_returns_columns(factor_data.columns)
      ].agg(["mean", "std", "count"])
  
      mean_ret = group_stats.T.xs("mean", level=1).T
  
      if not by_date:
          grouper = [mean_ret.index.get_level_values("factor_quantile")]
          if by_group:
              grouper.append(mean_ret.index.get_level_values("group"))
          group_stats = mean_ret.groupby(grouper).agg(
              ["mean", "std", "count"]
          )
          mean_ret = group_stats.T.xs("mean", level=1).T
  
      std_error_ret = group_stats.T.xs("std", level=1).T / np.sqrt(
          group_stats.T.xs("count", level=1).T
      )
  
      return mean_ret, std_error_ret
  
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 8 for calling a global function with example usage: mean_return_by_quantile(factor_data, by_date, by_group, demeaned, group_adjust) and returns: mean_ret,  std_error_ret