You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何yfinance下载的日内5分钟股票数据最后一行缺失?

解决yfinance下载股票数据缺失最后5分钟K线的问题

问题重现

你使用以下代码下载EL股票的5分钟线数据:

import yfinance as yf
import pandas as pd

data = yf.download(tickers='EL',period='1d',interval='5m')

print(data.tail())

得到的输出显示最后一条数据是2023-12-22 15:55:00-05:00,缺失了当日最后5分钟的交易数据,且多日下载时每日均存在这个问题:

[*********************100%%**********************]  1 of 1 completed
                                 Open        High         Low       Close   Adj Close  Volume
Datetime                                                                                     
2023-12-22 15:35:00-05:00  144.110001  144.270004  144.054596  144.100006  144.100006   19665
2023-12-22 15:40:00-05:00  144.000000  144.160004  143.925003  144.160004  144.160004   25930
2023-12-22 15:45:00-05:00  144.220001  144.240005  144.057007  144.070007  144.070007   33270
2023-12-22 15:50:00-05:00  144.130005  144.479996  144.119995  144.470001  144.470001   57425
2023-12-22 15:55:00-05:00  144.460007  144.529999  144.339996  144.429993  144.429993  133693

解决方案

  • 更新yfinance到最新版本
    这个问题大概率是旧版本yfinance的bug,先执行升级命令:

    pip install --upgrade yfinance
    
  • 改用Ticker.history()方法替代yf.download()
    部分用户反馈download()函数在处理短周期K线时会截断最后一根,换成Ticker对象的history()方法能解决这个问题:

    import yfinance as yf
    import pandas as pd
    
    # 初始化Ticker对象
    ticker = yf.Ticker('EL')
    # 获取1天的5分钟线数据,prepost=False只取常规交易时段数据
    data = ticker.history(period='1d', interval='5m', prepost=False)
    # 查看最后几条数据
    print(data.tail())
    
  • 验证数据完整性
    执行完上述操作后,检查输出的Datetime列:美股常规交易时段为9:30-16:00,最后一根5分钟线的起始时间应为15:55:00(覆盖15:55-16:00的交易时段)。如果需要盘后数据,可将prepost参数设为True,即可包含盘前盘后的交易数据。

内容的提问来源于stack exchange,提问作者Lizshadehdg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:33:43