You are on page 1of 4

Data

Return:
1.275
1.27 Efficient Fr
1.265 Stocks:
1.26 ATT GM USS

Variance
1.255 Returns: 12
1.25 1.3 1.2 1.08
1.245 Upper Bounds:
1.24 0.75 0.75 0.75 10
1.235 Cov Matrix:
1.23 3 1 -0.5
1.225 1 2 -0.4 8
1.22 -0.5 -0.4 1
1.215
1.21 6
1.205
1.2
1.195 4
1.19
1.185
1.18 2
1.175
1.17
1.165 0
1.16 0 2 4 6
1.155
1.15
Re
1.145
1.14
1.135
1.13
1.125
1.12
1.115

Callbacks: 1920

Page 1
Data

Efficient Frontier

2 4 6 8 10 12
Return

Page 2
Model

SET ECHOIN 1
SET ERRDLG 0
SET TERSEO 1
MODEL:
! GENPRT: Generic Markowitz portfolio;
SETS:
ASSET/1..3/: RATE, UB, X;
COVMAT( ASSET, ASSET): V;
ENDSETS

DATA:
! Expected growth rate of each asset;
RATE = @OLE( 'GENPRT.XLS', 'RATE_OF_RETURN');
! Upper bound on investment in each;
UB = @OLE( 'GENPRT.XLS', 'UPPER_BOUND');
! Covariance matrix;
V = @OLE( 'GENPRT.XLS', 'COV_MTX');
! Desired growth rate of portfolio;
GROWTH = @OLE( 'GENPRT.XLS', 'GROWTH');
ENDDATA

! The model;
! Min the variance;
[VAR] MIN = @SUM( COVMAT( I, J):
V( I, J) * X( I) * X( J));
! Must be fully invested;
[FULL] @SUM( ASSET: X) = 1;
! Upper bounds on each;
@FOR( ASSET: @BND( 0, X, UB));
! Desired value or return after 1 period;
[RET] @SUM( ASSET: RATE * X) >= GROWTH;
DATA:
! Write out objective to sheet;
@OLE( 'GENPRT.XLS', 'VAR_TMP') = VAR;
@OLE( 'GENPRT.XLS', 'STATUS') = @STATUS();
ENDDATA
END
SET DEFAULT
GO
QUIT

Page 3
VAR_TMP= RETURN_OUT: VAR_OUT:
STATUS=
GROWTH=

You might also like