yfinance 使用指南:5 分钟用 Python 拉取 Yahoo Finance 股票历史与实时行情
2026/9/5 22:28:11 网站建设 项目流程

yfinance 使用指南:5 分钟用 Python 拉取 Yahoo Finance 股票历史与实时行情

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

手动抓 Yahoo 网页又慢又容易坏?本文用 yfinance 这个 Python 金融数据库,5 分钟拉通股票、期货、期权、货币的历史与实时行情,讲清批量下载玩法和数据修复的坑。

还在手动翻网页?Python 拉行情的三个典型痛点

谁写回测没被这事卡过:想要一份从上市第一天到今天的完整行情,却发现手边没有现成工具能"一把梭"。

  • 走官方渠道,要么申请账号,要么为高频数据付费,文档读起来像迷宫;
  • 自己写爬虫抓页面,HTML 结构一改就断,股票拆分、除权除息还经常把价格搅成一团;
  • 多个标的各下各的,列结构对不齐,拼成一张表又是一下午。

如果你只需要免费、快速、Pythonic 的行情数据,上面的麻烦一次就能解决掉。

📦 yfinance 一句话定位:免申请直连 Yahoo Finance 全品类数据

yfinance 是由 Rana Roussi 持续维护的 Python 金融数据下载库,把 Yahoo Finance 的公开接口封装成了带 Python 味的 API,股票、期货、期权、货币等市场数据都能查,历史行情和实时报价都覆盖。pip install yfinance一行装完,Python 3.6 以上就能跑,不用注册任何账号。

主入口不复杂:Ticker负责单只标的,download负责批量行情,旁边还挂着SearchMarketScreenerSector这些配套件。官方的示例代码放在 doc/source/reference/examples/,照着敲最快。

⏱️ 5 分钟拉取 Apple 全量行情:从分钟 K 线到上市以来全历史

核心入口是yf.download()函数。把代码传进去就得到一张 DataFrame;再补上period="max",时间轴直接拉到这只股票上市第一天:

import yfinance as yf rows = yf.download("AAPL", period="max") print(rows.tail()) # 看一眼最近几个交易日

盘中粒度也一样简单:把interval设成'1m',拿到的就是分钟级 K 线,适合做日内策略或盯盘。

返回的表里同时给了原始价格和除权除息后的Adj Close两列,回测前不用自己再调一次复权;因为它就是标准 DataFrame,按日期切片(比如只取某一年)同样顺手。想深挖单只标的时,Ticker对象还能把历史、期权链、财务报表一次端上来,历史数据的具体抓取逻辑在 yfinance/scrapers/history.py。

🧺 多标的批量下载怎么玩:一篮子股票一次拿齐

批量下载就是把列表直接塞给download,AAPL、GOOGL、MSFT 三只一次跑完,返回单个多级列的 DataFrame,面板分析不用再手工拼接:

import yfinance as yf frame = yf.download(["AAPL", "GOOGL", "MSFT"], period="5d") print(frame.columns[:6])

这部分逻辑集中在 yfinance/multi.py,多级列的展开规则在文档的 advanced 章节有单独一页,列名看不懂时回去翻一下就行。

回测前必看:缺行、除权错乱,数据还能自动修复

做学术研究和量化回测的人最清楚:数据缺失不可怕,可怕的是"看着有、实际错"。源头接口偶尔会漏掉某一天的行,或者遇到 1:10 的拆股后忘了把价格除过去,直接产出"某天暴涨 10 倍"的假信号。yfinance 内置的价格修复机制专门对付这类脏数据,能自动检测并把异常修回来。

这套修复不是纸上谈兵。仓库 tests/data 目录里自带 80 多个真实标的的修复样例 CSV(覆盖坏分红、坏拆分、100 倍错误三类问题),每个样例都有"修复前/修复后"两版可对拍;修复原理和触发条件写在 doc/source/advanced/price_repair.rst,想搞清楚它怎么判断异常,照文档逐条看即可。

优势与局限点评:哪里省心,哪里要自己兜底

省心的地方,拿事实说话:

  • 零配置:一行 pip 装完就能下数据,period"1d""max"自由拨,分钟到几十年的跨度都够;
  • 覆盖广:不只行情,MarketSectorIndustryScreener都打包在同一套接口里;
  • 维护勤快:文档里画了完整的分支协作流程(main/dev/feature/bugfixes),社区在持续提 bug 修复,教学和个人决策场景也因此放心用。

局限也要摊开说:数据来自 Yahoo 的公开接口,其使用条款写明仅限个人用途,官方定位是研究与教育,商用前务必核对 Yahoo 的政策;yfinance 与 Yahoo 无官方关联,接口一旦变动,个别数据可能滞后,依赖固定列结构时建议锁版本。

下一步建议:先跑pip install yfinance,执行文中第一段代码确认 Close 与 Adj Close 两列都在;再执行git clone https://gitcode.com/GitHub_Trending/yf/yfinance,打开 doc/source/reference/examples/ 里的 download.py 和 ticker.py 依次跑通;最后挑一只近期拆过股、你真正关心的标的,用yf.download验证拆股前价格是否被修正。这三步走完,就能把它正式塞进你的回测流程,替掉手动抓数据那一步。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询