如何修复 pyfolio的报错
AttributeError: ‘numpy.int64’ object has no attribute ‘to_pydatetime’ 的报错?
最近使用Python跑回测,环境是Python+backtrader+pandas+pyfolio
Python 3.11.2
Name: pandas
Version: 2.0.0
Name: pyfolio
Version: 0.9.2
Name: backtrader
Version: 1.9.76.123
是如何引发报错的?
在执行以下语句的时候报错,位置是timeseries.py:1008
import pyfolio as pf
pf.create_full_tear_sheet(returns)
File ~\PycharmProjects\pythonProject\venv\Lib\site-packages\pyfolio\timeseries.py:1008, in gen_drawdown_table(returns, top)
1003 df_drawdowns.loc[i, 'Duration'] = len(pd.date_range(peak,
1004 recovery,
1005 freq='B'))
1006 df_drawdowns.loc[i, 'Peak date'] = (peak.to_pydatetime()
1007 .strftime('%Y-%m-%d'))
-> 1008 df_drawdowns.loc[i, 'Valley date'] = (valley.to_pydatetime()
1009 .strftime('%Y-%m-%d'))
1010 if isinstance(recovery, float):
1011 df_drawdowns.loc[i, 'Recovery date'] = recovery
AttributeError: 'numpy.int64' object has no attribute 'to_pydatetime'
报了什么错?
报错是因为valley是一个numpy.int64的类型,没有to_pydatetime的属性,但是peak是有该属性的,
因此追踪该属性出现的方法:pyfolio.timeseries.get_max_drawdown_underwater
借助new bing 翻译该方法含义
def get_max_drawdown_underwater(underwater