xts - цикл подмножества между списком с датами - PullRequest
0 голосов
/ 12 ноября 2018

У меня следующий список дат

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'))
}
...