MODEL:
! Downside risk portfolio model;
SETS:
    ASSET/ ATT GMC USX/ :
        INVEST;  ! Amount to invest in each asset;
    SCENARIO/1..7/:
        TRETRN,  ! Return under this scenario;
        DRISK;   ! Downside risk under this scenario;
    TABLE( SCENARIO, ASSET):
        ARETRN;  ! Return under scenario I of asset J;
 ENDSETS
DATA: ! Desired return; DRETURN = .13; ! Threshold, below which we are unhappy; THRESH = .11; ! Power to use for risk(1 or 2); ! When NPOW = 1, it is a linear program; ! When NPOW = 2 and threshold = desired return; ! it is the semi-variance; NPOW = 2; ARETRN = -.071 .144 .169 .056 .107 -.035 .038 .321 .133 .089 .305 .732 .090 .195 .021 .083 .390 .131 .035 -.072 .006; ENDDATA ! Minimize average downside risk; MIN = @SUM( SCENARIO: DRISK ^ NPOW)/ 7; ! Compute return for each scenario; @FOR( SCENARIO( I): TRETRN( I) = @SUM( ASSET( J): ARETRN( I, J) * INVEST( J)); ! .. and how much we fall short of threshold ; DRISK( I) >= THRESH - TRETRN( I); ! Return in a period could be negative; @FREE( TRETRN( I)); ); ! Our budget constraint(divided by a billion); [BUDGET] @SUM( ASSET: INVEST ) = 1; ! Our desired return; [PRICER] @SUM( SCENARIO( I): TRETRN( I))/ 7 >= DRETURN; END