为什么Quantopian的pf.create_full_tear_sheet()函数给我DateTimeArray错误?

时间:2020-03-30 16:44:16

标签: python pandas quantopian

我试图在我自己的返回数据集pf.create_full_tear_sheet(df_returns)(pandas数据框)上运行Pyfolio的df_returns函数,如下所示:

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 个答案:

答案 0 :(得分:2)

我真的无法重现您的错误。可能与您传递完整的数据帧有关:根据Pyfolio's API referencereturns参数必须作为pd.Series传递。

如果我仅传递Returns %列,它将给出正确的输出。试试:

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

值得注意的是,我发现软件包的依赖关系已经过时了:

  • 我不得不手动安装zipline,这会将pandas降级为0.22.0
  • matplotlib3.2.x起抛出了许多不建议使用的警告,因此我将其降级为3.1.x
  • 已弃用.argmin()并引发警告。 This issue has been known since 2019-05-24

这使我相信pyfolio对您的环境可能非常敏感。您是否使用文档中的virtual environment instructions安装了它?