Квадратичная оптимизация — задачи максимизации портфеля

#r #quadprog #r-portfolioanalytics

Вопрос:

При анализе портфеля, учитывая ожидания, мы стремимся найти вес каждого актива, чтобы минимизировать дисперсию

вот код

 
install.packages("quadprog")
library(quadprog)

#Denoting annualized risk as an vector sigma
sigma <- c(0.56, 7.77, 13.48, 16.64)

#Formulazing the correlation matrix proposed by question
m <- diag(0.5, nrow = 4, ncol = 4)
m[upper.tri(m)] <- c(-0.07, -0.095, 0.959, -0.095, 0.936, 0.997)
corr <- m   t(m)
sig <- corr * outer(sigma, sigma)

#Defining the mean
mu = matrix(c(1.73, 6.65, 9.11, 10.30), nrow = 4)
m0 = 8


Amat <- t(matrix(c(1, 1, 1, 1,
                   c(mu),
                   1, 0, 0, 0,
                   0, 1, 0, 0,
                   0, 0, 1, 0,
                   0, 0, 0, 1), 6, 4, byrow = TRUE))
bvec <- c(1, m0, 0, 0, 0, 0)


qp <- solve.QP(sig, rep(0, nrow(sig)), Amat, bvec, meq = 2)
qp

x = matrix(qp$solution)
x
(t(x) %*% sig %*% x)^0.5
 

Я понимаю формулировку mu и ковариационной матрицы и знаю, как использовать quadprog сюжет

Однако я не понимаю, почему Amat и bvec определены таким образом, почему матрица 6 на 4.

$mu0$ — это ожидание, которое мы стремимся иметь для портфеля, и оно зафиксировано на уровне 8%

Прилагается вопросвведите описание изображения здесь

Ответ №1:

Как вы, вероятно, знаете, причина, по которой Amat у вас четыре столбца, заключается в том, что вы распределяете четыре актива. В нем шесть строк, потому что в вашей задаче есть шесть ограничений:

  1. Ассигнования составляют 1 (100%)
  2. Ожидаемая доходность = 8%
  3. Распределение «Денежного рынка» > = 0
  4. Распределение «стабильного капитала» > = 0
  5. Распределение «Баланса» > = 0
  6. Распределение «Роста» > = 0

Посмотрите на числа, которые определяют каждое ограничение. Они есть, почему bvec есть [1, 8, 0, 0, 0, 0] . Из этих шести первые два являются ограничениями равенства, поэтому meq установлено значение 2 (остальные четыре больше или равны ограничениям).

Отредактировано, чтобы добавить:

Способ работы ограничений заключается в следующем: каждый столбец Amat определяет ограничение, которое затем умножается на распределение активов, с результатом, равным (или большим, чем или равным) некоторой заданной цели bvec . Например:

Первая колонка Amat -это [1, 1, 1, 1] , и первая запись bvec -1. Итак, первое ограничение-это:

 1 * money_market   1 * capital_stable   1 * balance   1 * growth = 1
 

Это способ сказать, что распределение активов составляет 1.

Второе ограничение гласит, что ожидаемые доходы составляют до 8:

 1.73 * money_market   6.65 * capital_stable   9.11 * balance   10.32 * growth = 8
 

Теперь рассмотрим третье ограничение, которое гласит, что распределение «денежного рынка» больше или равно нулю. Это потому, что 3-я колонка Amat is [1, 0, 0, 0] и третья запись bvec 0. Таким образом, это ограничение выглядит следующим образом:

 1 * money_market   0 * capital_stable   0 * balance   0 * growth >= 0
 

Упрощая, это то же самое, что:

 money_market >= 0