yfinance 使用指南:3 步获取 Yahoo Finance 股票行情数据

yfinance 使用指南:3 步获取 Yahoo Finance 股票行情数据

【免费下载链接】yfinance Download market data from Yahoo! Finance's API 【免费下载链接】yfinance 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

yfinance 是一个从 Yahoo! Finance 公开接口获取市场数据的开源 Python 库,当前版本 1.6.0(见 yfinance/version.py)。一行代码即可拿到股票的历史行情、财务报表和期权链,还支持批量下载、条件选股和实时行情推送,适合做股票数据分析、量化回测的 Python 新手和普通用户。

功能速览:yfinance 能帮你做什么

功能解决什么问题什么时候用
Ticker / Tickers获取单只或批量股票的行情、财报、期权数据对个股做深度分析
download批量下载多只股票的历史行情回测、数据入库
screen + EquityQuery按条件筛选股票从全市场找候选标的
WebSocket / AsyncWebSocket实时行情数据流盘中监控
repair=True 参数自动修复非美市场的数据错误拉取港股、欧洲股票等

这些组件都列在 README.md 的 "Main components" 一节,上表是其中最常用的五项。

快速上手:3 行代码拿到股票历史数据

安装只需一条命令(支持 Python 3.6+,见 pyproject.toml 的版本声明):

pip install yfinance

然后获取单只股票近一个月的历史行情:

import yfinance as yf

t = yf.Ticker("MSFT")
hist = t.history(period="1mo")

返回的 hist 是 pandas DataFrame,包含开盘/最高/最低/收盘价、成交量和复权收盘价。这组调用与官方快速上手示例一致(见 doc/source/index.rst)。

如果你需要跑测试或改源码,可以克隆仓库:

git clone https://gitcode.com/GitHub_Trending/yf/yfinance

功能深潜:从行情到选股

单只与多只股票的历史行情

  • 单只股票:yf.Ticker("MSFT") 创建对象后,history(period=...) 取行情,.info 取基本信息,.quarterly_income_stmt 取季度利润表,.option_chain(...) 取期权链。
  • 多只股票:yf.download(["MSFT", "AAPL", "GOOG"], period="1mo") 一次拉取多只,返回以「代码 + 字段」为多级列名的表格。

两者的分工:Ticker 适合「深挖一只股票」,download 适合「批量拉行情」,可以配合使用。

修复非美市场数据:repair=True

作者在文档中直接点出:美国市场的数据基本没问题,但其他市场存在多种错误——漏掉分红调整、漏掉拆股调整、整行缺失、价格差 100 倍(美元/美分混淆)等。给 download() 或 history() 传入 repair=True 后会自动尝试修复,返回的表格会多一列 Repaired? 标记被修复的行。

错误类型的完整清单和修复前后对照在 doc/source/advanced/price_repair.rst,例如 AET.L 的 100 倍价格错误(图来自同一文档):

yfinance 价格修复示例:AET.L 出现 100 倍价格错误时的修复前后对比

用法一行:

df = yf.download("1398.HK", period="6mo", repair=True)

用 search 和 screen 找股票

  • yf.Search:按关键词搜索股票与新闻。
  • EquityQuery:链式组合条件构造选股查询,yf.screen 执行查询;库还内置了现成的查询模板 PREDEFINED_SCREENER_QUERIES。

这些接口在 yfinance/init.py 中统一导出,选股模块源码在 yfinance/screener/。

选型建议:按场景选接口

你的场景建议做法依据
单只股票快速看历史行情Ticker.history(period=...)官方快速上手示例
多只股票批量拉行情yf.download([...])官方快速上手示例
分析个股财报、期权Ticker 对象属性官方快速上手示例
盘中实时推送WebSocket / AsyncWebSocketREADME Main components
拉港股、欧洲股票等非美数据加 repair=Trueprice_repair.rst

⚠️ 避坑清单:4 条注意事项

  1. 仅限个人使用。 README.md 明确说明 Yahoo! Finance API 供个人用途,yfinance 面向研究与教育,且与 Yahoo 无官方关联。数据若用于商业用途,请先查 Yahoo 的使用条款。
  2. 盘中数据有跨度限制。 修复时用小时级数据重建日线,而 1h 数据无法取 2 年以上的区间(price_repair.rst 有明确说明),拉长区间盘中数据时留意这一点。
  3. 实际币种以 history_metadata 为准。 Yahoo 偶发美元/美分等单位混淆,修复后建议用 Ticker.history_metadata['currency'] 确认币种,而不是 Ticker.info(同上文档)。
  4. 网络不稳定时加自动重试。 设置 yf.config.network.retries = 2 会以指数退避(1s、2s、4s...)自动重试,配置说明见 doc/source/advanced/config.rst。

下一步

更多进阶能力(代理、缓存、多级列名、本地化)见 doc/source/advanced/index.rst,完整 API 参考在 doc/source/reference/index.rst。

想读源码弄清实现,可以从 yfinance/multi.py(download 的实现)和 yfinance/scrapers/history.py(行情抓取逻辑)入手。

【免费下载链接】yfinance Download market data from Yahoo! Finance's API 【免费下载链接】yfinance 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值