na <- 4
vols <- c(0.10, 0.15, 0.20,0.22)
m <- c(0.06, 0.12, 0.09, 0.07)
const_cor <- function(rho, na) {
C <- array(rho, dim = c(na, na))
diag(C) <- 1
C
}
var <- diag(vols) %*% const_cor(0.5, na) %*% diag(vols)
wmax <- 1 # maximum holding size
wmin <- 0.0 # minimum holding size
rf <- 0.02
if (requireNamespace("quadprog")) {
p1 <- mvFrontier(m, var, wmin = wmin, wmax = wmax, n = 50)
p2 <- mvFrontier(m, var, wmin = wmin, wmax = wmax, n = 50, rf = rf)
plot(p1$volatility, p1$return, pch = 19, cex = 0.5, type = "o",
xlab = "Expected volatility",
ylab = "Expected return")
lines(p2$volatility, p2$return, col = grey(0.5))
abline(v = 0, h = rf)
} else
message("Package 'quadprog' is required")
Run the code above in your browser using DataLab