Corporate : Corporate bond indexation model

Description

```Corporate.gms: Corporate bond indexation model
Consiglio, Nielsen and Zenios.
PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.3
```

Category : GAMS FIN library

Mainfile : Corporate.gms   includes :  CorporateCommonInclude.inc  CorporateScenarios.inc

``````\$TITLE  Corporate bond indexation model

* Corporate.gms: Corporate bond indexation model
* Consiglio, Nielsen and Zenios.
* PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.3

\$INCLUDE "CorporateCommonInclude.inc"

\$INCLUDE "CorporateScenarios.inc"

PARAMETER
AssetWeights(i) Weights of each asset in the index;

* Assign weights randomly

AssetWeights(i) = UNIFORM(1,10);

DISPLAY  AssetWeights;

* Normalize the random weights

SCALAR
WeightsSum;

WeightsSum = SUM(i, AssetWeights(i) );

AssetWeights(i) = AssetWeights(i) / WeightsSum;

PARAMETER
IndexReturns(l)           Index return scenarios
Benchmark(l)              Current benchmark scenario returns;

BroadAssetReturns('BA_1',l) = SUM(m1, AssetWeights(m1) * AssetReturns(m1,l));
BroadAssetReturns('BA_2',l) = SUM(m2, AssetWeights(m2) * AssetReturns(m2,l));
BroadAssetReturns('BA_3',l) = SUM(m3, AssetWeights(m3) * AssetReturns(m3,l));

SCALAR
CurrentWeight    Current weight for tactcal allocation
EpsTolerance     Tolerance;

PARAMETERS
pr(l)       Scenario probability;

pr(l) = 1.0 / CARD(l);

POSITIVE VARIABLES
x(i)            Percentage invested in each security
z(j)            Percentages invested in each broad asset class;

FREE VARIABLES
PortRet(l)      Portfolio returns
ObjValue        Objective function value;

EQUATIONS
ObjDef                     Objective function for the strategic model (Expected return)
PortRetDef(l)              Portfolio return definition
NormalCon                  Equation defining the normalization contraint

ObjDef..                ObjValue =E= SUM(l, pr(l) * PortRet(l));

PortRetDef(l)..         PortRet(l) =E= SUM(a, x(a) * AssetReturns(a,l));

MADCon(l)..             PortRet(l) =G= Benchmark(l) - EpsTolerance;

NormalCon..             SUM(a, x(a)) =E= CurrentWeight;

OPTION SOLVEOPT = REPLACE;

MODEL TacticalModel 'PFO Model 11.5.2' /ObjDef,PortRetDef,MADCon,NormalCon/;

* Solve strategic model

Benchmark(l) = IndexReturns(l);

EpsTolerance = 0.02;

SOLVE StrategicModel USING LP MAXIMIZING ObjValue;

DISPLAY "Strategic Asset Allocation";
DISPLAY z.l;

* Solve tactical model for Broad Asset 1 (BA_1)

CurrentWeight = z.l('BA_1');

EpsTolerance = 0.02;

IF( CurrentWeight > 0.05,

SOLVE TacticalModel USING LP MAXIMIZING ObjValue;

DISPLAY "Model BA_1"
DISPLAY a;

DISPLAY x.l;
);

* Solve tactical model for Broad Asset 2 (BA_2)

CurrentWeight = z.l('BA_2');

EpsTolerance = 0.03;

IF( CurrentWeight > 0.05,

SOLVE TacticalModel USING LP MAXIMIZING ObjValue;

DISPLAY "Model BA_2"
DISPLAY a;

DISPLAY x.l;

);

* Solve tactical model for Broad Asset 3 (BA_3)

CurrentWeight = z.l('BA_3');

EpsTolerance = 0.02;

IF( CurrentWeight > 0.05,

SOLVE TacticalModel USING LP MAXIMIZING ObjValue;

DISPLAY "Model BA_3"
DISPLAY a;

DISPLAY x.l;

);

* Solve integrated model

CurrentWeight = 1.0;

Benchmark(l) = IndexReturns(l);

EpsTolerance = 0.02;

ACTIVE(i) = YES;

SOLVE TacticalModel USING LP MAXIMIZING ObjValue;

DISPLAY "Model Integrated"
DISPLAY a;

DISPLAY x.l;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170
GAMS is a registered trademark of GAMS Software GmbH in the European Union