FactorImmunization : 인자 예방접종 모델

설명

FactorImmunization.gms: 인자 예방접종 모델
콘실리오, 닐슨, 제니오스.
실제 재무 최적화: 무료 슬롯 사이트 모델 라이브러리, 섹션 4.5
최종 수정 날짜: 2008년 4월.

카테고리 : 무료 슬롯 사이트 FIN 라이브러리


메인파일 : FactorImmunization.gms 포함: BondData.inc SpotRates.inc YieldRates.inc FactorData.inc

$title 인자 예방접종 모델

* FactorImmunization.gms: 인자 예방접종 모델
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 무료 슬롯 사이트 모델 라이브러리, 섹션 4.5
* 최종 수정일: 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/;

SET 요인 기간 구조 요인
    /FF_1, FF_2, FF_3/;

ALIAS(요인, j);
ALIAS(채권, i);

매개변수
         쿠폰(i) 쿠폰
         만기(i) 만기
         부채(t) 부채의 흐름
         F(t,i) 현금흐름;

* 채권 데이터. 덴마크 시장의 가격, 쿠폰 및 만기

$include "BondData.inc"
$include "FactorData.inc"

매개변수
         beta(j,t) 인자 로딩;

* 전치 인자 로딩

베타(j,t) = 베타트랜스(t,j);

* 데이터 복사/변환. 단위 데이터를 얻기 위해 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) 자산의 볼록성
         FactorDur(i,j) 자산의 요소 지속 기간
         FactorConv(i,j) 자산의 요소 볼록성;

* 현재 가치, Fisher & Weil 기간 및 볼록성
* 책임 및 해당 요소 버전.

매개변수
         PV_Liab 부채의 현재 가치
         Dur_Liab 책임 기간
         Conv_Liab 부채의 볼록성
         FactorDur_Liab(j) 요소 책임 기간
         FactorConv_Liab(j) 부채의 볼록성 요소;

* 자산에 대한 PV, Dur 및 Conv를 계산합니다...

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_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;

* 자산에 대한 FactorDur 및 FactorConv를 계산합니다...

FactorDur(i,j) = ( 1.0 / PV(i) ) * SUM(t, tau(t) * F(t,i) * beta(j, t) * EXP(-r(t) * tau(t)));

FactorConv(i,j) = ( 1.0 / PV(i) ) * SUM(t, SQR(tau(t)) * F(t,i) * 베타(j, t) * EXP(-r(t) * tau(t)));

DISPLAY FactorDur, FactorConv;

* ...그리고 부채에 대해서도요.

FactorDur_Liab(j) = ( 1.0 / PV_Liab ) * SUM(t, tau(t) * 부채(t) * 베타(j,t) * EXP(-r(t) * tau(t)));

FactorConv_Liab(j) = ( 1.0 / PV_Liab ) * SUM(t, SQR(tau(t)) * 부채(t) * 베타(j,t) * EXP(-r(t) * tau(t)));

DISPLAY FactorDur_Liab, FactorConv_Liab;

* 볼록성 제약이 있거나 없는 2요소 예방접종 모델 구축

긍정적인 변수
         x(i) 채권 보유(액면가);

변수
         z 목적 함수 값;

방정식
         PresentValueMatch 자산과 부채의 현재 가치를 일치시키는 방정식
         DurationMatch(j) 자산과 부채의 요소 지속 기간을 일치시키는 방정식
         ConvexityMatch(j) 자산과 부채의 볼록성 요소를 일치시키는 방정식
         ObjDef 목적 함수 정의;

ObjDef .. z =E= SUM(i, PV(i) * Dur(i) * y(i) * x(i)) / (PV_Liab * Dur_Liab);

PresentValueMatch .. SUM(i, PV(i) * x(i)) =E= PV_Liab;

DurationMatch(j) .. SUM(i, FactorDur(i,j) * PV(i) * x(i)) =E= PV_Liab * FactorDur_Liab(j);

ConvexityMatch(j) .. SUM(i, FactorConv(i,j) * PV(i) * x(i)) =G= PV_Liab * FactorConv_Liab(j);

* 볼록형 모델 없음

모델 FactorImmunizationOne 'PFO 모델 4.4.1' /PresentValueMatch, DurationMatch, ObjDef/;

LP를 사용하여 z를 극대화하는 SOLVE FactorImmunizationOne;

디스플레이 x.l;

모델 FactorImmunizationTwo /PresentValueMatch, DurationMatch, ConvexityMatch, ObjDef/;

SOLVE FactorImmunizationTwo 극대화 z LP 사용;

디스플레이 x.l;