尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

yfinance完整指南:零配置5分钟搞定免费金融数据获取

yfinance完整指南:零配置5分钟搞定免费金融数据获取 yfinance完整指南零配置5分钟搞定免费金融数据获取【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinanceyfinance 是一个用 Python 下载雅虎财经市场数据的开源库免注册、免 API Key几行代码就能拿到股票历史行情、财务报表和实时报价。还在为付费数据 API 和繁琐的注册流程头疼这份 yfinance 完整指南会带你从安装一路走到批量下载与数据修复把免费金融数据获取这件事彻底跑通。算清这笔账手动抓数据到底有多累想象一下这个周五的晚上为了复现一个回测结果你打开浏览器按下 F12从财经网站的接口里翻出密密麻麻的 JSON用正则一行行地抠开盘价、收盘价旁边的 Excel 里贴满了从三个网站拼来的表格时区对不上、日期对不齐、复权方式还不一样。等到周一行情更新你又得把这一套流程从头再来一遍。这还只是一只股票。一旦要做多只股票对比你的整个周末基本就交代在这儿了。其实你根本不用这么拼。有一个完全免费、无需注册、不用申请任何 API Key 的 Python 库能把上面这些活儿压缩成几行代码——它就是 yfinance一个基于雅虎财经公开接口的开源项目也是 Python 生态里下载金融数据最主流的工具之一。装好 yfinance跑通第一次调用安装这一步简单到不像话一条 pip 命令就完成pip install yfinance接着在 Python 里导入随手挑一家公司试试水import yfinance as yf # 创建一只股票的句柄之后所有数据都从它身上取 aapl yf.Ticker(AAPL) print(aapl.info[longName]) # 公司全名 print(aapl.info[currentPrice]) # 当前价格.info里装着公司概况、市值、市盈率、股息率等几十个字段像字典一样随手可取。到这里获取一家公司基本信息这件事你已经跑通了前后不到一分钟。把股票历史数据接进你的分析接下来是重头戏用 yfinance 获取股票历史数据。调用.history()就能拿回一张 Pandas 表Open、High、Low、Close、Volume 一应俱全# 取苹果近5年的日线数据返回 Pandas DataFrame history aapl.history(period5y) print(history.head())period控制时间范围1mo、1y、5y、max都可以interval控制粒度1m、1h、1d、1wk支持从 1 分钟到 3 个月的全套周期。想精确指定日期就用start和end# 取2023年全年数据注意end是不含当天的排他边界 df yf.download(AAPL, start2023-01-01, end2024-01-01)数据默认已做复权处理auto_adjustTrue拆股、派息后的历史价格会自动校准直接拿来计算收益率不会出现跳空失真。把这张表接进你的回测或可视化脚本历史数据这条线就算打通了。一次下载一堆股票告别逐个请求手动抓数据的痛往往不是一只股票难抓而是一百只股票要抓一百遍。yfinance 的download()就是为批量而生的一次调用拿下整组行情内部还做了并发优化# 一次下载4只股票近一年的日线结果按ticker分组组织 portfolio [AAPL, MSFT, GOOGL, AMZN] data yf.download(portfolio, period1y, group_byticker)想逐只股票遍历这样写for tk in portfolio: close data[tk][Close] # 各只股票的收盘价序列 print(tk, round(close.mean(), 2))多只股票一起比较、算组合收益率、画相关性热力图都变得水到渠成。之前要忙活一个周末的活儿现在改一行列表就搞定。批量场景背后还有Tickers对象可以统一管理多只股票的.info与.history实现逻辑都在yfinance/tickers.py里想深挖的读者可以去翻一翻。开启数据修复把脏数据挡在门外到了这一步你以为故事就结束了恰恰相反最值得说的功能才刚刚上场。雅虎的公开数据并非总是干净的股价偶尔出现 100 倍的货币单位错乱比如英镑和便士混用、除息日后复权价迟迟不更新、某几天数据整行丢失。这种脏数据一旦被直接喂进回测结论可能彻底跑偏。yfinance 内置了数据修复机制调用时多加一个repairTrue参数即可# 开启修复自动检测并修正100x价格错误、缺失行、错误复权等 data yf.download(AAPL, period1y, repairTrue)修复后返回的表格会多出一列Repaired?明确标记哪些行被动过手脚让你对数据质量心里有数。从拿到的数据不敢直接用到拿到的数据基本可信这就是 yfinance 数据修复带来的体验差别完整的修复规则说明写在文档doc/source/advanced/price_repair.rst里。拿下基本面、期权与实时报价数据修复已是惊喜但 yfinance 的边界远不止历史行情四个字。先说基本面。做价值投资最关心的三张表它一口气全给你# 财务报表三件套利润表、资产负债表、现金流 income aapl.financials balance aapl.balance_sheet cashflow aapl.cashflow再比如期权.options列出所有到期日option_chain()一次拉回一整个链条的 Call 和 Put# 取第一个到期日的期权链calls/puts 都是 DataFrame chain aapl.option_chain(aapl.options[0]) print(chain.calls.head())实时行情它也没落下。通过内置的 WebSocket 通道可以订阅一只或多只品种的价格推送回调里直接处理每一条 tickwith yf.WebSocket() as ws: ws.subscribe([AAPL, BTC-USD]) # 同时订阅股票和加密货币 ws.listen(lambda msg: print(msg)) # 每来一条行情就打印一次基金持仓.funds_data、市场概览Market、关键词搜索Search、行业与板块数据甚至一个简单的选股筛选器Screener……这个库的组件清单比想象中长得多全部摊开在yfinance包根目录下的各个模块里够你研究一阵子了。记住三个最容易翻车的使用细节工具再好也有几个细节需要提前知道否则容易对着数据发呆。第一个是时间边界。download()的end参数是排他的end2024-01-01取到的其实是 2023 年 12 月 31 日。算区间时把结束日往后多写一天不然每年都少一天数据。第二个是分钟级数据的回溯限制。interval选1m、5m这类日内粒度时最多只能往回取约 60 天想拿几年的 1 分钟线做日内回测这条路走不通只能降到日线粒度另想办法。第三个是免费的尺度。数据来自雅虎财经公开接口历史数据通常 T1 更新实时行情约有 15 分钟延迟这是公开数据源的合理预期。另外别把请求频率拉得太狠遇到网络抖动时给yf.config.network.retries设个重试次数让库自己按指数退避重连比手写time.sleep循环优雅得多。看懂项目背后的可靠性设计把数据管道架在一个免费项目上很多人心里会打鼓万一作者弃坑怎么办yfinance 的专业之处在于它把版本管理当产品来做。项目采用主干加开发分支并行main分支只放稳定版本新功能在dev和各个feature分支上打磨紧急问题走独立修复流程验证通过再合回主干。这意味着你日常pip install yfinance拿到的永远是经过验证的稳定版本而不是随时可能变形的开发态代码。配合活跃的社区和tests/下大量真实行情修复用例这个免费库的可靠性底线比很多收费产品还要扎实。收好这份速查清单现在就去跑最后把整篇文章浓缩成一张随时可查的清单安装pip install yfinance一条命令零配置单只数据yf.Ticker(代码)建句柄.info看概况.history(period..., interval...)拿行情批量数据yf.download([...], period1y, group_byticker)多只一次搞定数据质量历史数据加repairTrue自动修复 100x 价格、缺失行和错误复权基本面与期权.financials/.balance_sheet/.cashflow看三表option_chain()拿期权链实时行情yf.WebSocket().subscribe([...])订阅价格推送细节提醒end日期排他、分钟数据限回溯 60 天、历史 T1 更新现在你的下一步只有一行命令。打开终端敲下pip install yfinance试着拉取你持仓或关注的股票跑一段 5 年历史行情再看看开启repairTrue前后表格里多了哪一列。免费、零配置、几行代码你的金融数据分析之旅从今晚就能正式开始。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表