尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

yfinance 金融数据:免费取历史股价,3 分钟上手

yfinance 金融数据:免费取历史股价,3 分钟上手 yfinance 金融数据:免费取历史股价,3 分钟上手【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinanceyfinance 是面向金融数据的开源 Python 库:它封装了 Yahoo! Finance 的公开 API,一条 pip 命令装完,取历史股价、财报、公司信息都不用 API 密钥,也不收钱。本文按最短路径带你从安装走到出图。⏱ 30 秒认识 yfinance你关心的问题答案数据从哪来Yahoo! Finance 公开 API,覆盖美股、港股、A 股代码(.SS/.HK 后缀)、ETF、汇率要不要钱免费。无订阅、无额度,装完即用要不要密钥不要。不注册、不配置,import yfinance就能发请求依赖什么环境Python 3 pandas。所有接口直接返回 DataFrame,不用自己解析 JSON一句话:它是免费、无密钥、直接产出 pandas 数据框的取数工具。 第一次上手:yfinance 安装命令与首条行情安装只有一条命令:pip install yfinance装完直接取第一条数据,这是能跑通的最短代码:import yfinance as yf px yf.download(0700.HK, period1mo, interval1d) print(px.tail(3))两个参数用熟即可:period:时间跨度,可选1d、5d、1mo、6mo、1y、5y、max等,默认1mointerval:K 线粒度,1d是日线,另有1wk、1mo;分钟线受 Yahoo 限制只回看 60 天更多参数说明见 批量下载实现,单只股票的完整接口在 ticker 核心模块。它能帮你做什么:取数、修数、画图取数:yfinance 获取历史股价一行搞定三个入口覆盖大多数取数场景:入口用法适合yf.download(...)一次下多只,默认输出多层列的 DataFrame组合、批量回测yf.Ticker(代码)单只股票对象,.history()、.info、.financials深挖一只票yf.Tickers(A B C)逗号或空格分隔多代码,逐只管理少量标的的循环处理download还支持start/end自定义起止日期、group_byticker按标的分组列,这些在回测脚本里最常用到。修正:repair 参数怎么用Yahoo 的数据偶尔会脏:旧货币单位混入导致价格差 100 倍,拆分或分红后缺调整行。手动修很烦,yfinance 在download里提供了repairTrue,自动检测单位跳变、补齐缺失的分红与拆股调整。import yfinance as yf # ASAI.L 历史上有过单位混用问题,repair 会自动检出并修正 raw yf.download(ASAI.L, period5y, interval1d, repairTrue)下图是它处理缺失分红调整的实例:中间插入了 0.7 股息的调整行,前后收盘价对齐:机制细节可看 价格修复文档。分析:算指标再画图拿到 DataFrame 后,pandas 的惯用写法全部适用。下面 5 行算出 20 日均线并出图:import yfinance as yf import matplotlib.pyplot as plt close yf.download(0700.HK, period1y)[Close] close.plot(); close.rolling(20).mean().plot(colororange) plt.show()收益率、波动率、相关性这类指标,直接在Close列上做pct_change()、std()、corr()即可。两个现成案例:组合盯盘、回测取数案例一:持仓组合每日盯盘输入:一组代码 近 5 天得到:每只票最近一个交易日的收盘价与成交量import yfinance as yf names [0700.HK, 600519.SS, BABA] df yf.download(names, period5d, group_byticker) for t in names: last df[t].iloc[-1] print(t, last[Close], last[Volume])把这段放进定时任务,就是最低成本的盯盘脚本。案例二:回测取数落地输入:单只代码 起止日期得到:带日收益率的干净日线表,直接存盘供回测框架读取import yfinance as yf d yf.download(0700.HK, start2020-01-01, interval1d) d[ret] d[Close].pct_change() d.to_csv(tencent_daily.csv) print(d[ret].std() * (252 ** 0.5)) # 年化波动率注意end不含当天(左闭右开),跨边界取数时留意这一点。踩坑与对策症状:返回空 DataFrame。原因:代码在 Yahoo 上不存在,或该时段休市。处理:先用yf.Search核对代码,再把period放宽到5d验证是否有数据。症状:分钟线只拿到约 60 天。原因:Yahoo API 自身限制,日内数据不回看 60 天以上。处理:长周期改用interval1d,分钟线只用于近期观察。症状:历史价格某天跳变 100 倍,或拆股后对不上图。原因:Yahoo 混入旧货币单位、漏掉拆分/分红调整。处理:加repairTrue,检测与修复逻辑见 multi.py。症状:请求偶发超时或连续失败。原因:短时间批量拉取触发 Yahoo 限流。处理:分批下载、小批量多次,库内置了重试,本地时区等缓存见 缓存说明。接入你的工具链yfinance 的返回值就是 pandas DataFrame,所以下游工具零胶水代码:工具配合方式说明pandas直接拿到 DataFrame,group_by/rolling/pct_change照常用取数即分析,无格式转换matplotlib / seaborndf.plot()或sns.heatmap(关闭价格相关性)直接画出图不用先清洗结构sklearn 等机器学习库df.to_numpy()转特征矩阵即可进模型财报数据(.info、.financials)可作特征源典型链路:取数(download)→ 指标(pandas)→ 绘图(matplotlib)→ 建模(sklearn),全程一个 DataFrame 走到底。参与项目:提 Issue 与看源码yfinance 靠社区维护,遇到 bug 先看 CONTRIBUTING.md 的提报规范,再在仓库提 Issue;想理解行为,直接读 multi.py 和 ticker.py 比翻博客高效。完整文档在 doc/source/index.rst。项目采用下图的分支模型:功能走 feature 分支合入 dev,稳定后打 tag 发版,紧急修复从 main 拉出:本地克隆后边读边跑:git clone https://gitcode.com/GitHub_Trending/yf/yfinanceyfinance 的价值很具体:免费、无密钥、取数直接返回 DataFrame,研究场景零成本起步。数据来自 Yahoo 公开接口,商用前请自行确认其条款。建议你现在就pip install一下,取一只票的 30 天日线,把上面六段代码各跑一遍,最短路径已经打通。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表