PersonalAssetAllocation : PAA.gms: Personal asset allocation.

Description

```PersonalAssetAllocation.gms: Personal Asset Allocation.
Consiglio, Nielsen and Zenios.
PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.5
```

Category : GAMS FIN library

``````\$TITLE Personal Asset Allocation

* PersonalAssetAllocation.gms: Personal Asset Allocation.
* Consiglio, Nielsen and Zenios.
* PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.5

\$INCLUDE "PersonalCommonInclude.inc";

PARAMETER ar(l,t,i)
/
\$ONDELIM
\$INCLUDE "AssetReturns-PersonalAssetAllocation.inc";
\$OFFDELIM
/;

PARAMETER lblty(l,t)
/
\$ONDELIM
\$INCLUDE "LiabilityScenarios.inc";
\$OFFDELIM
/;

PARAMETER infltn(l,t)
/
\$ONDELIM
\$INCLUDE "InflationScenarios.inc"
\$OFFDELIM
/;

PARAMETER cfs(l,t)
/
\$ONDELIM
\$OFFDELIM
/;

POSITIVE VARIABLES
HO(i)           Asset holdings
YP(l,t)         yPlus - surplus in excess of  growth rate.
YM(l,t)         yMinus - deficit in lack of growth rate.;

FREE VARIABLES
OF              Objective function value;

EQUATIONS
OFe             Objective Function equation (Call).
OFPCe           Objective Function equation (Call - lambda * Put).
BAe             BAlance equation.
PUTe            Constraint to bound the expected value of the negative deviations.
YPMd(l,t)       Equations defining the yPlus and yMinus dynamics;

OFe..          OF =E= (1.0/CARD(l)) * SUM(l, SUM(t, lblty(l,t) * YP(l,t) * cfs(l,t)));

OFPCe..        OF =E= (1.0/CARD(l)) * (SUM(l, SUM(t, lblty(l,t) * YP(l,t) * cfs(l,t))) -
lambda * SUM(l, SUM(t,lblty(l,t) * YM(l,t) * cfs(l,t))));

PUTe ..        SUM(l, SUM(t,lblty(l,t) * YM(l,t) * cfs(l,t))) / CARD(l)  =L= omega;

BAe..          SUM(i, HO(i)) =E= ipv;

YPMd(l,t)..  SUM( i, (HO(i) * ar(l,t,i))) - (grr + infltn(l,t)) =E= YP(l,t) - YM(l,t);

*  Model that maximizes the Call side with  bound on the Put side

MODEL PersonalModelOne 'PFO Model 13.5.1' /OFe,PUTe,BAe,YPMd/;

PersonalModelOne.RESLIM = 100000000;
PersonalModelOne.ITERLIM = 100000000;

HO.UP(i) = ipv;

SOLVE PersonalModelOne USING LP MAXIMIZING OF;

FILE AssetAllocationHandle /"PAA.csv"/;

AssetAllocationHandle.pc = 5;
AssetAllocationHandle.pw = 1048;

PARAMETER
YpYm(l,t);

YpYm(l,t) = YP.l(l,t) * YM.l(l,t);

DISPLAY YpYm,PUTe.M;

PUT AssetAllocationHandle;

PUT "Maximize the Call side with bound on the Put side"/;

LOOP(i,

PUT CARD(l):0:0,CARD(t):0:0,nbryears:0:0,omega:0:3,agrr:0:4,i.TL,i.TE(i),HO.L(i):12:8/;

);

*  Model that maximizes the Call side and minimize the Put side

MODEL PersonalModelTwo /OFPCe,BAe,YPMd/;

PersonalModelTwo.RESLIM = 100000000;
PersonalModelTwo.ITERLIM = 100000000;

HO.UP(i) = ipv;

SOLVE PersonalModelTwo USING LP MAXIMIZING OF;

YpYm(l,t) = YP.l(l,t) * YM.l(l,t);

DISPLAY YpYm;

PUT "Maximize the Call side and minimize the Put side"/;

LOOP(i,

PUT CARD(l):0:0,CARD(t):0:0,nbryears:0:0,lambda:0:3,agrr:0:4,i.TL,i.TE(i),HO.L(i):12:8/;

);
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170