Макс. Коэффициент Шарпа с ограниченными весами портфеля

Я пытаюсь максимизировать коэффициент Шарпа для портфеля акций, но у меня возникают трудности с добавлением весовых ограничений.

Максимизируйте коэффициент Шарпа при условии:

Сумма весов = 1

Минимальный вес = 0

максимальный вес = 2 x средний вес (40% для портфеля из 5 акций)

 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 ответов

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