我有一个投资组合优化问题,在这个问题中,我试图通过更改投资组合资产权重(受各种限制)来最大化二次效用函数。我目前正在为此使用ROI软件包。现在让我们假设没有约束,因为我的问题涉及目标函数。
我有一个预期收益(“ returns”),风险规避系数(“ lambda”)和方差/协方差矩阵(“ 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软件包,因此不确定是否可以实现我的目标。