설명
TrackingMAD.gms: MAD를 사용하여 모델을 추적합니다. 콘실리오, 닐슨, 제니오스. 실제 재무 최적화: 슬롯 모델 라이브러리, 섹션 5.3.1 최종 수정 날짜: 2008년 4월.
카테고리 : 슬롯 FIN 라이브러리
메인파일 : TrackingMAD.gms 포함: Corporate.inc WorldIndices.inc Index.inc
$title MAD를 사용한 추적 모델
* TrackingMAD.gms: MAD를 사용하여 모델을 추적합니다.
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 슬롯 모델 라이브러리, 섹션 5.3.1
* 최종 수정일: 2008년 4월.
* 데이터 파일을 포함하려면 다음 줄 중 하나의 주석 처리를 제거하세요.
* $include "Corporate.inc"
$include "WorldIndices.inc"
스칼라
예산 명목 투자예산
EpsTolerance 공차;
예산 = 100.0;
매개변수
pr(l) 시나리오 확률
P(i,l) 최종 값
EP(i) 최종 예상 값;
pr(l) = 1.0 / 카드(l);
P(i,l) = 1 + 자산 반환(i,l);
EP(i) = SUM(l, pr(l) * P(i,l));
긍정적인 변수
x(i) 화폐 단위(비율이 아님)로 자산을 보유합니다.
변수
z 목적 함수 값;
방정식
예산 제약을 정의하는 BudgetCon 방정식
ObjDef MAD에 대한 목적 함수 정의
ToleranceCon(l) 허용되는 공차를 정의하는 방정식입니다.
BudgetCon .. SUM(i, x(i)) =E= 예산;
ToleranceCon(l) .. SUM(i, P(i,l) * x(i)) =G= SUM(i, EP(i) * x(i)) - EpsTolerance * Budget;
ObjDef .. z =E= SUM(i, x(i) * EP(i));
모델 DownsideBound 'PFO 모델 5.3.4' /BudgetCon, ToleranceCon, ObjDef/;
파일 FrontierHandle /"TrackingMAD.csv"/;
FrontierHandle.pc = 5;
FrontierHandle.pw = 1048;
PUT 프론티어핸들;
PUT "공차","평균"/;
DownsideBound.MODELSTAT = 1;
* 높은 허용오차에서 시작하여 모델이 실현 가능해질 때까지 이를 줄입니다.
EpsTolerance = 0.2;
WHILE( DownsideBound.MODELSTAT <= 2,
LP를 사용하여 DownsideBound를 최대화하는 방법을 해결하세요.
PUT (EpsTolerance * Budget):6:5,z.l:10:3,DownsideBound.MODELSTAT:0:0;
LOOP(i, PUT x.l(i):6:2);
넣어 /;
EpsTolerance = EpsTolerance - 0.01;
);
매개변수
TargetIndex(l) 목표 인덱스 반환;
* 시장 지수로 모델을 테스트하려면 다음 두 줄의 주석 처리를 제거하세요.
* 이 색인은 WorldIndexes.inc를 사용할 때만 일관성이 있습니다.
$include "Index.inc"
TargetIndex(l) = Index(l);
방정식
TrackingCon(l) 추적 제약 조건.
TrackingCon(l) .. SUM(i, P(i,l) * x(i)) =G= ( TargetIndex(l) - EpsTolerance ) * 예산;
모델 TrackingMAD /BudgetCon, TrackingCon, ObjDef/;
PUT "공차","평균"/;
추적MAD.MODELSTAT = 1;
EpsTolerance = 0.2;
WHILE( 추적MAD.MODELSTAT <= 2,
LP를 사용하여 추적을 최대화하는 방법을 해결하세요.
PUT (EpsTolerance * Budget):6:5,z.l:10:3,TrackingMAD.MODELSTAT:0:0;
LOOP(i, PUT x.l(i):6:2);
넣어 /;
EpsTolerance = EpsTolerance - 0.01;
);
* 고정 목표 수익률은 2\%이며, 각 시나리오에서 최종 값은 1.02입니다.
타겟인덱스(l) = 1.02;
PUT "공차","평균"/;
추적MAD.MODELSTAT = 1;
EpsTolerance = 0.2;
WHILE( 추적MAD.MODELSTAT <= 2,
LP를 사용하여 추적을 최대화하는 방법을 해결하세요.
PUT (EpsTolerance * Budget):6:5,z.l:10:3,TrackingMAD.MODELSTAT:0:0;
LOOP(i, PUT x.l(i):6:2);
넣어 /;
EpsTolerance = EpsTolerance - 0.01;
);