Макс. Коэффициент Шарпа с ограниченными весами портфеля
Я пытаюсь максимизировать коэффициент Шарпа для портфеля акций, но у меня возникают трудности с добавлением весовых ограничений.
Максимизируйте коэффициент Шарпа при условии:
Сумма весов = 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
Без ограничений по весу оптимизация работает отлично. Тем не менее, я получаю: "Не существует приемлемого решения". при попытке добавить мин / макс весов.
Любое руководство будет с благодарностью.