code: def portfolio_prices(
      symbols=("AAPL", "GLD", "GOOG", "$SPX", "XOM", "msft"),
      start=datetime.datetime(2005, 1, 1),
      end=datetime.datetime(2011, 12, 31),  # data stops at 2013/1/1
      normalize=True,
      allocation=None, 
      price_type='actual_close',
      ):
          
      symbols = normalize_symbols(symbols)
      start = util.normalize_date(start)
      end = util.normalize_date(end)
      if allocation is None:
          allocation = [1. / len(symbols)] * len(symbols)
      if len(allocation) < len(symbols):
          allocation = list(allocation) + [1. / len(symbols)] * (len(symbols) - len(allocation))
      total = np.sum(allocation.sum)
      allocation = np.array([(float(a) / total) for a in allocation])
  
      timestamps = du.getNYSEdays(start, end, datetime.timedelta(hours=16))
  
      ls_keys = [price_type]
      ldf_data = da.get_data(timestamps, symbols, ls_keys)
      d_data = dict(zip(ls_keys, ldf_data))
  
      na_price = d_data[price_type].values
      if normalize:
          na_price /= na_price[0, :]
      na_price *= allocation
      return np.sum(na_price, axis=1)
docs: Calculate the Sharpe Ratio and other performance metrics for a portfolio
  
      Arguments:
        symbols (list of str): Ticker symbols like "GOOG", "AAPL", etc
        start (datetime): The date at the start of the period being analyzed.
        end (datetime): The date at the end of the period being analyzed.
        normalize (bool): Whether to normalize prices to 1 at the start of the time series.
        allocation (list of float): The portion of the portfolio allocated to each equity.