Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/demo/testing_GenSA.R
1433 views
1
#' ---
2
#' title: "GenSA Demo"
3
#' date: "7/17/2014"
4
#' ---
5
6
#' This script demonstrates running optimizations using GenSA as the
7
#' optimization backend. Note that this script uses the v1 specification
8
#' previous to version 0.8.3.
9
10
#' Load packages
11
library(PortfolioAnalytics)
12
library(GenSA)
13
14
#' Load data and set general Parameters for sample code
15
data(edhec)
16
N <- 4
17
R <- edhec[,1:N]
18
funds <- names(R)
19
mu.port <- mean(colMeans(R))
20
21
#' Define problem with constraints and objectives
22
gen.constr <- constraint(assets = funds, min=-2, max=2, min_sum=0.99, max_sum=1.01, risk_aversion=1)
23
gen.constr <- add.objective(constraints=gen.constr, type="return", name="mean", enabled=FALSE, target=mu.port)
24
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="var", enabled=FALSE, risk_aversion=10)
25
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="CVaR", enabled=FALSE)
26
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="sd", enabled=FALSE)
27
28
#' Max return under box constraints, fully invested
29
max.port <- gen.constr
30
max.port$min <- rep(0.01,N)
31
max.port$max <- rep(0.30,N)
32
max.port$objectives[[1]]$enabled <- TRUE
33
max.port$objectives[[1]]$target <- NULL
34
max.port$objectives[[1]]$multiplier <- -1
35
max.solution <- optimize.portfolio(R=R, constraints=max.port, optimize_method="GenSA", trace=TRUE)
36
37
#' Mean-variance: Fully invested, Global Minimum Variance Portfolio
38
gmv.port <- gen.constr
39
gmv.port$objectives[[4]]$enabled <- TRUE
40
gmv.solution <- optimize.portfolio(R=R, constraints=gmv.port, optimize_method="GenSA", trace=TRUE)
41
42
#' Minimize CVaR with target return
43
cvar.port <- gen.constr
44
cvar.port$min <- rep(0,N)
45
cvar.port$max <- rep(1,N)
46
cvar.port$objectives[[3]]$enabled <- TRUE
47
cvar.port$objectives[[3]]$arguments <- list(p=0.95, clean="boudt")
48
cvar.solution <- optimize.portfolio(R=R, constraints=cvar.port, optimize_method="GenSA")
49
50
51