用途:yfinance 是 Yahoo Finance 的开源 Python 封装,用于获取全球市场数据,覆盖美股、港股、加拿大股票、ETF、指数与外汇,免费且无需注册或 API key。
主要能力:提供历史与实时 OHLCV 行情,支持分钟级(1m、2m、5m、15m、30m、60m、90m)、小时级(1h)及日线以上(1d、5d、1wk、1mo、3mo)周期;还可读取公司信息、财务报表、分红拆股、机构持股、内部交易、指数 ETF 与汇率。项目内置 yfinance DataLoader(backtest/loaders/yfinance_loader.py),回测时设置 source: "yfinance" 或 "auto" 自动调用;source: "auto" 按代码格式路由,A 股走中国回退链、港股走港股链、加拿大 .TO/.V 走 Yahoo/yfinance、加密货币走 OKX。
使用方式:OHLCV 优先用 get_market_data 工具,传入 codes、start_date、end_date、source、interval 等参数;脚本场景用 DataLoader,例如 from backtest.loaders.registry import get_loader_cls_with_fallback,再 loader.fetch([...], 起始, 结束, interval="1D")。代码格式自动转换:美股去掉 .US,港股保留 .HK 并补足 4 位(700→0700),加拿大保留 .TO 或 .V。公司信息、财报、期权、持股等非 OHLCV 数据用 yf.Ticker(...) 直接调用。项目另附 Yahoo 公共 API 客户端与只读工具,直接访问 Yahoo 未认证 JSON 端点,共享限流并自动处理 cookie+crumb。
限制:高频请求可能触发 Yahoo 临时封禁,建议批量下载;分钟数据受 Yahoo 限制(1m 最多 7 天,2m 至 90m 最多 60 天,1h 最多 730 天,1d 及以上不限);港股需 4 位数字加 .HK;默认 auto_adjust=True 返回前复权价,项目 loader 使用 auto_adjust=False;返回数据含时区,DataLoader 会自动去除;回测 loader 仅返回 OHLCV,PE/PB 等基本面需另行调用 yf.Ticker().info。相比 Tushare,yfinance 覆盖全球市场但 A 股深度较浅。