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

getSymbols获取USHAMART.NS等标的返回数据存在误差问题咨询

getSymbols拉取USHAMART.NS周频数据失真问题排查及解决方案

问题根因定位

  • getSymbols默认从雅虎财经数据源拉取行情,印度市场中小盘个股的原始日线数据经常存在录入错误,本次异常是对应时间段内某一日的最高价被错误录入为3515,周频数据聚合时默认取区间内最高值,最终导致周线高价失真,并非quantmod包的逻辑错误。
  • 可通过拉取同标的日频数据验证:
# 拉取日频数据核对2021年2-3月原始行情
d_daily <-  as.data.frame(
     getSymbols(
         "USHAMART.NS",
         from ="2021-02-01", 
         to = "2021-03-31",
         periodicity = "daily",
         return.class = 'zoo',
         env = NULL
     )
 )

查看上述数据的最高价列,可直接定位到错误数据所在的具体交易日。

问题修复方案

  • 单标的快速修复:对异常值做清洗,可采用相邻3周价格中位数替换,或者设置合理的价格阈值过滤,参考代码如下:
# 计算价格阈值,取前后10周价格的均值±3倍标准差作为合理区间
price_mean <- rollapply(d$USHAMART.NS.High, width = 10, FUN = mean, fill = NA, align = "center")
price_sd <- rollapply(d$USHAMART.NS.High, width = 10, FUN = sd, fill = NA, align = "center")
upper_limit <- price_mean + 3*price_sd
# 超过上限的替换为前一周最高价
d$USHAMART.NS.High <- ifelse(d$USHAMART.NS.High > upper_limit, lag(d$USHAMART.NS.High), d$USHAMART.NS.High)
  • 从数据源层面规避:更换getSymbols的数据源参数src,改用覆盖印度市场更稳定的行情源,避免脏数据问题。
  • 多标的批量排查:对标的池所有标的计算相邻两周最高价涨跌幅,设置合理阈值(如周涨幅超过200%)做异常标记,可批量识别同类数据问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:54:09