InternationalMeanVar : 국제 자산 배분 모델.

설명

InternationalMeanVar.gms: 국제 자산 배분 모델.
콘실리오, 닐슨, 제니오스.
실제 재무 최적화: 슬롯 머신 모델 라이브러리, 섹션 3.5
최종 수정 날짜: 2008년 4월.

카테고리 : 슬롯 머신 FIN 라이브러리


메인파일 : InternationalMeanVar.gms 포함: 추정.gdx

$title 국제 자산 배분 모델

* InternationalMeanVar.gms: 국제 자산 배분 모델.
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 슬롯 머신 모델 라이브러리, 섹션 3.5
* 최종 수정일: 2008년 4월.

* 1990-01-01부터 2000-01-01까지 10년간의 실제 데이터를 사용하였으며,
*
* 23개 이탈리아 주식 지수
* 3개의 이탈리아 채권 지수(1-3년, 3-7년, 5-7년)
* 이탈리아 무위험 금리(3개월 현금)
*
* 7개 국제정부 채권 지수
* 5개 지역 주가 지수: (EMU, Eur-ex-emu, PACIF, EMER, NORAM)
* EUR, US, JP에 대한 3가지 무위험 금리(3개월 현금)
*
* 미국 회사채 업종 지수(금융, 에너지, 생명보험)
*
* 환율, ITL: (FRF, DEM, ESP, GBP, US, YEN, EUR)
* 또한 미국을 EUR로 변환합니다.

SET 자산;

ALIAS(자산,i,j);

세트
         IT_STOCK(i) 이탈리아 주가지수
         IT_ALL(i) 이탈리아 주식+채권 지수
         INT_STOCK(i) 이탈리아 및 국제 주식 지수
         INT_ALL(i) 이탈리아 주식 및 정부 지수, 국제 주식 및 정부 지수, 기업 지수

매개변수
         MAX_MU 기대수익률의 최대 수준
         기대수익률(i) 기대수익률
         VarCov(i,j) 분산-공분산 행렬
         RiskFree 위험 없는 반품;

$gdxIn 추정치
$load 자산 IT_STOCK IT_ALL INT_STOCK INT_ALL
$load MAX_MU ExpectedReturns=MU VarCov=Q RiskFree=RiskFreeRt
$gdxIn

활성으로 설정(자산);

별칭(ACTIVE, a, a1, a2);

* 목표수익률

스칼라
  MU_TARGET 목표 포트폴리오 수익률
  MU_STEP 목표 복귀 단계;

* 프론티어에 20개의 포트폴리오가 필요하다고 가정

MU_STEP = MAX_MU / 20;

긍정적인 변수
    x(i) 자산 보유;

변수
   PortVariance 포트폴리오 분산;

방정식
    포트폴리오 수익률 제약을 정의하는 ReturnCon 방정식
    포트폴리오 차이를 정의하는 VarDef 방정식
    정규화 제약 조건을 정의하는 NormalCon 방정식.

ReturnCon .. SUM(a, ExpectedReturns(a)*x(a)) =E= MU_TARGET;

VarDef .. PortVariance =E= SUM((a1,a2), x(a1)*VarCov(a1,a2)*x(a2));

NormalCon .. SUM(a, x(a)) =E= 1;

옵션 SOLVEOPT = 교체;

모델 MeanVar /ReturnCon,VarDef,NormalCon/;

파일 FrontierHandle /"InternationalMeanVarFrontier.csv"/;

FrontierHandle.pc = 5;
FrontierHandle.pw = 1048;

PUT 프론티어핸들;

* 1단계: 먼저 이탈리아 주식에 대해서만 풀기:

ACTIVE(i) = IT_STOCK(i);

PUT "1단계: 이탈리아 주식 자산"/;
PUT "차이","ExpReturn";

* 자산 라벨

LOOP(i, PUT i.tl);

놓다 /;

FOR (MU_TARGET = 0 ~ MAX_MU BY MU_STEP,

   nlp를 사용하여 PortVariance를 최소화하는 MeanVar 해결;

   PUT PortVariance.l:6:5, MU_TARGET:6:5;

   LOOP(i, PUT x.l(i):6:5 );

   넣어 /;
);

*
* 2단계: 이제 이탈리아 주식 및 정부 지수를 풀어보세요.
*

PUT "2단계: 이탈리아 주식 및 정부 자산"/;

ACTIVE(i) = IT_ALL(i);

FOR (MU_TARGET = 0 ~ MAX_MU BY MU_STEP,

   nlp를 사용하여 PortVariance를 최소화하는 MeanVar 해결;

   PUT PortVariance.l:6:5, MU_TARGET:6:5;

   LOOP(i, PUT x.l(i):6:5 );

   넣어 /;
);

*
* 3단계: 이탈리아 주식과 국제 주식 지수
*

PUT "3단계: 이탈리아 및 국제 주가 지수"/;

ACTIVE(i) = INT_STOCK(i);

FOR (MU_TARGET = 0 ~ MAX_MU BY MU_STEP,

   nlp를 사용하여 PortVariance를 최소화하는 MeanVar 해결;

   PUT PortVariance.l:6:5, MU_TARGET:6:5;

   LOOP(i, PUT x.l(i):6:5 );

   넣어 /;
);

*
* 4단계: 이탈리아 주식 및 정부 지수, 국제 주식 및 정부
* 지수 및 기업 지수.
*

PUT "4단계: 모든 지수"/;

ACTIVE(i) = INT_ALL(i);

FOR (MU_TARGET = 0 ~ MAX_MU BY MU_STEP,

   nlp를 사용하여 PortVariance를 최소화하는 MeanVar 해결;

   PUT PortVariance.l:6:5, MU_TARGET:6:5;

   LOOP(i, PUT x.l(i):6:5 );

   넣어 /;
);

*
* 5단계: 모든 이탈리아 주식 지수와 무위험
*

변수
   지
   d_bar;

방정식
    위험 없음반환 방어
    샤프비율;

RiskFreeReturnDef .. d_bar =E= SUM(a, ExpectedReturns(a)*x(a)) - RiskFree;

SharpeRatio .. z =E= d_bar / sqrt( PortVariance );

모델 샤프 /RiskFreeReturnDef,VarDef,NormalCon,SharpeRatio/;

nlp를 사용하여 z를 최대화하는 Sharpe 해결;

* 탄젠트 포트폴리오의 분산과 기대수익률을 작성합니다.

PUT "5단계: 탄젠트 포트폴리오"/;

PUT PortVariance.l:6:5, (d_bar.l + RiskFree):6:5, z.l:6:5;

* 탄젠트 포트폴리오를 작성합니다.

LOOP(i, PUT x.l(i):6:5 );

놓다 /;

*
* 6단계: 총 이탈리아 주가지수를 부채로 포함합니다.
*
*
* 모델 구축(이전 모델과 매우 유사)
* 이탈리아 총주가지수를 추적(종합)하려는 시도,
* ITMHIST, 이탈리아 주식지수 23개와 이탈리아 채권지수 3개 사용
* 이탈리아 무위험 자산을 더한 것입니다.
*
* 이는 ITMHIST를 자산으로 포함하되 가중치는 고정함으로써 이루어집니다.
* 포트폴리오의 -1. 그런 다음 26개의 다른 자산은 균형을 유지해야 합니다.
* ITMHIST의 분산을 제거합니다. 또한 우리는 다양한 수준을 추구합니다.
* 예상 수익률(ITMHIST 수익률 이상).

* 일반 이탈리아 주식 지수만 포함하는 편리한 하위 집합을 만듭니다.

SET It_general(ASSETS) / ITMHIST /;

* 재정의해야 할 유일한 제약조건은
* 정규화 제약. 실제로는 0으로 설정되어야 합니다.

방정식
    추적을 위한 정규화 제약 조건을 정의하는 NormalConTrack 방정식.

NormalConTrack .. SUM(a, x(a)) =E= 0;

옵션 SOLVEOPT = 교체;

모델 MeanVarTrack /ReturnCon,VarDef,NormalConTrack/;

x.FX(It_general) = -1;

PUT "6단계: 인덱스 추적"/;

ACTIVE(i) = IT_STOCK(i) 또는 It_general(i);

* 추적 문제로 MAX_MU가 다르기 때문에 MU_STEP을 재추정

MAX_MU = 0.1587;

MU_STEP = MAX_MU / 20;

FOR (MU_TARGET = 0 ~ MAX_MU BY MU_STEP,

   nlp를 사용하여 PortVariance를 최소화하는 MeanVarTrack 해결;

   PUT MeanVarTrack.MODELSTAT:0:0, PortVariance.l:6:5, MU_TARGET:6:5;

   LOOP(i, PUT x.l(i):6:5 );

   넣어 /;
);

PUTCLOSE;