Оптимизация в R с ROI: моя целевая функция верна - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть проблема оптимизации портфеля, в которой я пытаюсь максимизировать квадратичную функцию полезности, изменяя веса активов портфеля с учетом различных ограничений. В настоящее время я использую пакет ROI для этой цели. Пока давайте предположим, что нет никаких ограничений, так как мой вопрос включает в себя целевую функцию.

У меня есть вектор ожидаемой доходности («возврат»), коэффициент неприятия риска («лямбда») и дисперсия / ковариацияматрица («VCV»). Я пытаюсь максимизировать эту стандартную функцию полезности портфеля:

utility = portfolio_return - (1/2) * lambda * portfolio_variance

Это может быть закодировано как функция R следующим образом:

utility <- function(weights, returns=returns, VCV=VCV, lambda=lambda) {
    port_ret <- weights %*% returns
    port_var <- t(weights) %*% (weights %*% VCV)
    util <- port_ret - (1/2) * lambda * port_var 
    return(util)
}

Моя проблема оптимизации настроена следующим образом:

# lambda is risk aversion coefficient, VCV is variance/covariance matrix,
# returns is vector of expected asset class returns
objective <- Q_objective(Q = -lambda * VCV, L = returns)

# optimization problem
lp <- OP(objective = objective, maximum = TRUE)

# solution
solution <- ROI_solve(lp, solver = 'quadprog')
optimal_weights <- solution(solution)

По сути, мой вопрос в том, соответствует ли эта целевая функция "Q_objective" тому, что я пытаюсь максимизировать здесь? Я попытался использовать функцию F_objective, но не смог заставить ее работать. Я все еще выясняю пакет ROI, поэтому я не уверен, что это достигло моей цели.

...