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

yfinance设置小于1天的interval参数下载数据返回空DataFrame问题咨询

yfinance拉取小于日级数据返回空DataFrame的原因及解决方案

核心原因分析

  • 时间间隔与查询参数的适配限制:雅虎财经接口对不同时间粒度的可查询范围有明确约束,1小时级数据最多支持查询最近730天内的数据,且部分非美股标的对period参数的适配存在异常,优先使用明确的start、end参数指定时间范围可降低适配问题概率。
  • 标的本身无日内数据供给:你使用的SPX.L是标普500指数在伦敦市场的挂牌品种,雅虎财经仅对主流场内交易品种提供完整的日内粒度数据,部分指数类、跨市场挂牌品种本身就不对外公开小于日级的交易数据,属于数据源本身的限制,与代码逻辑无关。
  • 版本兼容性问题:旧版本yfinance存在非美股日内数据拉取的已知bug,可先升级到最新版本验证,升级命令为pip install --upgrade yfinance。
  • 网络访问限制:如果所在网络无法正常访问雅虎财经的全部数据节点,也可能出现日度数据可正常拉取、但日内数据节点访问失败返回空的情况。

修正验证方案

测试代码

import yfinance as yf
import datetime

# 第一步:用主流美股标的验证接口可用性
test_ticker = "AAPL"
df_test = yf.download(tickers=test_ticker, period="5d", interval="1h", auto_adjust=True, prepost=False)
print("AAPL小时级数据测试结果:")
print(df_test.head())

# 第二步:指定明确时间范围拉取目标标的数据
end = datetime.datetime.now()
start = end - datetime.timedelta(days=5)
target_ticker = "SPX.L"
df_target = yf.download(tickers=target_ticker, start=start, end=end, interval="1h", auto_adjust=True, prepost=False)
print("SPX.L小时级数据测试结果:")
print(df_target.head())

# 可选测试:用标普500原生代码测试
spx_ticker = "^GSPC"
df_spx = yf.download(tickers=spx_ticker, period="5d", interval="1h", auto_adjust=True, prepost=False)
print("标普500原生代码^GSPC小时级数据测试结果:")
print(df_spx.head())

结果判断逻辑

  • 若AAPL测试返回正常数据,说明工具和网络无问题,目标标的SPX.L本身无公开小时级数据,可更换为标普500原生代码^GSPC拉取日内数据。
  • 若AAPL测试也返回空数据,优先升级yfinance版本后重试,仍异常则检查网络访问雅虎财经接口的可用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:06:01