Использование bt (библиотека обратного тестирования): Ошибка значения: найден массив с 0 образцами(образцами) (форма=(0, 2)), в то время как требуется минимум 1

#python

Вопрос:

при использовании bt-библиотеки я получил следующее сообщение об ошибке:

 Traceback (most recent call last):  File "C:/Users/Tim/Documents/Algo Trading/Python/App/finance.py", line 534, in lt;modulegt;  erc = update_card(data, 'ERC', 'daily')  File "C:/Users/Tim/Documents/Algo Trading/Python/App/finance.py", line 527, in update_card  res = bt.run(test)  File "C:UsersTimAnaconda3libsite-packagesbtbacktest.py", line 28, in run  bkt.run()  File "C:UsersTimAnaconda3libsite-packagesbtbacktest.py", line 240, in run  self.strategy.run()  File "btcore.py", line 2101, in bt.core.Strategy.run  File "btcore.py", line 2040, in bt.core.AlgoStack.__call__  File "C:UsersTimAnaconda3libsite-packagesbtalgos.py", line 1239, in __call__  tw = bt.ffn.calc_erc_weights(  File "C:UsersTimAnaconda3libsite-packagesffncore.py", line 1791, in calc_erc_weights  covar = sklearn.covariance.ledoit_wolf(returns)[0]  File "C:UsersTimAnaconda3libsite-packagessklearncovariance_shrunk_covariance.py", line 320, in ledoit_wolf  X = check_array(X)  File "C:UsersTimAnaconda3libsite-packagessklearnutilsvalidation.py", line 797, in check_array  raise ValueError( ValueError: Found array with 0 sample(s) (shape=(0, 2)) while a minimum of 1 is required.  

Я использовал следующий код:

 import yfinance as yf import bt def get_returns(ticker, start_date='2010-01-01'):  # create final df df_prices = pd.DataFrame()  # get price data for every stock for stock in ticker:   tick = yf.Ticker(stock)   # get historical market data  hist = tick.history(start=start_date)  df_prices[stock] = hist['Close']  df_prices[df_prices.loc[:, stock] == ""] = np.nan  df_prices[stock] = df_prices[stock].fillna(method='ffill')  return df_prices  def update_card(data, type_portfolio, rebalance_period):   if type_portfolio == "EW":  weight = bt.algos.WeighEqually()  elif type_portfolio == "INV":  weight = bt.algos.WeighInvVol()  elif type_portfolio == "MEAN":  weight = bt.algos.WeighMeanVar()  elif type_portfolio == "ERC":  weight = bt.algos.WeighERC()  else:  weight = bt.algos.WeighRandomly()   if rebalance_period == "daily":  period = bt.algos.RunDaily()  elif rebalance_period == "weekly":  period = bt.algos.RunWeekly()  elif rebalance_period == "monthly":  period = bt.algos.RunMonthly()  elif rebalance_period == "quarterly":  period = bt.algos.RunQuarterly()  elif rebalance_period == "yearly":  period = bt.algos.RunYearly()  else:  period = bt.algos.RunOnce()   s = bt.Strategy('s1', [period,  bt.algos.SelectAll(),  weight,  bt.algos.Rebalance()])  test = bt.Backtest(s, data)  res = bt.run(test)  #print(res.stats.index)  return res  data = get_returns(['FB', 'AAPL'])  erc = update_card(data, 'ERC', 'daily') ew = update_card(data, 'EW', 'daily')  

Как я могу это исправить? Ошибка появляется только тогда, когда я вытаскиваю две или более акций, только одна акция работает нормально. Кажется, что-то происходит в библиотеке sklearn, но я не знаю, что изменить. То же самое происходит при вызове взвешивания MeanVar. Спасибо!