Python中Backtesting库bt.get()方法突然失效求助
问题描述
之前一直正常运行的代码今早突然报错,代码如下:
%matplotlib inline import bt data = bt.get("TLT", start="2022-06-01", end="2022-06-30")
报错信息为:
RemoteDataError: Unable to read URL: https://query1.finance.yahoo.com/v7/finance/download/TLT
HTTP Error 401: Unauthorized
已执行conda update --all命令,但问题仍未解决。
解决方案
- 核心原因:bt库默认依赖的雅虎财经公开接口已调整权限策略,导致无法直接获取数据。以下是可行解决办法:
- 办法1:通过yfinance中转获取数据
- 安装yfinance库:
pip install yfinance # 或用conda安装 conda install -c conda-forge yfinance - 修改代码,用yfinance获取数据后传入bt:
%matplotlib inline import bt import yfinance as yf # 获取TLT数据 data = yf.download("TLT", start="2022-06-01", end="2022-06-30") # 调整为bt所需的格式 data = data[['Adj Close']].rename(columns={'Adj Close': 'TLT'})
- 安装yfinance库:
- 办法2:安装修复数据源的bt版本
第三方维护的bt分支已适配新接口,可尝试安装:pip install git+https://github.com/pmorissette/bt.git - 办法3:切换至其他数据源
比如使用Alpha Vantage,需先获取API密钥,再通过对应库获取数据后传入bt。
内容的提问来源于stack exchange,提问作者FFFAR
相关产品推荐
相关产品推荐

