library(PortfolioAnalytics)
library(DEoptim)
data(edhec)
R <- edhec[, 1:5]
funds <- colnames(R)
init.portf <- portfolio.spec(assets=funds)
init.portf <- add.constraint(portfolio=init.portf, type="leverage",
min_sum=0.99, max_sum=1.01)
init.portf <- add.constraint(portfolio=init.portf, type="long_only")
MeanES.portf <- add.objective(portfolio=init.portf, type="return", name="mean")
MeanES.portf <- add.objective(portfolio=MeanES.portf, type="risk", name="ES")
MeanSD.portf <- add.objective(portfolio=init.portf, type="return", name="mean")
MeanSD.portf <- add.objective(portfolio=MeanSD.portf, type="risk_budget",
name="StdDev", max_prisk=0.35)
ESRB.portf <- add.objective(portfolio=init.portf, type="risk", name="ES")
ESRB.portf <- add.objective(portfolio=ESRB.portf, type="risk_budget",
name="ES", min_concentration=TRUE)
MeanES.opt <- optimize.portfolio(R=R, portfolio=MeanES.portf,
optimize_method="DEoptim", search_size=2000,
trace=TRUE)
MeanSD.opt <- optimize.portfolio(R=R, portfolio=MeanSD.portf,
optimize_method="DEoptim", search_size=2000,
trace=TRUE)
ESRB.opt <- optimize.portfolio(R=R, portfolio=ESRB.portf,
optimize_method="DEoptim", search_size=2000,
trace=TRUE)
opt <- combine.optimizations(list(MeanES=MeanES.opt, MeanSD=MeanSD.opt, ESRB=ESRB.opt))
obj <- extractObjectiveMeasures(opt)
weights <- extractWeights(opt)
chart.RiskBudget(opt, match.col="StdDev", risk.type="percentage", ylim=c(0,1), legend.loc="topright")
chart.RiskBudget(opt, match.col="ES", risk.type="percentage", ylim=c(-0.2,1), legend.loc="topright")
chart.RiskBudget(opt, match.col="ES", risk.type="percentage", plot.type="bar", ylim=c(-0.2,1), legend.loc="topright")
chart.Weights(opt, ylim=c(0,1))
chart.Weights(opt, plot.type="bar", ylim=c(0,1))
chart.RiskReward(opt, main="Optimal Portfolios")
chart.RiskReward(opt, risk.col="StdDev", main="Optimal Portfolios")