설명
Immunization.gms: 예방접종 모델. 콘실리오, 닐슨, 제니오스. 실제 재무 최적화: 메가 슬롯 모델 라이브러리, 섹션 4.4 최종 수정 날짜: 2008년 4월.
카테고리 : 메가 슬롯 FIN 라이브러리
메인파일 : Immunization.gms 다음을 포함합니다: BondData.inc SpotRates.inc YieldRates.inc
$title 예방접종 모델
* Immunization.gms: 예방접종 모델.
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 메가 슬롯 모델 라이브러리, 섹션 4.4
* 최종 수정일: 2008년 4월.
SET 시간 기간 /2001 * 2011/;
별칭(시간, t, t1, t2);
스칼라
현재 올해
지평선 끝의 지평선;
지금 = 2001;
지평선 = CARD(t)-1;
매개변수
tau(t) 시간(년)입니다.
* 참고: 시간은 0부터 시작됩니다.
타우(t) = ORD(t)-1;
세트
채권 채권의 세계
/DS-8-06, DS-8-03, DS-7-07,
DS-7-04, DS-6-11, DS-6-09,
DS-6-02, DS-5-05, DS-5-03, DS-4-02 /;
ALIAS(채권, i);
매개변수
쿠폰(i) 쿠폰
만기(i) 만기
부채(t) 부채의 흐름
F(t,i) 현금흐름;
* 채권 데이터. 덴마크 시장의 가격, 쿠폰 및 만기
$include "BondData.inc"
* 데이터 복사/변환. 단위 데이터를 얻기 위해 100으로 나누는 것을 기록하고,
* 만기일에서 "지금"을 뺍니다(타우와 일치함).
Coupon(i) = BondData(i,"쿠폰")/100;
Maturity(i) = BondData(i,"Maturity") - 현재;
* t년차 채권 i의 쿠폰 적용 전 현금흐름을 계산합니다.
F(t,i) = 1$(tau(t) = 성숙도(i))
+ 쿠폰(i) $ (tau(t) <= 만기(i) 및 tau(t) > 0);
매개변수
부채(t) 부채
/2002 = 80000, 2003 = 100000, 2004 = 110000, 2005 = 120000,
2006 = 140000, 2007 = 120000, 2008 = 90000, 2009 = 50000,
2010 = 75000, 2011 = 150000/;
* 현물 요금 읽기
매개변수 r(t)
/
$onDelim
$include "SpotRates.inc"
$offDelim
/;
* 수율 읽기
매개변수 y(i)
/
$onDelim
$include "YieldRates.inc"
$offDelim
/;
* 현재가치, Fischer-Weil 지속시간(D^FW)은 다음과 같습니다.
채권과 부채 모두에 대한 * 및 볼록성(Q_i):
* 현재 가치, Fisher & Weil 기간 및 볼록성
* 채권.
매개변수
PV(i) 자산의 현재 가치
기간(i) 자산 기간
전환율(i) 자산의 볼록성;
* 현재 가치, Fisher & Weil 기간 및 볼록성
* 책임.
매개변수
PV_Liab 부채의 현재 가치
Dur_Liab 책임 기간
Conv_Liab 책임의 볼록성;
PV(i) = SUM(t, F(t,i) * exp(-r(t) * tau(t)));
Dur(i) = ( 1.0 / PV(i) ) * SUM(t, tau(t) * F(t,i) * exp(-r(t) * tau(t)));
Conv(i) = ( 1.0 / PV(i) ) * SUM(t, sqr(tau(t)) * F(t,i) * exp(-r(t) * tau(t)));
디스플레이 PV, 기간, 전환;
* 부채에 해당하는 금액을 계산합니다. PV를 "가격"으로 사용하십시오.
PV_Liab = SUM(t, 부채(t) * exp(-r(t) * tau(t)));
Dur_Liab = ( 1.0 / PV_Liab ) * SUM(t, tau(t) * 부채(t) * exp(-r(t) * tau(t)));
Conv_Liab = ( 1.0 / PV_Liab ) * SUM(t, sqr(tau(t)) * 부채(t) * exp(-r(t) * tau(t)));
DISPLAY PV_Liab, Dur_Liab, Conv_Liab;
* 점점 더 정교해지는 면역 모델의 시퀀스를 구축하세요.
긍정적인 변수
x(i) 채권 보유(액면가);
변수
z 목적 함수 값;
방정식
PresentValueMatch 자산과 부채의 현재 가치를 일치시키는 방정식
DurationMatch 자산과 부채의 지속 기간을 일치시키는 방정식
자산과 부채의 볼록성을 일치시키는 ConvexityMatch 방정식
ObjDef 목적 함수 정의;
ObjDef .. z =E= SUM(i, Dur(i) * PV(i) * y(i) * x(i)) / (PV_Liab * Dur_Liab);
PresentValueMatch .. SUM(i, PV(i) * x(i)) =E= PV_Liab;
DurationMatch .. SUM(i, Dur(i) * PV(i) * x(i)) =E= PV_Liab * Dur_Liab;
ConvexityMatch .. SUM(i, Conv(i) * PV(i) * x(i)) =G= PV_Liab * Conv_Liab;
모델 ImmunizationOne 'PFO 모델 4.3.1' /ObjDef, PresentValueMatch, DurationMatch/;
LP를 사용하여 예방접종을 극대화하는 방법을 해결하세요.
스칼라 볼록성;
볼록성 = (1.0 / PV_Liab ) * SUM(i, Conv(i) * PV(i) * x.l(i));
DISPLAY x.l,볼록성,Conv_Liab;
모델 ImmunizationTwo /ObjDef, PresentValueMatch, DurationMatch, ConvexityMatch/;
LP를 사용하여 예방접종을 극대화하는 방법 2개를 해결하세요.
DurationMatch.L = DurationMatch.L / PV_Liab;
ConvexityMatch.L = ConvexityMatch.L / PV_Liab;
DISPLAY x.l,PresentValueMatch.L,DurationMatch.L,ConvexityMatch.L;
방정식
ConvexityObj;
ConvexityObj .. z =E= ( 1.0 / PV_Liab ) * SUM(i, Conv(i) * PV(i) * x(i));
모델 ImmunizationThree /ConvexityObj, PresentValueMatch, DurationMatch/
LP를 사용하여 예방접종 3 최소화 z 해결;
디스플레이 x.l;