最大夏普比率约束投资组合权重

时间:2018-08-21 09:45:53

标签: r nonlinear-optimization

我试图使股票投资组合的Sharpe比率最大化,但是我很难添加权重约束。

在符合以下条件的情况下最大化夏普比率:

权重之和= 1

最小重量= 0

最大权重= 2 x平均权重(5个股票投资组合为40%)

 cov.mat
          BIL       AGL       SOL       AMS       ANG
BIL 1.0000000 0.7346163 0.5527674 0.4550696 0.3203103
AGL 0.7346163 1.0000000 0.6419244 0.7417388 0.4983650
SOL 0.5527674 0.6419244 1.0000000 0.5813384 0.3012339
AMS 0.4550696 0.7417388 0.5813384 1.0000000 0.4904748
ANG 0.3203103 0.4983650 0.3012339 0.4904748 1.0000000

wgt <- array(1/nrow(cov.mat), dim = c(nrow(cov.mat),1))

sharpe.ratio <- function(w)
{
  cov.mat <- cov2cor(cov(RR))
  e.ret <- matrix(runif(nrow(cov.mat))-0.5, nrow=1, ncol=nrow(cov.mat))
  e.ret %*% t(w)/t(w) %*% cov.mat %*% w 
}

wgtsum <- function(w)
{
  sum(w)
}    

lb <- matrix(0, nrow=1, ncol=nrow(cov.mat))
ub <- matrix(-2/nrow(cov.mat), nrow=1, ncol=nrow(cov.mat))
eqB <- 1

gosolnp(pars=wgt, fixed=NULL, sharpe.ratio, eqfun=wgtsum, eqB=eqb, LB=lb, UB=ub)

我遇到以下错误:

> gosolnp(pars=wgt, fixed=NULL, sharpe.ratio, eqfun=wgtsum, eqB=eqb, LB=lb, UB=ub)
Error in e.ret %*% t(w) : non-conformable arguments
In addition: Warning messages:
1: In runif(n, min = LB, max = UB) : NAs produced

没有重量限制,优化效果很好。但是我得到“没有可行的解决方案。”尝试添加最小/最大权重时。

任何指导将不胜感激。

0 个答案:

没有答案