Portföljanalys på avancerad nivå i R
Ross Bennett
Instructor
Många lösare är inte specifika för portföljoptimering
Det krävs förståelse för lösarnas kapacitet och begränsningar för att välja rätt lösare eller formulera problemet korrekt
Svårt att byta mellan lösare
Lösare med sluten form (t.ex. kvadratisk programmering)
Global lösare (t.ex. differentialevolutionsoptimering)
$$\omega_{i} >= 0$$
$$\sum_{i=1}^{n} \omega_i = 1$$
Använd R-paketet quadprog för att lösa optimeringsproblemet med kvadratisk nytta
solve.QP() löser kvadratiska programmeringsproblem på formen:
$$min(-d^Tb+\frac{1}{2}b^TDb)$$
$$A^Tb>=b_0$$
library(quadprog)
data(edhec)
dat <- edhec[,1:4]
# Create the constraint matrix
Amat <- cbind(1, diag(ncol(dat)), -diag(ncol(dat)))
# Create the constraint vector
bvec <- c(1, rep(0, ncol(dat)), -rep(1, ncol(dat)))
# Create the objective matrix
Dmat <- 10 * cov(dat)
# Create the objective vector
dvec <- colMeans(dat)
# Specify number of equality constraints
meq <- 1
# Solve the optimization problem
opt <- solve.QP(Dmat, dvec, Amat, bvec, meq)
Portföljanalys på avancerad nivå i R