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

Yahoo Finance Python API无法返回标的期权列表问题求助

解决yfinance中stock.options返回空值的问题

问题现象

  • 近期使用yfinance的stock.options获取期权到期日列表时返回空值,2023年底前功能正常,约一月前出现此问题
  • 测试QQQ、MSFT等热门标的均存在相同问题
  • 已尝试升级yfinance至最新版本(含0.2.37及后续更新版),问题未解决

示例代码:

import yfinance as yf

stock = yf.Ticker('MSFT') 
options = stock.options 
print("options: ", options) # 输出为空

原因分析及解决方案

1. Yahoo Finance页面结构变更

yfinance依赖抓取Yahoo Finance的页面数据,若Yahoo调整了期权数据的页面结构或接口逻辑,会导致解析失败。

临时 workaround:手动指定到期日获取期权链
若已知标的的期权到期日,可直接传入到期日字符串绕过stock.options的自动获取步骤:

import yfinance as yf

stock = yf.Ticker('MSFT')
# 替换为实际到期日,格式示例:"2024-06-21"
opt_chain = stock.option_chain(date="2024-06-21")
print("看涨期权数据:", opt_chain.calls)
print("看跌期权数据:", opt_chain.puts)

2. 强制刷新数据缓存

yfinance会缓存部分数据,过期缓存可能导致获取失败,可强制刷新数据:

import yfinance as yf

stock = yf.Ticker('MSFT')
stock.refresh()  # 强制刷新所有数据
options = stock.options
print("options: ", options)

3. 模拟浏览器请求头

Yahoo可能拦截非浏览器标识的请求,可自定义请求头模拟浏览器访问:

import yfinance as yf

# 设置浏览器请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}

stock = yf.Ticker('MSFT')
stock._history_options['headers'] = headers
options = stock.options
print("options: ", options)

4. 等待官方修复

该问题大概率是Yahoo端的结构变更导致,yfinance开发者通常会跟进修复,可关注项目版本更新和issue动态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:52:35