十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

yfinance完整指南:5分钟搞定免费股票数据获取的终极方案

yfinance完整指南:5分钟搞定免费股票数据获取的终极方案 yfinance完整指南5分钟搞定免费股票数据获取的终极方案【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance你是不是经常为了拿一份股票历史数据要么忍痛买几千块的商业数据API要么在各个网站之间来回切换手动复制表格想分析一下自己持仓的收益曲线光是把数据从网页搬到Excel就要花掉半个下午。别急今天介绍的开源项目 yfinance 就是为了解决这个麻烦而生的——它把雅虎财经的全球行情数据变成几行Python代码就能调用的接口而且完全免费、无需注册、不用API密钥。传统数据获取方式到底有多折腾先说说没有 yfinance 之前我们是怎么拿数据的。以获取苹果公司过去5年股价这个需求为例对比维度传统做法yfinance资金成本商业API订阅费动辄数千元/年完全免费时间成本注册→审核→配密钥→对接文档按天计算安装即用秒级返回技术门槛需要处理OAuth认证、签名、限流两行代码零配置数据格式各家返回的JSON结构五花八门统一为Pandas DataFrame数据范围单一市场扩展要加钱全球股票、基金、汇率、期权一站搞定数据质量拆分、除权等异常要靠自己修内置自动修复机制简单来说yfinance 把金融数据获取这件事从工程活变成了复制粘贴。三个最实用的场景直接上手跑一遍场景一批量拉取整个投资组合的行情想象一下你手里有4只股票想快速看它们近一年的走势对比。传统的做法是打开行情网站一个个查再用Excel合并。用 yfinance一段循环就搞定import yfinance as yf # 你的投资组合 portfolio [AAPL, MSFT, GOOGL, AMZN] # 一键批量下载近一年日线数据 data yf.download(portfolio, period1y) print(data.tail())这段代码做了什么yf.download()一次性向雅虎财经发起请求返回一个带多层列索引的DataFrame——每一行是一个交易日每一列组合是某只股票的OHLC价量拿到的数据可以直接喂给pandas做分析。场景二计算技术指标辅助判断买卖点做技术分析最怕的就是数据自己算错。yfinance 返回的是标准化的Pandas数据结构正好和计算均线这些指标天然配合import yfinance as yf # 获取特斯拉5年历史数据 tesla yf.Ticker(TSLA) history tesla.history(period5y) # 自动计算20日和50日均线 history[MA20] history[Close].rolling(window20).mean() history[MA50] history[Close].rolling(window50).mean() print(history[[Close, MA20, MA50]].tail())这段代码做了什么先用Ticker对象拿到某只股票.history()取到带时间索引的OHLC数据然后直接对Close列做滚动平均——整个流程跟处理普通DataFrame完全一致不需要任何格式转换。场景三研究基本面把财务三大表一次抓全除了行情价值投资者更关心公司的财务健康度。yfinance 把财报、资产负债表、现金流都封装成了现成的属性import yfinance as yf apple yf.Ticker(AAPL) # 三大财务报表 income apple.financials # 利润表 balance apple.balance_sheet # 资产负债表 cashflow apple.cashflow # 现金流量表 # 常用估值指标 print(滚动市盈率:, apple.info[trailingPE]) print(股息率:, apple.info[dividendYield])这段代码做了什么apple.financials等属性返回的是指标×年份的DataFrameapple.info则是一个包含几百个字段的大字典市盈率、市净率、市值这些常用指标都能直接取出来用。新手最容易踩的4个坑以及怎么绕开坑1数据里有异常值就直接用问题雅虎返回的历史数据偶尔会混入明显错误的价格比如某天收盘价突然变成0.15或者遇到拆股、分红时调整不干净。错误示范拿到DataFrame不做任何检查就直接计算收益率结果指标全被带偏。解决方案给下载加上repairTrue让 yfinance 自动检测并修复异常# 自动修复价格异常、拆股和分红调整问题 data yf.download(AAPL, period1y, repairTrue)看上面这张图左侧是原始数据里某段价格整体失真右侧是启用修复后恢复出来的正常曲线。数据修复功能是 yfinance 非常核心的卖点相关的修复逻辑实现和测试数据都在yfinance/data.py与tests/data/目录下感兴趣的读者可以去翻翻。坑2每次运行都重新下载一遍问题同一天里反复执行脚本每次都从网络重新拉全量数据既慢又浪费流量。后果程序越跑越慢还容易触发雅虎的请求限制。解决方案yfinance 内置了请求缓存默认会复用已下载过的数据你只需要注意在同一个进程内重复调用相同的参数就会命中缓存。想彻底控制缓存行为可以参考官方文档 doc/source/advanced/caching.rst 按需调整。坑3一只一只地循环下载股票问题有人写for ticker in stocks: yf.download(ticker)逐只下载几十只股票网络请求全串行慢到怀疑人生。解决方案把全部代码丢给一次yf.download()批量处理# 高效做法一次请求拉取多只股票 stocks [AAPL, MSFT, GOOGL, AMZN, META] data yf.download(stocks, period1y, group_byticker)坑4完全不处理网络波动问题公网请求偶尔超时或失败脚本直接崩溃退出。后果凌晨跑的数据任务静默失败第二天早上才发现是空的。解决方案加一个简单的重试包装import time def robust_download(ticker, max_retries3): for attempt in range(max_retries): try: data yf.download(ticker, period1d) if not data.empty: return data except Exception: if attempt max_retries - 1: time.sleep(2) return None三个让人眼前一亮的高级玩法玩法1分钟级数据 时区控制做日内交易分析时1分钟K线是刚需。yfinance 支持从1分钟到1个月的完整粒度矩阵还能显式指定时区避免数据时间错位# 1分钟级数据按纽约时区解释时间戳 minute_data yf.download(AAPL, period1d, interval1m, tzAmerica/New_York)玩法2期权链直接拿想看苹果未来几个月的期权报价yfinance 把到期日、期权链都给你整理好了apple yf.Ticker(AAPL) expiry_dates apple.options # 所有可用的到期日 chain apple.option_chain(expiry_dates[0]) # 第一个到期日的完整期权链 print(chain.calls.head()) # 看涨期权报价玩法3跨市场任意标的一套接口通吃从美股AAPL到港股、欧洲交易所的股票再到美股基金yfinance 用的都是同一套Ticker接口只要你知道代码就能取数。价格修复里对拆股的处理效果可以看下面这张图5分钟快速上手从安装到拿到第一份数据安装在命令行执行pip install yfinance等它装完依赖即可。引入在Python里输入import yfinance as yf。取数据执行apple yf.Ticker(AAPL)创建一个代表苹果公司的对象。看信息打印apple.info[longName]和apple.info[currentPrice]确认能连上数据源。下载历史调用apple.history(period1mo)你会得到一个包含开盘、最高、最低、收盘、成交量的DataFrame至此你的第一份免费金融数据就到手了。常见问题快速解答Q: yfinance 真的完全免费吗需要注册吗A: 是的完全免费。它直接调用雅虎财经的公开接口无需注册、无需API密钥。Q: 数据更新频率怎么样A: 历史日线数据按T1节奏更新实时行情有约15分钟延迟这是雅虎公开数据的政策决定的。Q: 支持A股和港股吗A: 支持。A股代码加后缀如600519.SS港股用0005.HK这样的格式全球主要市场都可以取。Q: 数据可靠吗能用于商业用途吗A: 数据源是雅虎财经行业广泛使用内置的repairTrue还能修复异常值。不过 yfinance 本身是开源项目商业使用时需要同时遵守雅虎财经的服务条款建议个人学习与研究用途优先。写在最后yfinance 最大的价值是让数据就是力量这句话对每个人都成立——它把过去只有机构才用得起的全球金融数据免费搬到了你的笔记本上。无论你是想分析投资组合表现、研究市场趋势、跑量化回测还是单纯学习金融数据分析它都能成为你趁手的第一块跳板。现在就打开终端跑一遍pip install yfinance用几行代码把你感兴趣的股票数据拿到手里吧。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表