[R] portfolio optimization in R
Esra Ulasan
esra_ulasan at icloud.com
Thu Nov 20 05:29:26 CET 2014
Dear Sir/Madam,
I am a PhD candidate and writing my dissertation about portfolio optimization in R. However, I have some problems with the codes. It always give the dimension error. Could you help me to fix it?
Yours sincerely,
Here are the codes:
optimization <- function(x) {
mean <- colMeans(x)
names(mean) <-assets.names
p <- ncol(x)
n <- nrow(x)
M <- as.integer(p)
S <- cov(x)
invS<- solve(S)
u <- rep(1,p)
#w <- matrix(rep(0,p), nrow=p)
#r <- seq(0,length=p); w <- cbind (diag(450)); #sum of 1
#constraint <- cbind(diag(450), rep(0, 450)); #non-negativity constraint
a <- matrix(rep(0,4), nrow=2)
a[1,1] <- u%*%invS%*%u;
a[1,2] <- a[2,1] <- u%*%invS%*%mean
a[2,2] <-mean%*%invS%*%mean
d <- a[1,1]*a[2,2]-a[1,2]*a[1,2]
f <- (invS%*%(a[2,2]*u-a[1,2]*mean))/d
g <- (invS%*%(-a[1,2]*u+a[1,1]*mean))/d
rho <- 0.5
r <- seq(0, rho,length= M)
w <- matrix(rep(0, p*M), nrow=p)
for(m in 1:M) w[,m] <- f+r[,m]*g
#w <- f+(rho*g)
w[,m] >=0
sum([,m])==1
s <- sqrt(a[1,1]*((r-a[1,2]/a[1,1])^2)/d+ 1/a[1,1])
ss <- sqrt(diag(S))
names(ss) <- assets.name
minp <- c(sqrt(1/a[1,1]), a[1,2]/a[1,1])
wmimp<- f+(a[1,2]/a[1,1])*g;
tanp <- c(sqrt(a[2,2])/a[1,2], a[2,2]/a[1,2])
wtanp <- f+(a[2,2]/a[1,2])*g;
return(solve(s, r, ss, p, minp, tanp, wminp, wtanp))
}
result=optimization(x)
More information about the R-help
mailing list