使用NLOPTR进行最小方差投资组合优化

时间:2016-09-27 09:35:22

标签: optimization portfolio construction nlopt weighting

我在NLOPTR中使用 SLSQP 功能进行投资组合建设,使用34只低波动率股票。股票并不重要。我想要做的是能够为每只股票施加最小重量和最大重量。

hin函数强加了最小权重约束 - 从这里可以看出 - 在投资组合的构造中每个权重必须至少为1%;这可以通过'(x - 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 个答案:

没有答案