Quantstats报错TypeError:带时区datetime64与naive datetime无法比较
问题:Quantstats生成HTML报告时的时区类型错误
我在Anaconda中尝试用Quantstats的quantstats.reports模块为投资组合生成指标报告,刚接触Python和Quantstats,写了以下代码调用报告模块生成HTML报告并保存到Output文件夹:
import quantstats as qs qs.extend_pandas() stock = qs.utils.download_returns('GLD') qs.reports.html(stock, output='Output/GLD.html')
运行后出现如下错误:
TypeError: Invalid comparison between dtype=datetime64[ns, America/New_York] and datetime
我推测是datetime64带时区(America/New_York)和无时区的datetime类型比较导致的,但没法深入排查Quantstats代码,需要解决建议。
解决建议
移除时间序列的时区信息
下载完收益数据后,将索引的时区去掉,转为无时区的datetime64类型,修改后的代码如下:import quantstats as qs qs.extend_pandas() stock = qs.utils.download_returns('GLD') # 移除索引的时区信息 stock.index = stock.index.tz_localize(None) qs.reports.html(stock, output='Output/GLD.html')升级Quantstats到最新版本
这个时区问题可能是旧版本的已知bug,打开Anaconda Prompt执行以下命令升级:pip install --upgrade quantstats升级后再运行原代码验证是否解决问题。
手动指定下载数据的时区
下载数据时指定UTC时区,避免本地化冲突,修改下载代码:stock = qs.utils.download_returns('GLD', timezone='UTC')
内容的提问来源于stack exchange,提问作者Amagon11
相关产品推荐
相关产品推荐

