Почему функция Quantopian pf.create_full_tear_sheet () выдает ошибку DateTimeArray? - PullRequest
2 голосов
/ 30 марта 2020

Я пытаюсь запустить функцию Pyfolio pf.create_full_tear_sheet(df_returns) для моего собственного набора возвращаемых данных df_returns (pandas dataframe), который выглядит следующим образом:

enter image description here

Однако я получаю сообщение об ошибке:

TypeError: Addition/subtraction of integers and integer-arrays with DatetimeArray is no longer supported.  Instead of adding/subtracting `n`, use `n * obj.freq`

Я подозреваю, что формат даты может быть проблемой, поэтому я проверил тип данных:

In: df_returns['Date'].dtype
Out: dtype('<M8[ns]')

In: df_returns['% Returns'].dtype
Out: dtype('float64')

Может ли это Может быть, я не указываю данные эталонного теста в pf.create_full_tear_sheet(df_returns), который также вызывает ошибку?

1 Ответ

1 голос
/ 08 апреля 2020

Я не могу воспроизвести вашу ошибку. Это может быть связано с тем, что вы передаете полный фрейм данных: в соответствии с ссылка API Pyfolio аргумент returns должен быть передан как pd.Series.

Если я передать только столбец Returns %, это даст правильный вывод. Попробуйте:

df_returns = df_returns.set_index('Date')
pf.create_full_tear_sheet(df_returns['% Returns'])

Приятно отметить, что я обнаружил, что зависимости пакетов были довольно устаревшими:

  • Мне пришлось вручную установить zipline, что ухудшает pandas назад до 0.22.0.
  • matplotlib генерирует множество устаревших предупреждений с 3.2.x, поэтому я понизил его до 3.1.x.
  • Использование .argmin() устарело и выдает предупреждения , Эта проблема известна с 2019-05-24 .

Это наводит меня на мысль, что pyfolio может быть очень чувствительным к вашей среде. Вы устанавливали его, используя инструкции виртуальной среды в документации?

...