Re: Optimizing Non-linear Functions
- To: mathgroup at smc.vnet.net
- Subject: [mg41639] Re: [mg41532] Optimizing Non-linear Functions
- From: Gregory Lypny <gregory.lypny at videotron.ca>
- Date: Thu, 29 May 2003 08:14:09 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hello Everyone,
Thank you for all of the thoughtful responses to my question.
Here's an example I got working very well with NMinimize and the kind
help of Brett Champion who patiently guided me through the syntax (I'm
a newbie).
Objective function X.V.X
The problem is to minimize the quadratic form, X.V.X, with respect to
the elements of the 1 x 3 vector X, and where V is a 3x3 covariance
matrix for the returns on three risky stocks. X.V.X is the variance of
return on an investment portfolio where the investment weights are X
and I want to minimize risk.
Constraints
[1] R.X==.0601 --- the portfolio must have an expected return of
6.01% (a number I chose because it is one of many for which I know the
exact answer). R is a 1x3 vector of expected returns (.06, .08, .14).
[2] X.u==1 -- the investment weights must sum to one or 100% of the
investor's wealth.
[2] All x[i]>=0 --- no short selling allowed. In other words, you
can't have a negative investment in an asset.
The following will yield the answer the blink of an eye.
<< NumericalMath`NMinimize`
NMinimize[{X.V.X, {x[1] ¡Ã 0, x[2] ¡Ã 0, x[3] ¡Ã 0,
R.X == .0601,
X.u == 1}}, {x[1], x[
2], x[3]}, MaxIterations -> 200, Tolerance -> .000001]
The output is
\!\({0.010915515624999986`, {x[1] -> 0.9949999999999994`, x[2] -> \
0.005000000000000456`, x[3] -> 9.128982292327947`*^-17}}\)
which is darn good considering the exact answer is x[1]=.995,
x[2]=.005, and x[3]=0
Regards,
Greg