code: def average_returns(ts, **kwargs):
      ''' Compute geometric average returns from a returns time serie'''
      average_type = kwargs.get('type', 'net')
      if average_type == 'net':
          relative = 0
      else:
          relative = -1  # gross
      #start = kwargs.get('start', ts.index[0])
      #end = kwargs.get('end', ts.index[len(ts.index) - 1])
      #delta = kwargs.get('delta', ts.index[1] - ts.index[0])
      period = kwargs.get('period', None)
      if isinstance(period, int):
          pass
      #else:
          #ts = reIndexDF(ts, start=start, end=end, delta=delta)
          #period = 1
      avg_ret = 1
      for idx in range(len(ts.index)):
          if idx % period == 0:
              avg_ret *= (1 + ts[idx] + relative)
      return avg_ret - f average_returns(ts, **kwargs):
      ''' Compute geometric average returns from a returns time serie'''
      average_type = kwargs.get('type', 'net')
      if average_type == 'net':
          relative = 0
      else:
          relative = -1  # gross
      #start = kwargs.get('start', ts.index[0])
      #end = kwargs.get('end', ts.index[len(ts.index) - 1])
      #delta = kwargs.get('delta', ts.index[1] - ts.index[0])
      period = kwargs.get('period', None)
      if isinstance(period, int):
          pass
      #else:
          #ts = reIndexDF(ts, start=start, end=end, delta=delta)
          #period = 1
      avg_ret = 1
      for idx in range(len(ts.index)):
          if idx % period == 0:
              avg_ret *= (1 + ts[idx] + relative)
      return avg_ret - 1
docs: Compute geometric average returns from a returns time serie