Description
CorporateCVaR.gms: Conditional Value at Risk models for corporate bond management. Consiglio, Nielsen and Zenios. PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.3 Last modified: May 2008.
Category : GAMS FIN library
Mainfile : CorporateCVaR.gms includes : CorporateCommonInclude.inc CorporateScenarios.inc
$title Conditional Value at Risk models for corporate bond management
* CorporateCVaR.gms: Conditional Value at Risk models for corporate bond management.
* Consiglio, Nielsen and Zenios.
* PRACTICAL FINANCIAL OPTIMIZATION: A Library of GAMS Models, Section 8.3
* Last modified: May 2008.
$include "CorporateCommonInclude.inc"
$include "CorporateScenarios.inc"
SCALARS
Budget Nominal investment budget
alpha Confidence level
MU_TARGET Target portfolio return
MU_STEP Target return step
MIN_MU Minimum return in universe
MAX_MU Maximum return in universe;
Budget = 100.0;
alpha = 0.997;
PARAMETERS
pr(l) Scenario probability
P(i,l) Final values
EP(i) Expected final values;
pr(l) = 1.0 / CARD(l);
P(i,l) = 1 + AssetReturns ( i, l );
EP(i) = SUM(l, pr(l) * P(i,l));
MIN_MU = SMIN(i, EP(i));
MAX_MU = SMAX(i, EP(i));
* Assume we want 20 portfolios in the frontier
MU_STEP = (MAX_MU - MIN_MU) / 20;
DISPLAY P,EP,MIN_MU,MAX_MU;
POSITIVE VARIABLES
x(i) Holdings of assets in monetary units (not proportions)
VaRDev(l) Measures of the deviations from the VaR;
VARIABLES
VaR Value-at-Risk
ObjValue Objective function value
Losses(l) Measures of the losses;
EQUATIONS
BudgetCon Equation defining the budget contraint
ReturnCon Equation defining the portfolio return constraint
ObjDefCVaR Objective function definition for CVaR minimization
LossDef(l) Equations defining the losses
VaRDevCon(l) Equations defining the VaR deviation constraints;
BudgetCon .. SUM(i, x(i)) =E= Budget;
ReturnCon .. SUM(i, EP(i) * x(i)) =G= MU_TARGET * Budget;
VaRDevCon(l) .. VaRDev(l) =G= Losses(l) - VaR;
LossDef(l).. Losses(l) =E= (Budget - SUM(i, P(i,l) * x(i)));
ObjDefCVaR .. ObjValue =E= VaR + SUM(l, pr(l) * VaRDev(l)) / (1 - alpha);
MODEL MinCVaR 'PFO Model 5.5.1' /BudgetCon, ReturnCon, LossDef, VaRDevCon, ObjDefCVaR/;
FILE FrontierHandle /"CVaRFrontiers.csv"/;
FrontierHandle.pc = 5;
FrontierHandle.pw = 1048;
PUT FrontierHandle;
PUT "Status","VaR","CVaR","Mean";
LOOP(i, PUT i.tl);
PUT /;
FOR (MU_TARGET = MIN_MU TO MAX_MU BY MU_STEP,
SOLVE MinCVaR MINIMIZING ObjValue USING LP;
PUT MinCVaR.MODELSTAT:0:0,VaR.l:6:5,ObjValue.l:6:5,(MU_TARGET * Budget):8:3;
LOOP (i, PUT x.l(i):6:2);
PUT /;
);