如何阻止quantmod从xts

时间:2017-09-27 20:28:12

标签: r quantmod

我试图检索许多代码的月度退货,但是,并非所有月度退货时间系列都完全达到今天的日期,因此我的月度退货不会在代码之间匹配。例如,在做完

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

特别是,这将为我提供3i月度回报的时间序列,但是,这个系列缺少来自2016-10-21'周围的数据。直到"到"日期。是否有可能让时间序列按原样返回,除非缺少数据仅作为NAs而没有quantmod删除丢失的(最近的)值?

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

非常感谢,我真的很感激帮助!

2 个答案:

答案 0 :(得分:0)

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

Map<String, String> map = new HashMap<>();
map.put("id", "5");
map.put("name", "Bob");
map.put("age", "23");
map.put("savings", "2500.39");

ObjectMapper mapper = new ObjectMapper();
MyPojo pojo = mapper.convertValue(map, MyPojo.class);

(使用您的默认na.omit(monthlyReturn(III.L, from = '2000-01-01', to = '2017-09-26’)) 设置,您会收到一条警告消息,指出已删除缺失的值,您可以忽略这些消息)

答案 1 :(得分:0)

尝试这个(可选择将NAs返回为注释掉的NAs):

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获取一组交易日期,您“认为”您应该有价格数据,但不会。