添加xts对象时出现意外结果

时间:2014-08-04 17:41:16

标签: r xts

我遇到了添加两个xts对象的问题。

对象1:bk

head(bk)
            iroqu
1962-07-03     0
1962-07-05     0
1962-07-06     0
1962-07-09     0
1962-07-10     0
1962-07-11     0

对象2:以for循环计算为权重< - lag(crp(xik,c(alphas [i],1-alphas [i])),1)

                [,1]
1962-07-03        NA
1962-07-05 0.9374210
1962-07-06 0.9367212
1962-07-09 0.9452369
1962-07-10 0.9464487
1962-07-11 1.0819963

当我在里面做循环时,

bk <- bk + alphas[i] * weight

bk成为

bk
Data:
numeric(0)

Index:
numeric(0)

我检查了alphas [i] *重量不是问题,矢量的尺寸也匹配。为什么我无法使用+符号添加两个对象?有没有办法添加这些?我只想有效一栏。

我正在尝试的完整示例来自博客http://optimallog.blogspot.in/2012/06/universal-portfolio-part-4.html第一个代码段

1 个答案:

答案 0 :(得分:1)

从帖子中我可以看出,问题是我在评论中建议的:两个对象有不同的时区(因此索引值不同)。日期索引的xts对象的索引时区应为"UTC"

library(logopt)
data(nyse.cover.1962.1984)
x <- nyse.cover.1962.1984

# change the index timezone attribute
indexTZ(x) <- "UTC"
# force a recalculation of the actual index values
index(x) <- index(x)

xik <- x[,c("iroqu","kinar")]
nDays <- dim(xik)[1]
Days <- 1:nDays
pik <- cumprod(xik)
alphas <- seq(0,1,by=0.05)
bk <- xik[,1] * 0
w <- xik[,1] * 0
# crps should be alphas???
crps <- alphas
for (i in 1:length(crps)) {
  # we calculate bk by weighting the b by the realized wealth lagged one
  weight <- lag(crp(xik, c(alphas[i], 1-alphas[i])), 1)
  bk <- bk + alphas[i] * weight
  w <- w + weight
}