为什么 Quantopian 的 pf.create_full_tear_sheet() 函数给我一个 DateTimeArray 错误?
Why is Quantopian's pf.create_full_tear_sheet() function giving me a DateTimeArray error?
我正在尝试 运行 Pyfolio 的 pf.create_full_tear_sheet(df_returns)
函数在我自己的一组 returns 数据 df_returns
(pandas 数据帧)上看起来像这样:
但是我收到错误:
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)
中指定基准数据也是导致错误的原因吗?
我真的无法重现你的错误。这可能与您传递完整数据帧的事实有关:根据 Pyfolio's API reference,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()
的使用已弃用并会引发警告。 This issue has been known since 2019-05-24.
这让我相信 pyfolio
对您的环境非常敏感。您是否使用文档中的 virtual environment instructions 安装它?
我正在尝试 运行 Pyfolio 的 pf.create_full_tear_sheet(df_returns)
函数在我自己的一组 returns 数据 df_returns
(pandas 数据帧)上看起来像这样:
但是我收到错误:
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)
中指定基准数据也是导致错误的原因吗?
我真的无法重现你的错误。这可能与您传递完整数据帧的事实有关:根据 Pyfolio's API reference,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()
的使用已弃用并会引发警告。 This issue has been known since 2019-05-24.
这让我相信 pyfolio
对您的环境非常敏感。您是否使用文档中的 virtual environment instructions 安装它?