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

使用tq_get下载雅虎财经DAX指数数据能否填充周末缺失日期

问题场景

开发Shiny应用过程中需要在同一张图表绘制两类收益曲线:

  • 加密货币投资组合收益
  • DAX指数(雅虎财经代码为^GDAXI)收益

两类数据存在时间粒度不匹配问题:DAX指数仅包含每周5个交易日的行情数据,加密货币为每周7天连续交易数据,相同时间区间下DAX数据点更少,无法直接对齐绘图。需求为补全DAX数据中周末、节假日缺失的日期行,缺失值填充为NA即可,后续可通过na.locf函数完成数值补全。

原实现代码存在两处可修正的问题:tq_get调用中to参数多写了一个逗号,重复执行了两次dax_daily_returns的计算逻辑。

实现方案

雅虎财经接口返回的股票、指数类数据默认仅包含交易日条目,没有内置参数可以自动返回非交易日的空行,可通过生成完整日期序列做左连接的方式补全所有日期,缺失值会自动初始化为NA,完全匹配后续处理需求。
完整可运行代码如下:

library(tidyquant)
library(zoo)
library(dplyr)

# 拉取DAX指数原始行情数据
dax <- tq_get("^GDAXI",
             from = "2020-01-01",
             to = "2021-01-01",
             get = "stock.prices")

# 生成指定时间区间内的完整自然日序列
full_dates <- tibble(
  date = seq.Date(from = as.Date("2020-01-01"),
                  to = as.Date("2021-01-01"),
                  by = "day")
)

# 左连接补全所有日期,非交易日的行情字段自动填充为NA
dax_with_na <- full_dates %>%
  left_join(dax, by = "date")

# 按需调用na.locf用上一个有效交易日的数值填充NA
dax_imputed <- dax_with_na %>%
  mutate(across(c(open, high, low, close, adjusted, volume), ~na.locf(.x, na.rm = FALSE)))

# 计算日度收益、累计收益,此时日期维度和加密货币数据完全对齐
dax_daily_returns <- dax_imputed %>%
  tq_transmute(select = adjusted,
               mutate_fun = periodReturn,
               period = "daily",
               col_rename = "ret")

dax_cum_returns <- dax_daily_returns %>%
  mutate(cr = cumprod(1 + ret))

优化提示:如果需要和加密货币数据的日期100%精准对齐,无需手动生成日期序列,直接提取加密货币数据框中的日期列作为左表和DAX数据连接即可,可自动适配不同时间区间、时区带来的日期差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:18:20