MODEL:
 ! Maximize the Information ratio of a portfolio,
  using the scenario approach for describing randomness.
  A portfolio has a high information ratio if its expected
  return is high relative to the benchmark, but also
  tends to move (be correlated) with the benchmark.
The information ratio is:
( Avg return of portfolio - average return of benchmark)
     /(SD of tracking error);
! Keywords: Portfolio selection, Benchmark portfolio,
   Information ratio, Scenario method;
SETS:
  SCENE: R, DVU, DVL;
  ASSET:  X;
  SXI( SCENE, ASSET): VE;
ENDSETS
DATA: SCENE = 1..12; ! Data based on original Markowitz example; ASSET= SP500 ATT GMC USX; ! The ending values for each scenario, all considered equally likely; VE = 1.259 1.300 1.225 1.149 1.198 1.103 1.290 1.260 1.364 1.216 1.216 1.419 0.919 0.954 0.728 0.922 1.057 0.929 1.144 1.169 1.055 1.056 1.107 0.965 1.188 1.038 1.321 1.133 1.317 1.089 1.305 1.732 1.240 1.090 1.195 1.021 1.184 1.083 1.390 1.131 0.990 1.035 0.928 1.006 1.526 1.176 1.715 1.908; BENCH = 1; ! The column that is the benchmark; ENDDATA NP = @SIZE( SCENE); ! Number of scenarios(observations); @FOR( SCENE( S): ! Compute end value under each scenario of portfolio; R( S) = @SUM( ASSET( J) | J #NE# BENCH: VE( S, J) * X( J)); ! Measure deviations up and below average difference from the benchmark; DVU( S) - DVL( S) = R(S) - VE( S, BENCH) - (AVGP - AVGB); ); ! Compute expected value of ending position of portfolio; AVGP = @SUM( SCENE( s): R( s) )/ NP ; ! Compute expected end value of benchmark; AVGB = @SUM( SCENE( s): VE( s, BENCH) )/ NP ; ! Budget constraint; @SUM( ASSET(i): X(i)) = 1; ! Variance of portfolio from the bennchmark (tracking error); SD^2 >= @SUM( SCENE( s): ( DVU( s) + DVL(s))^2)/NP; ! Maximize the information ratio of the portfolio; [OBJ] MAX = (AVGP - AVGB)/ SD; END