yfinance快速上手指南:3行Python获取股价与财报数据
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
yfinance 是一个 Python 开源库,通过 Yahoo Finance 的公开接口获取市场行情与财务数据。一行Ticker("MSFT")就能拿到公司基本信息、股价历史、财报、期权链,还可以批量下载多只股票、按行业筛选股票。适合做量化回测、投资研究或数据分析的 Python 新手,也适合需要把行情数据接入自己脚本的开发者。
它解决什么问题
自己抓 Yahoo Finance 网页或接口,要处理反爬、字段解析、跨时区时间戳、复权价格这些琐事,而且不同市场的数据质量问题各不相同。yfinance 把这些封装成了 Python 对象:返回的是可以直接交给 pandas 处理的 DataFrame,历史价格自动做复权,还支持自动修复上游数据错误。
对新手来说,最直观的价值是:不写任何 HTTP 请求代码,几行脚本就能把数据落盘。
核心功能速览
| 入口 | 用途 | 典型场景 |
|---|---|---|
Ticker | 单只标的的全部数据 | 看个股信息、财报、期权链 |
Tickers | 多只标的批量封装 | 同时处理一篮子股票 |
download | 批量下载行情表 | 回测前准备数据 |
Search | 搜索报价和新闻 | 找代码、看资讯 |
Sector/Industry | 行业与板块信息 | 按行业挑股票 |
Screener | 条件选股 | 按市盈率等条件筛选 |
WebSocket | 实时行情流 | 盯盘、监控告警 |
以上入口均在 yfinance/init.py 中导出,import yfinance as yf后直接可用。
三步跑通最小可用流程
📊 安装、创建对象、取数据,总共三步。建议先建一个虚拟环境,避免依赖冲突。
pip install yfinance然后在 Python 里获取单只股票的数据:
import yfinance as yf t = yf.Ticker("MSFT") t.info # 公司基本信息 t.history(period="1mo") # 近一个月日线,返回 pandas DataFrame t.quarterly_income_stmt # 季度利润表再批量下载多只股票:
data = yf.download(["MSFT", "AAPL", "GOOG"], period="1mo")download支持空格分隔的字符串写法,如yf.download("SPY AAPL", period="1mo"),参考示例 reference/examples/download.py。返回的 DataFrame 可直接.to_csv()落盘,供后续分析使用。
进阶用法:搜索、行业与实时数据
关键词搜索比直接猜代码更稳。搜代码、看新闻各取一个属性即可:
quotes = yf.Search("AAPL", max_results=10).quotes news = yf.Search("Google", news_count=10).news按行业筛选适合做横向比较:
tech = yf.Sector("technology") tech.top_companies # 该行业头部公司实时数据用WebSocket和AsyncWebSocket(同步/异步两套),适合写监控脚本而不是循环拉取。
网络不稳或需要代理时,用全局配置控制重试和代理:
yf.config.network.retries = 2 # 指数退避重试:1s、2s、4s... yf.config.network.proxy = "PROXY"完整配置项见 advanced/config.rst。
技术亮点:自动修复价格数据
Yahoo 返回的数据并不总是干净的。非美股尤其常见几类问题:分红后Adj Close没复权、拆股后价格没调整、缺失整行或成交量、个别市场价格被放大 100 倍。
yfinance 在history()和download()中提供了repair=True参数,开启后会尝试自动修复这些问题,并在结果表里新增一列Repaired?标记哪些行被修过。修复范围包括:
- 缺失分红复权:有分红记录但
Adj Close等于Close时,手动补上分红调整 - 缺失拆股复权:检测到拆股事件但前一日价格未调整时,应用拆股比例
- 数据缺失:日线数据损坏时,用 1 小时等更细粒度的数据重建
- 货币错乱:修复后以
Ticker.history_metadata['currency']为准,而不是Ticker.info
yfinance价格修复:自动修正100倍放大错误
做跨市场、长周期回测时,这个功能能省掉大量人工核对价格的功夫。细节见 advanced/price_repair.rst。
使用边界:数据合规要注意
两点需要说在前面,README 里反复强调过:
- yfinance 与 Yahoo 公司无关,没有官方背书,只是使用其公开接口的开源工具,定位是研究与教育用途。
- 数据用途受 Yahoo 服务条款约束,接口声明仅供个人使用。商业分发数据前,建议自行确认权利边界。
隐私方面无需担心:库本身不采集本地任何信息,请求走的是公开行情接口;如果你用代理,数据流向由你配置的yf.config.network.proxy决定。
参与社区与后续学习
项目靠社区排查 bug 和贡献代码,流程写在 CONTRIBUTING.md。分支模型如下图,参与前可以先对照理解:
入门后建议按这个顺序深入:先看 reference 目录 的 API 文档和示例脚本(reference/examples/ 下按功能分文件),再按需阅读 advanced 章节 里的缓存、日志、多层级列等主题。遇到问题时,用enable_debug_mode()打开调试输出,配合yf.config.debug.hide_exceptions = False查看原始异常,定位效率会高很多。
👉 下一步:装好库,选一只你熟悉的股票,把history(period="1y")的结果存成 CSV,再从Ticker属性里挑一个你还没用过的字段读出来。数据到手后,yfinance 能做什么,就取决于你的问题了。
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考