code: def summarize_paths(
      samples, cone_std=(1.0, 1.5, 2.0), starting_value=1.0
  ):
      """
      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
      """
  
      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
  
imports: from __future__ import division
  from collections import OrderedDict
  from functools import partial
  import empyrical
  import numpy
  import pandas
  import scipy
  import scipy.stats
  from sklearn import linear_model
  from .deprecate import deprecated
  from .interesting_periods import PERIODS
  from .txn import get_turnover
  from .utils import APPROX_BDAYS_PER_MONTH, APPROX_BDAYS_PER_YEAR
  from .utils import DAILY
label_desc: Use image node_id 34 for calling a global function with example usage: summarize_paths(samples, cone_std, starting_value) and returns: cone_bounds