【问题标题】:Why is Quantopian's pf.create_full_tear_sheet() function giving me a DateTimeArray error?为什么 Quantopian 的 pf.create_full_tear_sheet() 函数给我一个 DateTimeArray 错误?
【发布时间】:2020-03-30 16:44:16
【问题描述】:

我正在尝试在我自己的一组返回数据 df_returns(熊猫数据框)上运行 Pyfolio 的 pf.create_full_tear_sheet(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) 中指定基准数据,这也是导致错误的原因吗?

【问题讨论】:

    标签: python pandas quantopian


    【解决方案1】:

    我无法真正重现您的错误。这可能与您传递完整数据帧的事实有关:根据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
    • 3.2.x 以来,matplotlib 抛出了很多已弃用的警告,所以我将其降级为 3.1.x
    • 不推荐使用.argmin() 并引发警告。 This issue has been known since 2019-05-24.

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

    【讨论】:

    • 您好 jorijnsmit.. 根据您的建议,我设法获得了每日回报值风险统计数据。但它停在那里并且不产生任何图表。我收到此错误'numpy.int64' object has no attribute 'to_pydatetime' 类似于此线程中的最后一篇文章:quantopian.com/posts/trouble-with-basic-pyfolio-tearsheet
    • create_full_tear_sheet() 需要传入完整的 pandas 数据帧格式..
    • 然后只设置一个合适的索引并传递整个df_returns
    • ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    • 扩展了我的答案。这是一个工作示例:colab.research.google.com/drive/…
    猜你喜欢
    • 2019-12-09
    • 2021-03-19
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多