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

资讯详情

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

yfinance 3 分钟实战指南:拉取雅虎财经行情数据

yfinance 3 分钟实战指南:拉取雅虎财经行情数据 yfinance 3 分钟实战指南拉取雅虎财经行情数据【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance假设你要搭一个回测环境手上一份策略需要十几只标的十年的日线数据。商业行情接口订阅要钱免费接口还要注册。yfinance 把这一步简化成一条 pip 命令直接从 Python 里拉取雅虎财经行情数据不用 API 密钥返回的就是 pandas DataFrame。把三类行情数据任务跑通给单只股票建一张历史 K 线表这是最高频的用法拿一只股票的 OHLCV顺手算个均线整张表直接进你的 pandas 管道。import yfinance as yf df yf.Ticker(AAPL).history(period1y, interval1d) df[MA20] df[Close].rolling(20).mean() print(df[[Close, MA20]].tail())返回的 index 是带时区的交易所时间戳Close 默认已按分红和拆分调整过。把基本面指标和报表拉出来买入前看一眼估值fast_info只取轻量报价模块比info快市值、最新价都在里面三大报表各自是方法。t yf.Ticker(MSFT) print(t.fast_info[last_price], t.fast_info[market_cap]) print(t.income_stmt.shape, t.income_stmt.index[0])income_stmt返回 DataFrame行是会计科目列是财报年度balance_sheet、cash_flow同理。查下周日财报日历想知道自选股里哪只快发财报不用去财经网站翻一行调用拿到日期表。cal yf.Calendars() df cal.earnings_calendar(limit10) print(df.head(10))传start、end可以圈定日期窗口默认给最近一屏。装好并跑通第一个行情脚本先跑通再说两条命令装完即可用pip install yfinance装完直接下载download接受空格分隔的多个代码一个调用同时拉两只import yfinance as yf df yf.download(SPY AAPL, period1mo, progressFalse) print(df.tail())返回 DataFrame 的列按Open/High/Low/Close/Volume加代码二级展开。下面是download和history共用的关键参数速查参数常用取值说明period1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max时间范围缺省 1mointerval1m, 5m, 15m, 30m, 1h, 1d, 5d, 1wk, 1mo, 3mo数据粒度1m 数据仅最近 60 天可用start/end2024-01-01与 period 二选一end 不含当天prepostFalse为 True 时加入盘前盘后 barauto_adjustTrue默认是否对 OHLC 做拆分/分红调整repairFalse为 True 时修复漏掉的调整与 100 倍价格错误批量、修复、实时三条进阶路径一次拉多只行情多标的别循环调Tickerdownload传列表即可threadsTrue默认并发下载。df yf.download([AAPL, MSFT, GOOGL], period6mo, group_byticker, progressFalse) print(df[AAPL][Close].tail(3))group_byticker让列变成两级索引第一级是代码按票取数不再翻第二级列名。用 repairTrue 修复脏数据非美股数据常出现拆分/分红没调整、币种单位错乱伦敦交易所 100 倍错误最典型开repairTrue会自动重算并新增Repaired?列标记修过的行。df yf.Ticker(AET.L).history(period5y, interval1d, repairTrue) print(df[Repaired?].sum())下面两张图分别展示它补分红调整和修复 100 倍价格错误后的效果修复算法细节见 price_repair 文档用 WebSocket 接实时行情需要盯盘时别轮询WebSocket订阅后由推送驱动消息已解码成 dict。import yfinance as yf def handler(message): print(收到:, message) with yf.WebSocket() as ws: ws.subscribe([AAPL, BTC-USD]) ws.listen(handler)订阅每 15 秒自动重发一次断线重连由库内部处理。四类常见报错现象速查现象返回空 DataFrame。原因interval1m只开放最近 60 天配了更长的 period。解法改用interval1h或把 period 缩到5d。现象盘前时段全是 NaN。原因prepostFalse时非交易时段的 bar 没有行情。解法加prepostTrue拉全时段数据再筛。现象价格某日突变 100 倍Adj Close 跟丢。原因雅虎侧币种单位混写英镑/便士非美市场高发。解法repairTrue再用t.history_metadata[currency]核对币种。现象1h 数据拉不到两年以前。原因雅虎对盘中数据长度有硬限制。解法长区间用1d近期段单独拉盘中再拼接。下一步把仓库示例跑一遍不确定某个入口怎么写直接看 doc/source/reference/examples/download、lookup、screener 各有一份可运行脚本。缓存、代理、日志这些进阶配置在 doc/source/advanced/数据逻辑在 yfinance/ 源码里。修了数据 bug 的话可以按 CONTRIBUTING.md 提个 PR。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表