$ondollar title Quadratic Protfolio (NLP) Example 14.5 of Rardin (1998) $offsymxref offsymlist offuelxref offuellist offupper option limrow = 0, limcol = 0; sets i "investment 1=stocks, 2=money market, 3=bonds" /1*3/, t "years" /1*6/; alias (i,j); table hist(i,t) "historical percent returns" 1 2 3 4 5 6 1 22.24 16.16 5.27 15.46 20.62 -0.42 2 9.64 7.06 7.68 8.26 8.55 8.26 3 10.08 8.16 8.46 9.18 9.26 9.03; parameter avg(i) "average return for category i"; avg(i) = sum(t, hist(i,t)) / card(t); display avg; parameter v(i,j) "variance/covariance of i vs j return"; v(i,j) = sum(t, hist(i,t)*hist(j,t)) / card(t) - sum(t, hist(i,t)) * sum(t, hist(j,t)) / sqr(card(t)); display v; scalar minrtn "minimum require rate of return" /11/; free variable variance "variance of the return"; positive variable x(i) "fraction invested in category i"; equations obj "minimize variance of return", allin "fractions total 1", req "required average return"; obj.. variance =e= sum((i,j), v(i,j)*x(i)*x(j)); allin.. sum(i, x(i)) =e= 1; req.. sum(i, avg(i)*x(i)) =g= minrtn; model portfolo /all/; solve portfolo using nlp minimizing variance;