GuaranteeModel : Managing insurance policies with guarantee - The Prometeia Model.

Description

GuaranteeModel.gms: Managing insurance policies with guarantee - The Prometeia Model.
Consiglio, Nielsen, Vladimirou and Zenios: A Library of Financial Optimization Models, Section 7.4
See also Zenios: Practical Financial Optimization, Chapter 12.
Last modified: Nov. 2005.


Category : GAMS FIN library


Mainfile : GuaranteeModel.gms   includes :  GuaranteeCommonInclude.inc  AssetReturns-Guarantee.inc  AbandonProbabilities.inc  PeriodicCapFactors.inc  CapFactors.inc

* GuaranteeModel.gms: Managing insurance policies with guarantee - The Prometeia Model.
* Consiglio, Nielsen, Vladimirou and Zenios: A Library of Financial Optimization Models, Section 7.4
* See also Zenios: Practical Financial Optimization, Chapter 12.
* Last modified: Nov. 2005.


$INCLUDE "GuaranteeCommonInclude.inc"

$INCLUDE "AssetReturns-Guarantee.inc";
$INCLUDE "AbandonProbabilities.inc";
$INCLUDE "PeriodicCapFactors.inc";
$INCLUDE "CapFactors.inc";


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


FREE VARIABLES
   PRT(l,t)        Portfolio Return.
   EUROE           Expected Utility Return On Equity;


EQUATIONS
   OFe           Objective Function equation.
   BAe           Balance equation.
   PRTd(l,t)     Portfolio return dynamics.
   YPMd(l,t)     Equations defining the yPlus and yMinus dynamics;


OFe..  EUROE =E= (1.0/CARD(l)) * SUM(l, LOG (((1+rho) *
       PROD (t, (1+PRT(l,t))) + SUM(t, ((YM(l,t) - (abp(t) * (1.0 + mig + YP(l,t)))) *
       PROD(k$(ORD(k) > ORD(t)), (1.0 + PRT(l,k))) *
       PROD(k$(ORD(k) < ORD(t)), ((1 - abp(k)) * (1.0 + mig +  YP(l,k)))))) -
       PROD(t,((1 - abp(t)) * (1.0 + mig + YP(l,t))))) / (( rho * cf(l)) +
       SUM(t, YM(l,t) * pcf(l,t) * PROD(k$(ORD(k) < ORD(t)),
       ((1 - abp(k)) * (1.0 + mig +  YP(l,k))))))
      )
    );


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

PRTd(l,t)..    PRT(l,t) =E= SUM(i, (HO(i) * ar(l,t,i)));

YPMd(l,t)..   (ptr * PRT(l,t) - mig) =E= YP(l,t) - YM(l,t);


MODEL PrometeiaModel 'PFO 12.4.1' /ALL/;

* Guess an initial solution and set bounds on variables

HO.UP(i) = 1.0;

HO.L(i) = 0.0;
HO.L('AA_1') = 0.8;
HO.L('AA_2') = 0.2;

PRT.L(l,t) = SUM(i, (HO.L(i) * ar(l,t,i)));
YM.L(l,t) = - MIN ((ptr * PRT.L(l,t) - mig), 0);
YP.L(l,t) = MAX ((ptr * PRT.L(l,t) - mig), 0);


SOLVE PrometeiaModel USING NLP MAXIMIZING EUROE;


* Post Optimization Calculation and Output

SCALARS
   OptimalCeXRoe     Optimal certainty equivalent excess Return-On-Equity
   AnnualNetCeXRoe   Annual equivalent, net of tax, of the  OptimalCeXRoe
   ExpGuarCost       Expected guarantee cost;

PARAMETERS
   FinalEquity(l)   Final equity level;


OptimalCeXRoe = EXP ( EUROE.L );

FinalEquity(l) = ( rho * cf(l) ) +
                  SUM(t, YM.L(l,t) * pcf(l,t) *
                  PROD( k$(ORD(k) < ORD(t)),
                  ((1 - abp(k)) * (1.0 + mig +  YP.L(l,k)))));

ExpGuarCost = (1.0 / CARD(l) ) * SUM (l, (FinalEquity(l) / cf(l)) - (rho * ili) );

AnnualNetCeXRoe = ((OptimalCeXRoe)**(1/CARD(t)) - 1) * (1 - txr);

FILE ResultHandle /"InsuranceResults.csv"/;

ResultHandle.pc = 5;
ResultHandle.pw = 1048;

PUT ResultHandle;

PUT "Number of scenarios", CARD(l):0:0/;
PUT "Partecipation rate", ptr:0:3/;
PUT "Minimum guarantee", mig:0:4/;
PUT "Equity ratio", rho:0:3/;
PUT "Model status", PrometeiaModel.MODELSTAT:0:0/;

PUT "Portfolio composition" /;
LOOP ( i $HO.L(i),
       PUT i.TL,i.TE(i),HO.L(i):12:8/
);

PUT "CExROE","Annual net CExROE","Cost of minimum guarantee"/;
PUT OptimalCeXRoe:12:8,AnnualNetCeXRoe:12:8,ExpGuarCost:12:8/;

PARAMETER YPYM(l,t);

YPYM(l,t) = YP.L(l,t) * YM.L(l,t);

DISPLAY YPYM;