설명
Borrow.gms: 차입 제약이 있는 평균-분산 모델. 콘실리오, 닐슨, 제니오스. 실제 재무 최적화: 슬롯 나라 모델 라이브러리, 섹션 3.3.1 최종 수정 날짜: 2008년 4월.
카테고리 : 슬롯 나라 FIN 라이브러리
메인파일 : Borrow.gms 포함: 추정.gdx
$title 차입 제약이 있는 평균-분산 모델
* Borrow.gms: 차입 제약이 있는 평균-분산 모델.
* Consiglio, Nielsen 및 Zenios.
* 실제 재무 최적화: 슬롯 나라 모델 라이브러리, 섹션 3.3.1
* 최종 수정일: 2008년 4월.
SET 자산;
ALIAS(자산,i,j);
매개변수
무위험비율
기대수익률(i) 기대수익률
VarCov(i,j) 분산-공분산 행렬 ;
$gdxIn 추정치
$load Assets=하위 집합 RiskFreeRate=MeanRiskFreeReturn VarCov 예상 수익
$gdxIn
* 위험 태도: 0은 위험 중립, 1은 매우 위험 회피입니다.
스칼라
BorrowRate_1 차입이자율
BorrowRate_2 높은 차입이자율
람다 위험 태도;
BorrowRate_1 = RiskFreeRate;
BorrowRate_2 = RiskFreeRate + 0.005;
긍정적인 변수
차입_1 차입이자율로 차입한 금액
차입_2 더 높은 차입이자율로 차입한 금액
x(i) 자산 보유;
빌림_1.UP = 2.0;
변수
PortVariance 포트폴리오 분산
PortReturn 포트폴리오 반환
z 목적 함수 값;
방정식
포트폴리오 초과 수익을 정의하는 ReturnDef 방정식
포트폴리오 초과 차이를 정의하는 VarDef 방정식
정규화 제약 조건을 정의하는 NormalCon 방정식
ObjDef 목적 함수 정의;
ReturnDef .. PortReturn =E= SUM(i, ExpectedReturns(i) * x(i)) - (borrow_1 * BorrowRate_1) - (borrow_2 * BorrowRate_2);
VarDef .. PortVariance =E= SUM((i,j), x(i) * VarCov(i,j)*x(j));
NormalCon .. SUM(i, x(i)) =E= 1 + 차용_1 + 차용_2;
ObjDef .. z =E= (1-람다) * PortReturn - 람다 * PortVariance;
모델 빌려오기 /ReturnDef, VarDef, NormalCon, ObjDef/;
파일 FrontierHandle /"BorrowFrontier.csv"/;
FrontierHandle.pc = 5;
FrontierHandle.pw = 1048;
PUT 프론티어핸들;
PUT "모델 상태","Lambda","Borrow_1","Borrow_2","z","Variance","ExpReturn";
LOOP(i, PUT i.tl);
놓다 /;
FOR(람다 = 0 TO 0.5 BY 0.01,
nlp를 사용하여 z를 최대화하는 문제 해결;
PUT Borrow.modelstat:0:0,lambda:6:5, 차용_1.l:6:5, 차용_2.l:6:5, z.l:6:5, PortVariance.l:6:5, PortReturn.l:6:5;
LOOP(i, PUT x.l(i):6:5 );
넣어 /;
)
PUTCLOSE;