我遇到了添加两个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第一个代码段
答案 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
}