[1] portfolio.optim.default portfolio.optim.ts
Typing "portfolio.optim.ts" exposes the code for the second one. If the class of the first argument "x" is "ts", R dispatches "portfiolio.optim(x, ...)" to "portfolio.optim.ts(x, ...)". Otherwise, it is dispatched to "portfolio.optim.default(x,...)".
hope this helps. spencer graves
Achim Zeileis wrote:
On Thu, 13 Jan 2005 14:07:29 -0500 roger bos wrote:
Zeileis,
Thanks, I didn't know about "portfolio.optim". I wanted to see how it
works, but when I try showMethods, it doesn't show it to me. Does
that mean I am not allowed to see the inner workings?
1. All of this is open source, so you are *always* allowed to look at the sources. (If you haven't got a version of the source package, then you can always get it from CRAN.) 2. showMethods() is for S4 generics, portfolio.optim is an S3 generic. 3. Simply typing portfolio.optim.default at the prompt should print the function. Z
Thanks,
Roger
showMethods("portfolio.optim")Function "portfolio.optim":
<not a generic function>
On Thu, 13 Jan 2005 19:58:33 +0100, Achim Zeileis
<[EMAIL PROTECTED]> wrote:
On Thu, 13 Jan 2005 13:44:58 -0500 roger bos wrote:
At the risk of ridicule for my deficient linear algebra skills, I
ask for help using the solve.QP function to do portfolio
optimization. I am trying to following a textbook example and
need help converting the problem into the format required by
solve.QP. Below is my sample code if anyone is willing to go
through it. This problem will not solve because it is not set up
properly. I hope I included enough details for someone to deciper
it. Or does anyone have a good example they can send me?
You can look at the man page, code and example of the function portfolio.optim() in package tseries which does portfolio optimization based on solve.QP from quadprog.
hth, Z
Thanks so much for any hints and suggestions, Roger.
library(quadprog, lib.loc="C:\\Program Files\\R\\tools") library(MASS, lib.loc="C:\\Program Files\\R\\tools") n<-100 m<-200 rho<-0.7 sigma<-0.2 mu<-0.1 Cov <- matrix(rho*sigma*sigma, ncol=n, nrow=n) diag(Cov) <- rep(sigma*sigma, n) S <- 1+matrix(mvrnorm(m, rep(mu, n), Sigma=Cov), ncol=n)
#The problem is formulated as minimize t(b) Cov b #subject to cLo <= A <= cUp #and bLo=0 <= w <= 1=bUp
Cov <- var(S) mu <- apply(S, 2, mean) mu.target <- 0.1 #subject to cLo <= A <= cUp and bLo=0 <= b <= 1=bUp A <- rbind(1,mu) cLo <- c(1, mu.target) cUp <- c(1, Inf) bLo <- rep(0, n) bUp <- rep(1, n)
#I convert [cLo <= A <= cUp] to Amat >= bvec and [bLo=0 <= w ##<=1=bUp] to Amat <- rbind(-1, 1, -mu, mu) dim(bLo) <- c(n,1) dim(bUp) <- c(n,1) bvec <- rbind(-1, 1, mu.target, Inf, bLo, -bUp) zMat <- matrix(rep(0,2*n*n),ncol=n, nrow=n*2) zMat[,1] <- c(rep(1,n), rep(-1,n)) Amat <- t(rbind(Amat, zMat))
#So I set Dmat=Cov and set dvec=0 Dmat=Cov dvec=rep(0, nrow(Amat))
#The first two rows of Amat should be equality constraints (so #weights sum to 1) meq <- 2
sol <- solve.QP(Dmat=Dmat, dvec=dvec, Amat=Amat, bvec=bvec, meq) sol
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html