Оптимизация портфеля 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)