code: def excess_sharpe(returns, factor_returns, out=None):
      
      allocated_output = out is None
      if allocated_output:
          out = np.empty(returns.shape[1:])
  
      returns_1d = returns.ndim == 1
  
      if len(returns) < 2:
          out[()] = np.nan
          if returns_1d:
              out = out.item()
          return out
  
      active_return = _adjust_returns(returns, factor_returns)
      tracking_error = np.nan_to_num(nanstd(active_return, ddof=1, axis=0))
  
      out = np.divide(
          nanmean(active_return, axis=0, out=out),
          tracking_error,
          out=out,
      )
      if returns_1d:
          out = out.item()
      return out
docs: Determines the Excess Sharpe of a strategy.
  
      Parameters
      ----------
      returns : pd.Series or np.ndarray
          Daily returns of the strategy, noncumulative.
          - See full explanation in :func:`~empyrical.stats.cum_returns`.
      factor_returns: float / series
          Benchmark return to compare returns against.
      out : array-like, optional
          Array to use as output buffer.
          If not passed, a new array will be created.
  
      Returns
      -------
      excess_sharpe : float
  
      Note
      -----
      The excess Sharpe is a simplified Information Ratio that uses
      tracking error rather than "active risk" as the denominator.