Я попытался создать ковариационные матрицы поверх скользящего окна, чтобы рассчитать вес портфеля на следующий период времени.
covMat = cov(mon_ret) ;
[corMat, std] = corrcov(covMat);
port_size = length(covMat) ;
Aeq = ones(1,port_size);
Beq = 1;
lbnds = zeros(1,port_size);
ubnds = ones (1,port_size);
n = 70;
m = 60;
n1 = 1.0/port_size;
w0 = repmat(n1, port_size, 1);
for mth = 1 : n - m
covMat_1 = arrayfun(@(k)cov(mon_ret(k:m+k-1,:)),1:(n-m+1),'UniformOutput',false);
mvfunction = @(w_mv) mv(covMat_1{1,mth}, w_mv);
w_mv_1 = arrayfun(@(w_mv)fmincon(mvfunction, w0, ...
[], [], Aeq, Beq, lbnds, ubnds, []),1:(n-m+1),'UniformOutput',false) ;
end
Таким образом, covMat_1 предоставляет «ячейку» 1X11 с каждой ячейкой, содержащей ковариационную матрицу для конкретного скользящего окна.
Но когда я пытаюсь создать переменную w_mv_1 с целью получитьвсе новые рассчитанные веса портфеля в нем, я получаю «ячейку» 1X11 с каждой ячейкой, содержащей веса, рассчитанные для первой ковариационной матрицы из covMat_1 (covMat {1,1}).
Кто-нибудь может мне помочь исправить это так, чтобы я получил веса для соответствующего скользящего окна?
Буду признателен за любую помощь.
С наилучшими пожеланиями