Also, ' methods("portfolio.optim")' revealed 2 functions for this generic:

[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

Reply via email to