SelectiveHedging : 선택적 헤징을 위한 시나리오 최적화

설명

SelectiveHedging.gms: 선택적 헤징을 사용한 인덱싱 모델
콘실리오, 닐슨, 제니오스.
실제 재무 최적화: 무료 슬롯 게임 모델 라이브러리, 섹션 7.2.3
최종 수정 날짜: 2008년 4월.

카테고리 : 무료 슬롯 게임 FIN 라이브러리


메인파일 : SelectiveHedging.gms 포함: InputData.gdx

$title 선택적 헤징을 사용한 인덱싱 모델

* SelectiveHedging.gms: 선택적 헤징을 적용한 인덱스 모델
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 무료 슬롯 게임 모델 라이브러리, 섹션 7.2.3
* 최종 수정일: 2008년 4월.

$설정하지 않은 경우 $선택적 헤징 설정
$call rm -f %out%.gdx
$if NOT %system.errorlevel% == 0 $abort %out%.gdx를 제거할 수 없습니다. - 닫기

스칼라
         mu 목표 기대값
         USDDEMForwardRate USD-DEM 선물환율
         USDCHFForwardRate USD-CHF 선도 환율;

USDDEMForwardRate = -0.005;
USDCHFForwardRate = 0.001;

스칼라
         Eps공차;

SETS BB 사용가능채권
      EE 사용 가능한 통화
      통화별 BxE(BB,EE) 채권
      SS 시나리오 세트

매개변수
         BondPrices0(BB) 단계 초기의 채권가격
         BondPrices1(SS,BB) 단계 종료 시 채권 가격
         BondReturns(SS,BB) 채권 수익
         UnhedgedBondReturns(SS,BB) 헤지되지 않은 채권 수익률
         HedgedBondReturns(SS,BB) 헤지채권 수익률
         환율0(EE)
         환율1(SS,EE)
         환율반품(SS,EE)
         IndexReturns(SS);

$gdxIn 입력 데이터
$load BB=BB2 EE BxE=BxE2 SS BondPrices1=data2
$load BondPrices0=data3 ExchangeRates0 ExchangeRates1
$load IndexReturns
$gdxIn

별칭(BB,i)

별칭(SS,l,s)

별칭(EE,e);

BondReturns(l,i) = ( BondPrices1(l,i) - BondPrices0(i) ) / BondPrices0(i);
ExchangeRatesReturns(l,e) = ( ExchangeRates1(l,e) - ExchangeRates0(e) ) / ExchangeRates0(e);

* 헤지되지 않은 채권 수익은 USD 통화로 표시됩니다.

UnhedgedBondReturns(l,i)$BxE(i,'USD') = BondReturns(l,i)$BxE(i,'USD');
UnhedgedBondReturns(l,i)$BxE(i,'DEM') = BondReturns(l,i)$BxE(i,'DEM') + ExchangeRatesReturns(l,'DEM');
UnhedgedBondReturns(l,i)$BxE(i,'CHF') = BondReturns(l,i)$BxE(i,'CHF') + ExchangeRatesReturns(l,'CHF');

* 헤지본드 수익률

HedgedBondReturns(l,i)$BxE(i,'DEM') = BondReturns(l,i)$BxE(i,'DEM') + USDDEMForwardRate;
HedgedBondReturns(l,i)$BxE(i,'CHF') = BondReturns(l,i)$BxE(i,'CHF') + USDCHFForwardRate;

DISPLAY BondPrices0,BondReturns,ExchangeRatesReturns,UnhedgedBondReturns,HedgedBondReturns,IndexReturns;

매개변수
        pr(l) 시나리오 확률;

pr(l) = 1.0 / 카드(l);

변수
         z;

긍정적인 변수
         h(i)
         너(나)
         x(i)
         y(l);

변수
     r(l,i);

방정식
         ObjDef
         리턴콘
         노멀콘
         yPosDef(l)
         yNegDef(l);

ObjDef .. z =E= SUM(l, pr(l) * y(l));

yPosDef(l) .. y(l) =G= SUM(i, UnhedgedBondReturns(l,i) * u(i) + HedgedBondReturns(l,i) * h(i) ) -
                          SUM(s, pr(s) * SUM(i, UnhedgedBondReturns(s,i) * u(i) + HedgedBondReturns(s,i) * h(i) ));

ReturnCon.. SUM(l, pr(l) * SUM(i, UnhedgedBondReturns(l,i) * u(i) + HedgedBondReturns(l,i) * h(i))) =G= mu;

yNegDef(l) .. y(l) =G= SUM(s, pr(s) * SUM(i, UnhedgedBondReturns(s,i) * u(i) + HedgedBondReturns(s,i) * h(i) )) -
                          SUM(i, UnhedgedBondReturns(l,i) * u(i) + HedgedBondReturns(l,i) * h(i) );

NormalCon .. SUM(i, h(i) + u(i)) =E= 1.0;

MODEL IndexFund '모델 PFO 10.5.1' /ALL/;

SET 프론티어포인트 /P_1 * P_50/;

ALIAS(프론티어포인트,p);

매개변수
   프론티어(p,*) 프론티어;

* 각 포인트에 복귀 레벨 mu를 할당합니다.

프론티어('P_1','mu') = 0.0;

루프(p$(ORD(p) > 1),

    프론티어(p,'mu') = 프론티어(p-1,'mu') + (0.0005)$(ORD(p) <= 20) + (0.001)$(ORD(p) > 20);

);

IndexFund.MODELSTAT = 1;

LOOP(p$(IndexFund.MODELSTAT <= 2),

   mu = 프론티어(p,'mu');

   LP 사용을 최소화하는 IndexFund 해결;

   IF( IndexFund.MODELSTAT <= 2,

      프론티어(p,'부분 헤지') = z.l;

   );

);

* 완전 헤지 모델

u.FX(i) = 0.0;

IndexFund.MODELSTAT = 1;

LOOP(p$(IndexFund.MODELSTAT <= 2),

   mu = 프론티어(p,'mu');

   LP 사용을 최소화하는 IndexFund 해결;

   IF( IndexFund.MODELSTAT <= 2,

      프론티어(p,'완전히 헤지됨') = z.l;

   );

);

* 비헤지 모델

u.LO(i) = 0.0;
u.UP(i) = 1.0;

h.FX(i) = 0.0;

IndexFund.MODELSTAT = 1;

LOOP(p$(IndexFund.MODELSTAT <= 2),

   mu = 프론티어(p,'mu');

   LP 사용을 최소화하는 IndexFund 해결;

   IF( IndexFund.MODELSTAT <= 2,

     프론티어(p,'Unhedged') = z.l;

   );

);

디스플레이 프론티어;

임베디드 코드 연결:
- 무료 슬롯 게임리더:
    기호: [  이름: 프론티어  ]
- 엑셀작성기:
    파일: %out%.xlsx
    기호: [  이름: 프론티어, 범위: Sheet1!A1  ]
endEmbeddedCode