You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Backtrader官方示例报Yahoo Finance数据源FileNotFoundError如何解决

报错原因

Backtrader 官方内置的 YahooFinanceData 数据源依赖的雅虎财经公开API早已下线,旧版数据源发起网络请求失败后会默认回退到本地读取对应股票代码的CSV文件,因此会抛出找不到AAPL文件的错误,和本地文件配置无关。

修复方案(无需修改Backtrader源码)

优先使用当前稳定维护的雅虎数据工具yfinance拉取数据,再转成Backtrader可识别的Pandas格式数据源即可,步骤如下:

  • 第一步:安装依赖库
pip install yfinance
  • 第二步:替换原有数据源加载逻辑,完整可运行代码如下:
from datetime import datetime
import backtrader as bt
import yfinance as yf

class SmaCross(bt.SignalStrategy):
    def __init__(self):
        sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)
        crossover = bt.ind.CrossOver(sma1, sma2)
        self.signal_add(bt.SIGNAL_LONG, crossover)

cerebro = bt.Cerebro()
cerebro.addstrategy(SmaCross)

# 替换原有YahooFinanceData加载逻辑
df = yf.download('AAPL', start='2011-01-01', end='2012-12-31')
data0 = bt.feeds.PandasData(dataname=df)
cerebro.adddata(data0)

cerebro.run()
cerebro.plot()
额外说明
  • 如果需要使用复权后价格回测,拉取数据时可以添加auto_adjust=True参数:df = yf.download('AAPL', start='2011-01-01', end='2012-12-31', auto_adjust=True),即可自动处理除权除息的价格偏差。
  • 如果网络环境无法正常访问雅虎服务,拉取数据时可指定代理参数:df = yf.download('AAPL', start='2011-01-01', end='2012-12-31', proxy='http://你的代理地址:端口')。

内容的提问来源于stack exchange,提问作者Andrei Larion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 15:54:03