【问题标题】:How to stop quantmod from removing missing values from an xts如何阻止 quantmod 从 xts 中删除缺失值
【发布时间】:2017-09-27 20:28:11
【问题描述】:

我正在尝试检索许多股票代码的每月回报,但是,并非所有每月回报时间序列都完全到今天的日期,因此我的每月回报与股票代码不匹配。比如做了之后

getSymbols("III.L")
monthlyReturn(III.L, from = '2000-01-01', to = '2017-09-26')

特别是,这将为我提供 3i 的月度回报时间序列,但是,该序列缺少从大约 '2016-10-21' 到“to”日期的数据。是否有可能让时间序列按原样返回,除了将缺失的数据填充为 NAs 而没有 quantmod 删除缺失的(最近的)值?

即我希望返回作为正常的返回系列返回,除了一串 NA(或等效占位符)填充到“to”日期。

【问题讨论】:

    标签: r quantmod


    【解决方案1】:

    这将为您提供删除缺失值的数据:

    na.omit(monthlyReturn(III.L, from = '2000-01-01', to = '2017-09-26’))
    

    (使用您的默认warnings 设置,您会收到一条警告消息,指出缺失值已被删除,您可以忽略)

    【讨论】:

    • 嗨,我实际上是在尝试保留缺失值。当数据点丢失时,我希望 r 返回 NA(或类似的东西),其中丢失的数据应该在时间序列中。
    【解决方案2】:

    试试这个(可选地用注释掉的 NA 替换 0 返回):

    getSymbols("SPY")
    III.L <- merge(III.L, xts(, index(SPY)))
    III.L[, 4] <- na.locf(III.L[, 4])
    r <- monthlyReturn(Cl(III.L), from = '2000-01-01', to = '2017-09-26')
    
    # Optional, replace 0 return months to NA:
    #r[r[, 1] == 0, ] <- NA
    
    tail(r, 20)
    
    #            monthly.returns
    # 2016-04-29    -0.017723488
    # 2016-05-31     0.252478748
    # 2016-06-30    -0.070347284
    # 2016-07-29     0.181992337
    # 2016-08-31    -0.004051864
    # 2016-09-30     0.058584215
    # 2016-10-31     0.016141430
    # 2016-11-30     0.000000000
    # 2016-12-30     0.000000000
    # 2017-01-31     0.000000000
    # 2017-02-28     0.000000000
    # 2017-03-31     0.000000000
    # 2017-04-28     0.000000000
    # 2017-05-31     0.000000000
    # 2017-06-30     0.000000000
    # 2017-07-31     0.000000000
    # 2017-08-31     0.466717095
    # 2017-09-29    -0.058277463
    # 2017-10-31     0.052573932
    # 2017-11-08    -0.009885536
    

    使用SPY 获取一组您“认为”应该有价格数据但没有的交易日期。

    【讨论】:

      猜你喜欢
      • 2013-03-18
      • 1970-01-01
      • 2012-11-18
      • 2013-08-16
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      相关资源
      最近更新 更多