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

使用yfR包yf_get()抓取雅虎财经缺失日期收盘价的取值方案

实现方案

yf_get()本身没有内置指定交易日缺值自动回退取数的能力,不需要修改函数源码,封装一层简单的取数逻辑就能实现需求,还能覆盖所有季度节点休市的场景,不局限于12月31日的特殊情况。

核心逻辑

原有代码失效的原因是直接将季度截止日设为拉取的最后日期,如果目标日期为休市日(周末、法定节假日、个股停盘),返回结果中无对应日期的收盘价,会导致后续向量长度不匹配、取值错位。
通用解决思路是拉取目标日期前若干天的区间数据,筛选出不晚于目标日期的最新一条交易记录,即可自动拿到最近的可用收盘价。

可直接复用的代码

首先封装通用的最近收盘价取数函数:

library(yfR)
library(dplyr)

get_nearest_close <- function(tickers, target_date, lookback_days = 7, thresh_bad_data = 1) {
  # 拉取目标日期往前lookback_days至目标日期的区间行情
  raw_dt <- yf_get(
    tickers = tickers,
    first_date = target_date - lookback_days,
    last_date = target_date,
    thresh_bad_data = thresh_bad_data
  )
  
  # 按个股分组,取距目标日期最近的有效交易日收盘价
  result <- raw_dt %>%
    group_by(ticker) %>%
    filter(ref_date <= target_date) %>%
    arrange(desc(ref_date)) %>%
    slice(1) %>%
    ungroup() %>%
    mutate(price_close = round(price_close, 2)) %>%
    select(ticker, actual_trade_date = ref_date, price_close)
  
  return(result)
}

替换原代码中的分段取数逻辑即可,后续拼接、列名赋值的代码无需改动:

# 当日收盘价
curr <- get_nearest_close(tickers, target_date = Sys.Date())
current_close <- curr$price_close

# 各季度节点收盘价
prev_q <- get_nearest_close(tickers, target_date = quarters[1])
prev_q_closes <- prev_q$price_close

prev_q2 <- get_nearest_close(tickers, target_date = quarters[2], thresh_bad_data = 0.45)
prev_q2_closes <- prev_q2$price_close

prev_q3 <- get_nearest_close(tickers, target_date = quarters[3])
prev_q3_closes <- prev_q3$price_close

close_prices <- cbind(prev_q3_closes, prev_q2_closes, prev_q_closes, current_close)
tick_close <- data.frame(Tickers = tickers,
                         ClosingPrices = close_prices,
                         PercentChanges = percent_changes)
# 原有剩余列名赋值、格式转换代码保持不变即可

参数说明

  • lookback_days:默认值7,覆盖普通周末、短休市场景;如果需要适配春节、国庆等7天以上长假,可将参数调整为15,确保能取到假期前最后一个交易日的数据
  • 如果需要严格执行「目标日无数据则仅取前1天,再无数据直接报错」的规则,将lookback_days设为2即可
  • 函数返回结果中保留了actual_trade_date字段,可直接用于核对每只个股实际取到的收盘价对应交易日期,方便数据校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:24:31