code: def summarize_paths(samples, cone_std=(1., 1.5, 2.), starting_value=1.):
      
  
      cum_samples = ep.cum_returns(samples.T,
                                   starting_value=starting_value).T
  
      cum_mean = cum_samples.mean(axis=0)
      cum_std = cum_samples.std(axis=0)
  
      if isinstance(cone_std, (float, int)):
          cone_std = [cone_std]
  
      cone_bounds = pd.DataFrame(columns=pd.Float64Index([]))
      for num_std in cone_std:
          cone_bounds.loc[:, float(num_std)] = cum_mean + cum_std * num_std
          cone_bounds.loc[:, float(-num_std)] = cum_mean - cum_std * num_std
  
      return cone_bounds
docs: Gnerate the upper and lower bounds of an n standard deviation
      cone of forecasted cumulative returns.
  
      Parameters
      ----------
      samples : numpy.ndarray
          Alternative paths, or series of possible outcomes.
      cone_std : list of int/float
          Number of standard devations to use in the boundaries of
          the cone. If multiple values are passed, cone bounds will
          be generated for each value.
  
      Returns
      -------
      samples : pandas.core.frame.DataFrame