set SECURITIES; param K >= 0.0; # utility parameter param interest >= 0.0; # riskless return on bond param r{SECURITIES}; param sigma{i in SECURITIES}; param rho{SECURITIES,SECURITIES}; param q{i in SECURITIES, j in SECURITIES} := rho[i,j] * sigma[i] * sigma[j]; var x{SECURITIES} >= 0; # do not allow short sales var bond >= 0; minimize obj: 0.5 * K * sum{i in SECURITIES, j in SECURITIES} q[i,j] * x[i] * x[j] - sum{i in SECURITIES} r[i]*x[i] - interest * bond; subject to fully_invested : sum{i in SECURITIES} x[i] + bond = 1.0;