为何quantmod::getDividends()无法获取NSAV.NE的分红数据?
如何用quantmod获取NSAV.NE的分红数据?
我正在使用quantmod v0.4.20查看高息储蓄ETF的分红数据。雅虎财经显示以下两只ETF2022年均有月度分红:
- Ninepoint High Interest Savings Fund ETF (NSAV.NE)
- Purpose High Interest Savings ETF (PSA.TO)
但调用getDividends()仅能获取到PSA.TO的分红数据,NSAV.NE返回空值。相关代码如下:
library("quantmod") # Ninepoint High Interest Savings Fund ETF div_nsav <- getDividends( Symbol = "NSAV.NE", src = "yahoo", from = "2022-01-01", to = "2022-12-01") # > div_nsav # NSAV.NE.div (无数据) # Purpose High Interest Savings ETF div_psa <- getDividends( Symbol = "PSA.TO", src = "yahoo", from = "2022-01-01", to = "2022-12-01") # > div_psa # PSA.TO.div # 2021-12-31 0.026 # 2022-01-28 0.021 # 2022-02-25 0.022 # 2022-03-30 0.035 # 2022-04-28 0.042 # 2022-05-30 0.058 # 2022-06-29 0.073 # 2022-07-28 0.093 # 2022-08-30 0.128 # 2022-09-29 0.139 # 2022-10-28 0.145 # 2022-11-29 0.179
原因与解决方法
1. 改用getSymbols()提取分红数据
getDividends()对部分加拿大上市标的(如.NE后缀)可能存在接口数据限制,可通过getSymbols()获取包含分红的完整数据集,再提取对应字段:
library("quantmod") # 获取NSAV.NE的完整数据(包含分红列) getSymbols("NSAV.NE", src = "yahoo", from = "2022-01-01", to = "2022-12-01", auto.assign = TRUE) # 提取分红数据 div_nsav <- NSAV.NE[, "NSAV.NE.div"] print(div_nsav)
2. 调整getDividends()参数尝试
雅虎财经API对不同交易所标的的返回格式可能存在差异,可添加adjust = TRUE参数重试:
div_nsav <- getDividends( Symbol = "NSAV.NE", src = "yahoo", from = "2022-01-01", to = "2022-12-01", adjust = TRUE)
3. 使用tidyquant替代(兼容方案)
如果quantmod接口仍无法获取数据,可尝试tidyquant包,它对部分标的的数据兼容性更好:
library(tidyquant) div_nsav <- tq_get("NSAV.NE", get = "dividends", from = "2022-01-01", to = "2022-12-01") print(div_nsav)
内容的提问来源于stack exchange,提问作者ixodid
相关产品推荐
相关产品推荐

