我试图在我自己的返回数据集pf.create_full_tear_sheet(df_returns)
(pandas数据框)上运行Pyfolio的df_returns
函数,如下所示:
但是我遇到了错误:
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)
中指定基准数据也会导致错误吗?
答案 0 :(得分:2)
我真的无法重现您的错误。可能与您传递完整的数据帧有关:根据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安装了它?