설명
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