Квадратичная максимизация полезности портфеля с использованием пакета ROI в R, возвращающего результат с распределением на один актив

#r #quadratic-programming #r-portfolioanalytics #r-optimization

Вопрос:

Я просматривал учебник по пакету ROI, в частности раздел 4: Максимизация квадратичной полезности. Цель состоит в том, чтобы найти оптимальный портфель из 4 активов, который максимизирует ожидаемую доходность, а также наказывает целевую функцию за повышенный риск портфеля. Решатель возвращает портфель, полностью распределенный в активе, с наименьшей дисперсией, что не соответствует ожидаемому результату. Может быть, я каким-то образом неправильно указал проблему?

 library(PortfolioAnalytics)
library(foreach)
library(iterators)
library(ROI)
library(ROI.plugin.quadprog)
library(ROI.plugin.glpk)

# Create Initial Portfolio Object
init_portf <- portfolio.spec(assets=funds)

# Create Full investment constraint
fi_constr <- weight_sum_constraint(type="full_investment")

# Create Long only constraint
lo_constr <- box_constraint(type="long_only", assets=init_portf$assets)

# Combine constraints into a list
qu_constr <- list(fi_constr, lo_constr)

# Create a return objective
ret_obj <- return_objective(name="mean")

# Create variance objective specifying a risk_aversion parameter which controls
# how much the variance is penalized
var_obj <- portfolio_risk_objective(name="var", risk_aversion=0.25)

# Combine the objectives into a list
qu_obj <- list(ret_obj, var_obj)

# Run optimization
opt_qu <- optimize.portfolio(R=returns, portfolio=init_portf, 
                             constraints=qu_constr, 
                             objectives=qu_obj,
                             optimize_method="ROI",
                             trace=TRUE)

print(opt_qu)