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