set Products; param Returns_Bull{Products}; param Jumps_Bull{Products}; param Jumps_Bear{Products}; param Returns_Bear{Products}; param Returns_Neut{Products}; param COV_BULL{Products,Products}; param COV_BEAR{Products,Products}; param aversion default 10; param neut_prob; param bull_prob; param bear_prob; var Return; var Risk; var ReturnNeut; var ReturnBull; var ReturnBear; var w{Products} >=0; maximize obj: Return - aversion * Risk; subject to con1: Return = (sum{j in Products} w[j]*Returns_Bull[j]*bull_prob) + (sum{j in Products} w[j]*Returns_Bear[j]*bear_prob) + (sum{j in Products} w[j]*Returns_Neut[j]*neut_prob); con5: Risk = sqrt( sum{i in Products} w[i]* (sum{j in Products} (Jumps_Bear[j]/100*COV_BULL[i,j] + COV_Bear[i,j]*w[j] ) ); total:sum{i in Products} w[i] = 1;