У меня следующий список дат
list_of_dates <- as.Date(c("2002-07-08",
"2002-07-09",
"2002-07-10",
"2002-07-11"))
и объект xts
, как показано ниже
> tsmom
_3 _6 _9 _12
2002-07-05 -0.08097534 -0.04842372 -0.2072821 -0.2794321
2002-07-08 -0.07335450 -0.04190741 -0.1987623 -0.2696833
2002-07-09 -0.05530222 -0.03595881 -0.2095236 -0.2617205
2002-07-10 -0.06106435 -0.03665648 -0.2147289 -0.2674964
2002-07-11 -0.07711360 -0.03323385 -0.2231438 -0.2835645
>
Я пытаюсь создать цикл for, который сначала вычисляет ковариационную матрицу от даты начала объекта xts
(2002-07-05
) до дат в list_of_dates
. Затем эти ковариационные матрицы затем используются в другой функции, а выходные данные сохраняются в матрице:
Optimal_weights <- matrix(data = NA, nrow = length(list_of_dates), ncol = 4,
dimnames = list(list_of_dates,c("C3", "C6", "C9", "C12")))
Но я не уверен, как установить подмножество между начальной датой и списком дат. Обычно, когда есть две даты и объект xts
, я бы "/2002-07-08"
, но это не работает с list_of_dates[[i]]
. Я также попытался вставить
subset(tsmom, "2002-07-05" & list_of_dates[[i]])
Это мой цикл, так что тариф:
for (i in 1:length(list_of_dates)) {
sigma[[i]] <- lwShrink(tsmom["/list_of_dates[[i]]"])$cov
Optimal_weights[[i,]] <- optimalPortfolio(Sigma = sigma[[i]],
control = list(type = 'maxdiv', constraint = 'lo'))
}
1024 * РЕШЕНИЕ *
Я нашел решение, используя tsmom[paste("/",list_of_dates[i],sep="")]
и изменив цикл таким образом:
for (i in 1:length(list_of_dates)) {
Optimal_weights[i,] <- optimalPortfolio(Sigma = lwShrink(tsmom[paste("/",list_of_dates[i],sep="")])$cov,
control = list(type = 'maxdiv', constraint = 'lo'))
}