尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
yfinance免费股票数据获取实战:半小时跑通你的第一个持仓分析脚本
yfinance免费股票数据获取实战半小时跑通你的第一个持仓分析脚本【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance如果你正在为怎么快速拿到一批股票的历史价格发愁这篇文章就是为你准备的。我们将围绕一个真实小项目——给自家持仓写一个市值跟踪脚本——从零开始使用 Python 库yfinance走完安装、单票取数、批量下载、数据修复到基本面查询的完整链路。全程只要复制几段代码就能得到一份每周可自动更新的持仓数据而且完全免费、无需注册、无需 API 密钥。一个真实需求别再手动抄行情了先说说故事的起点。你手里有十几只股票每周末想统计一次总市值。原来的做法是打开行情网页把收盘价一条条抄进 Excel再手动算乘积。股票少的时候还能忍一旦超过十只抄错行、看错价格就成了家常便饭。更麻烦的是你想画一条持仓市值随时间变化的曲线——这要求每周的历史收盘价都能拿到。手动抄不现实。于是需求变得很具体写一个脚本输入股票代码和持仓数量自动输出每个持仓的市值、总市值最好还能拉出历史行情画曲线。yfinance 恰好把这件事变得极简单下面我们一步步来。第一步安装 yfinance两分钟搞定yfinance 是一个从雅虎财经公开接口抓取市场数据的 Python 库安装方式只有一条命令pip install yfinance安装时会自动带上pandas、curl_cffi等依赖你不需要手动处理。装完先验证一下import yfinance as yf print(yf.__version__) # 打印版本号确认安装成功如果终端输出类似0.2.x的版本号说明环境已经就绪。注意把脚本文件放在你自己喜欢的目录下比如portfolio/后面所有代码都写在这个目录里。第二步用 Ticker 抓下第一份行情看看数据长什么样yfinance 最常用的入口是Ticker它代表一只股票。我们用苹果公司试试import yfinance as yf aapl yf.Ticker(AAPL) df aapl.history(period1mo) # 最近一个月的日线行情 print(df.tail()) # 打印最近几行确认数据格式运行后你会看到一张标准的表格每一行是一个交易日列包括Open开盘、High最高、Low最低、Close收盘、Adj Close复权收盘、Volume成交量。这里有个关键点做长期分析时请优先用Adj Close。它已经按分红、拆股做了复权调整能真实反映你拿在手里的收益变化而不只是价格的数字跳动。history()有两个核心参数period控制时间跨度interval控制数据粒度。它们怎么搭配看这张速查表就够你的需求periodinterval盘中分时走势1d1m 或 5m近一周的小时线5d1h近一年日线最常用1y1d多年周线/月线趋势5y / max1wk / 1mo小提示分钟级数据最多只能回溯约 60 天这是数据源的硬限制不是 yfinance 的问题。第三步让十几只股票一次性到位Ticker适合单只股票但你的持仓是十几只。用download()函数可以一次搞定它内部会自动多线程并发抓取比写 for 循环快得多import yfinance as yf portfolio [AAPL, MSFT, GOOGL, AMZN, TSLA] data yf.download(portfolio, period6mo, group_byticker) close data[Close] # 取出每只股票的收盘价列名是股票代码 print(close.tail())运行结果是一张日期 × 股票的二维表每一列就是一只股票的收盘价序列。到这一步你已经拥有了画持仓市值曲线所需的全部原材料把每只股票的收盘价乘以持仓数量再加总即可。第四步当数据不对劲时让 repair 参数兜底真实世界的行情数据并不总是干净的。雅虎财经偶尔会给出离谱的结果某几天价格全部变成0.15货币单位搞混价格差了 100 倍、成交量整段缺失、除息日附近的复权价格没调整等。如果直接用这些脏数据做分析曲线会出现吓人的悬崖。yfinance 从某个版本起内置了数据修复机制只需加一个参数df yf.Ticker(8TRA.DE).history(period1y, repairTrue) print(df[Repaired?].sum()) # 统计被修复的行数上图是典型的 100 倍错误某几天的价格被雅虎统一记成了0.15成交量也丢失了。开启repairTrue后yfinance 会尝试用更细粒度的小时数据重建这段行情并在结果中新增一列Repaired?标记哪些行被处理过。你可以在doc/source/advanced/price_repair.rst里看到完整的修复场景说明。上面这张图展示的是另一种常见问题公司在某天发放了股息但前一天的复权价格没有跟着调整导致历史收益计算失真。repairTrue会把这类缺失的除息调整补上让整段历史数据前后一致。建议下载历史数据时默认带上repairTrue几乎零成本却能避开最致命的数据坑。第五步从行情走向基本面拼装完整脚本行情解决的是价格但做持仓分析往往还想看基本面。Ticker对象同样提供了财务数据入口aapl yf.Ticker(AAPL) print(aapl.financials) # 利润表 print(aapl.balance_sheet) # 资产负债表 print(aapl.cashflow) # 现金流量表 print(aapl.info[dividendYield]) # 股息率等指标现在把前面的能力拼起来写出这个项目真正的成品——一个持仓市值统计脚本import yfinance as yf portfolio {AAPL: 10, MSFT: 5, TSLA: 3} def portfolio_value(): total 0 for ticker, shares in portfolio.items(): stock yf.Ticker(ticker) price stock.info[currentPrice] # 取最新价 value price * shares total value print(f{ticker}: {shares}股 × {price:.2f} {value:.2f}) print(f\n组合总市值: {total:.2f}) portfolio_value()运行它会依次输出每只股票的持仓市值最后给出组合总市值。下次想更新重新执行一次即可这就是自动化带来的第一份回报。第六步途中遇到的两个小坑新手在跑上述代码时最容易碰到两个问题。一个是时区。港股、美股、欧股返回的时间戳带不同时区如果你把多市场数据混在一起画图日期会对不齐。yfinance 会把时区信息存在时间索引里pandas会保留它画图前注意统一即可项目还提供了时区缓存机制相关代码在yfinance/cache.py可调用yf.set_tz_cache_location()指定缓存目录。一个是网络波动。抓取批量数据时偶尔会超时失败最简单的办法是加一层重试失败后等两秒再试如果怀疑是请求被限流可以用yf.enable_debug_mode()打开调试日志看是哪一步出了问题。下一步你的行动清单与延伸阅读到这里一个能输出持仓市值、能拉历史行情、能修复脏数据的脚本已经跑通了。现在轮到你自己动手替换持仓把脚本里的portfolio字典换成你自己的股票代码和股数跑一遍看看结果。生成曲线用download()拉一年日线把data[Close]乘以持仓后按周重采样画一张持仓市值曲线。开启修复把repairTrue加进你的下载代码打印Repaired?列对比修复前后的差异。如果还想深入研究项目的doc/source/reference/examples/目录下放着一批可直接运行的示例ticker、download、实时行情等场景tests/data/里则有各种脏数据样本和修复后的对照文件非常适合用来理解修复逻辑。下图是项目自身的分支管理示意能看出它采用main与dev双分支的成熟开发流程——这也意味着它是一个活跃维护、值得长期依赖的开源项目。从今天起你不再需要为了几行行情数据打开网页、手动复制。一个脚本几句代码把数据拉回来把时间留给真正的分析——这才是用工具的正确方式。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

C# 视觉量检测系列(八):精度分析与误差补偿 —— 让测量结果可信

C# 视觉量检测系列(八):精度分析与误差补偿 —— 让测量结果可信

系列:C# 视觉量检测工程师成长路线图 本篇定位:从"算法能跑"到"结果可信"的质变,资深工程师的必修课 目标读者:已能独立完成视觉检测系统、需要提升系统可靠性的开发者 前置知识:统计学基础、相机标定、测量系统分析 阅读时间:约 18 分钟 一、为什么…

📅 2026/10/12 10:38:18
C# 视觉量检测系列(七):视觉与运动控制集成 —— C# 上位机的实时控制之道

C# 视觉量检测系列(七):视觉与运动控制集成 —— C# 上位机的实时控制之道

系列:C# 视觉量检测工程师成长路线图 本篇定位:打通"视觉感知 → 决策判断 → 运动执行"的完整闭环 目标读者:已掌握视觉检测、需要与运动控制系统对接的 C# 开发者 前置知识:视觉检测基础、基础运动控制概念、TCP/Modbus 通信 阅读时间:约 18 分钟 一、视觉与运…

📅 2026/10/12 10:38:18
你的中文设计为什么总差一口气?思源宋体CN的7个字重实测手记

你的中文设计为什么总差一口气?思源宋体CN的7个字重实测手记

你的中文设计为什么总差一口气?思源宋体CN的7个字重实测手记 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 上周帮朋友改一个落地页,他反复抱怨"标题怎么…

📅 2026/8/23 3:49:11
MORE NEWS

更多资讯

📰

缠论原始语料结构化:从1634页杂乱网页到可验证知识图谱

简介:本资源是缠论学习者必备的《教你炒股票108课》张星星注解版PDF合集,面向股票与期货交易初学者、技术分析进阶者及缠论系统研修者,旨在解决原典抽象难懂、逻辑断层、缺乏实操锚点等核心学习痛点。全包仅1个65.05MB高清PDF文件&#xff0c…

📰

AI芯片软硬件协同:有效算力与存储墙的瓶颈解析

提到AI芯片,很多人第一反应是去看规格表上的TOPS数字。我最初也是这么干的,但真正把模型从通用平台搬到AI加速卡上之后,才意识到一个残酷事实:纸面算力只是理论峰值,实际跑出来的性能,可能连一半都不到&…

📰

强化学习入门:MDP与贝尔曼方程从原理到代码实现

1. 为什么MDP是强化学习的“地基”很多刚接触强化学习的朋友,在看完环境搭建和基础概念之后,都会卡在同一个地方:马尔可夫决策过程和贝尔曼方程。这两个词听起来像是数学系研究生的专属,但实际上,它们就是强化学习最底…

📰

SkillSpector扫描LLM项目:高危告警为何总评SAFE?评分机制与应对策略

1. 从一次告警面板的诡异现象说起第一次用 SkillSpector 扫完一个自研的 LLM Agent 项目,结果页面让我愣了好几秒:风险列表里明晃晃挂着三条高危告警,可顶部的总评却是一个绿色的 SAFE。当时第一反应是工具坏了,第二反应是——是不…

📰

PHP刷华为机试全攻略:高频算法模板与在线训练实战指南

说实话,用 PHP 去刷大厂机试,很多人的第一反应是“不太行”。但我自己用 PHP 刷完几百道在线训练题之后,反而觉得这套语言在机试场景下非常顺手:字符串处理是看家本领,关联数组天然就是哈希表,写出来的代码…

📰

移动端相机与多媒体框架:从CameraX到MediaCodec的实战指南

《第12章:相机与多媒体框架》一直是移动端进阶里绕不开的一块硬骨头。很多人平时写界面、接接口、做状态管理都没问题,一到相机和多媒体就发怵,因为这套东西不像业务代码那样“输入输出明确”,它要和硬件传感器打交道,…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬