Оптимизация портфеля Minimum Variance с использованием NLOPTR

Я использую функцию SLSQP в NLOPTR для построения портфеля с использованием 34 акций с низкой волатильностью. Акции не важны. Я пытаюсь навязать минимальный вес и максимальный вес каждой акции.

Функция хина налагает ограничение минимального веса - как можно видеть здесь - что каждый вес должен составлять не менее 1% при построении портфеля; это видно по "(х - 0,01)"

 hin <- function(x){
      return(x - 0.01)
    }

Я не знаю, как теперь добавить максимальное ограничение (скажем, 15% максимальный вес на акцию) к функции, а также иметь минимальное ограничение. Таким образом, весовое ограничение будет составлять минимум 1% и максимум 15%.

Может кто-нибудь помочь мне создать минимальное и максимальное ограничение.

Мой код для запуска оптимизации выглядит следующим образом:

modvol <- subset(matret, select=modvolreturns)
covmodvol <- cov(modvol)
var(modvol[,1])

size <- 34

fn <- function(x){
  return(t(x)%*%covmodvol%*%x)
}

hin <- function(x){
  return(x - 0.01)
}

heq <- function(x){
  return(sum(x)-1)
}

startx <- vector("numeric",size)
startx[1:size] <- 1/size

mvportmodvol <- slsqp(startx,fn,hin = hin,heq = heq)

0 ответов

Другие вопросы по тегам