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

yfinance使用60d周期获取15分钟股票数据报错求助

解决yfinance无法获取60天15分钟级别股票数据的问题

问题背景

此前数月使用yfinance的download或Ticker.history函数,通过period="60d"和interval="15m"参数可正常获取股票数据,但近期调用时出现报错,提示Period '60d' is invalid,仅允许使用官方指定的固定周期值。

报错原因

yfinance的API规则近期更新:针对15分钟及更短的时间间隔数据,period参数不再支持自定义天数(如60d),仅允许使用官方列出的枚举值:['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']。但可通过start和end参数手动指定时间范围绕过该限制。

解决方案

放弃period参数,改用start和end参数精准定义60天的时间窗口:

  • 计算当前日期往前推60天的起始日期
  • 将起始日期与当前日期传入history函数

修改后的代码

import yfinance as yf
import pandas as pd
import datetime

def download_data(ticker):
    interval = "15m"
    # 计算60天时间窗口的起止日期
    end_date = datetime.datetime.now()
    start_date = end_date - datetime.timedelta(days=60)
    
    # 用start/end替代period参数
    data = yf.Ticker(ticker).history(interval=interval, start=start_date, end=end_date)
    data = calculate_technical_indicators(data)
    data = tomorrow(data, -5)
    data.dropna(inplace=True)
    return data

注意事项

  • 确保yfinance为最新版本,可执行pip install --upgrade yfinance更新
  • Yahoo Finance对15分钟级别数据的历史可获取时长上限约为60天,该方法刚好适配此限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:25:52