使用yfinance获取雅虎财经股票数据出现日期跳变异常是什么原因
yfinance拉取美股股票数据出现日期跳变缺失的原因
核心原因分析
- 基础休市规则导致的缺数:2021年9月4日、5日为周末,美股常规休市;9月6日为美国劳工节,属于美股法定休假日,这3日本身无交易数据,属于正常情况。
- 旧版本yfinance接口适配错误:雅虎财经在2021年中调整了数据接口的鉴权逻辑和返回字段格式,v0.1.62及更早版本的yfinance调用接口时会出现中段数据拉取失败、字段解析错误的问题,你遇到的9月7日-9月21日的完整交易数据缺失,就是这个原因导致的。你输出中8-9月AAPL成交量异常偏高(正常AAPL单日成交量约1亿股左右,你的输出显示为几十亿股),也是旧版本字段解析错误的典型表现。
- 雅虎财经数据源临时异常:部分时间段雅虎财经的历史数据缓存会出现偶发缺失,也会导致拉取返回的数据出现断档。
修复方案
- 升级yfinance到最新稳定版:
pip install --upgrade yfinance
- 拉取数据时添加参数适配接口规则,示例代码如下:
import datetime as dt import yfinance as yf start = dt.datetime(2020, 1, 1) end = dt.datetime.now() # 新增auto_adjust和threads参数适配新接口 data = yf.download('AAPL', start=start, end=end, progress=False, auto_adjust=True, threads=True) print(data.tail(15))
- 如果仍存在数据缺漏,可使用其他金融数据接口(如akshare、tushare)做交叉验证。
内容的提问来源于stack exchange,提问作者Marc Abels
相关产品推荐
相关产品推荐

