meanvarx.gms : 재무 최적화: 위험 관리

설명

최소 및 최대 무역 제약이 표준에 추가되었습니다.
평균-분산 모델. 이 범위 내에서 거래하는 것이 수익성이 없는 경우
범위에서는 거래가 이루어져서는 안됩니다. 회전율 제약이 추가됩니다.
데이터의 작은 변화에 대한 솔루션의 안정성을 향상시킵니다. 는
결과 모델은 비선형 혼합 정수 문제입니다.

두 가지 중요한 모델링 트릭이 시연됩니다. (1)
Q 행렬의 삼각형 부분, 그리고 (2) 소개
계산 성능을 향상시키기 위한 한계 분산
큰 QP 문제.

소형 모델 유형 :MINLP


카테고리 : 슬롯 사이트 모델 라이브러리


메인 파일 : meanvarx.gms

$title 재무 최적화: 위험 관리(MEANVARX,SEQ=113)

$onText
최소 및 최대 무역 제한 사항이 표준에 추가되었습니다.
평균-분산 모델. 이 범위 내에서 거래하는 것이 수익성이 없는 경우
범위에서는 거래가 이루어져서는 안됩니다. 회전율 제약이 추가됩니다.
데이터의 작은 변화에 대한 솔루션의 안정성을 향상시킵니다. 는
결과 모델은 비선형 혼합 정수 문제입니다.

두 가지 중요한 모델링 트릭이 시연됩니다. (1)
Q 행렬의 삼각형 부분, 그리고 (2) 소개
계산 성능을 향상시키기 위한 한계 분산
큰 QP 문제.

Dahl, H, Meeraus, A 및 Zenios, S A, 일부 재무 최적화
모델: 위험 관리. Zenios, S A, Ed, 재무 최적화.
캠브리지 대학 출판부, 뉴욕, 뉴욕, 1993.

키워드: 혼합 정수 비선형 계획법, 위험 관리, 금융,
          재무 최적화
$offText

$eolCom //

i '증권'을 설정합니다. / cn, fr, gr, jp, sw, uk, us /;

별칭(i,j);

매개변수 mu(i) '담보 반환 예상' / cn 0.1287
                                                fr 0.1096
                                                gr 0.0501
                                                jp 0.1524
                                                남서 0.0763
                                                영국 0.1854
                                                미국 0.0620 /;

테이블 q(i,j) '공분산 행렬'
           cn fr gr jp sw 영국 우리
   CN 42.18
   fr 20.18 70.89
   gr 10.88 21.58 25.51
   일본 5.30 15.41 9.60 22.33
   남 12.32 23.24 22.63 10.32 30.01
   영국 23.84 23.80 13.22 10.46 16.36 42.23
   미국 17.41 12.62 4.70 1.00 7.20 9.90 16.42;

* 우리는 계속해서 q-행렬의 아래쪽 삼각형만 사용할 것입니다.
* 올바른 결과를 얻으려면 대각선 항목을 조정하십시오.
q(i,j) = 2*q(j,i);
q(i,i) = q(i,i)/2;

스칼라
   tau '현재 보유 자산 회전율에 대한 경계 매개변수'
   람다 '수익률 대 분산 성분 트레이드오프 매개변수' ;

pd '포트폴리오 데이터 라벨' 설정
       / 이전 '포트폴리오의 현재 보유 비율'
         umin '증권 보유분의 최소 증가 i'
         umax '증권 i의 보유 지분 최대 증가'
         lmin '증권 i의 보유 지분의 최소 감소'
         lmax '증권 i의 보유 지분 최대 감소' /;

테이블 bdata(i,pd) '포트폴리오 데이터 및 거래 제한'
* - 증가 - - 감소 -
        오래된 umin umax lmin lmax
   CN 0.2 0.03 0.11 0.02 0.30
   프르 0.2 0.04 0.10 0.02 0.15
   gr 0.0 0.04 0.07 0.04 0.10
   일본 0.0 0.03 0.11 0.04 0.10
   남서 0.2 0.03 0.20 0.04 0.10
   영국 0.2 0.03 0.10 0.04 0.15
   미국 0.2 0.03 0.10 0.04 0.30;

bdata(i,'lmax') = min(bdata(i,'old'),bdata(i,'lmax')); // 바운드를 조이세요

abort$(abs(sum(i, bdata(i,'old')) - 1) >= 1e5) 'bdata에 오류가 있습니다', bdata;

변수
    omega 'minlp에 대한 객관적인 변수 정의'
    x(i) 'i의 현재 보유 포트폴리오 중 일부'
    xi(i) '포트폴리오 증가 비율'
    xd(i) '포트폴리오 감소 비율'
    mvar(i) '한계 분산'
    y(i) 'i의 전류 보유량을 증가시키기 위한 이진 스위치'
    z(i) 'i의 전류 유지를 감소시키기 위한 이진 스위치';

이진변수 y, z;
양수 변수 x, xi, xd;

방정식
   예산 '예산 제약'
   회전율 '포트폴리오의 최대 회전율 제한'
   maxinc(i) 'i 부분의 최대 로트 증가 한계'
   minnc(i) 'i 부분의 최소 로트 증가 한계'
   maxdec(i) 'i 부분의 최대 로트 감소 한계'
   Mindec(i) 'i 부분의 최소 로트 감소 한계'
   binsum(i) '이진 변수 사용을 제한합니다'
   xdef(i) '최종 포트폴리오 정의'
   mvardef(i) '한계 분산 정의'
   obj '목적 함수'
   objx '목적 함수';

예산.. sum(i, x(i)) =e= 1;

xdef(i).. x(i) =e= bdata(i,'old') - xd(i) + xi(i);

maxinc(i)..xi(i) =l= bdata(i,'umax')*y(i);

mininc(i)..xi(i) =g= bdata(i,'umin')*y(i);

maxdec(i).. xd(i) =l= bdata(i,'lmax')*z(i);

mindec(i).. xd(i) =g= bdata(i,'lmin')*z(i);

binsum(i)..y(i) + z(i) =l= 1;

매출액.. sum(i, xi(i)) =l= tau;

mvardef(i).. mvar(i) =e= sum(j, q(i,j)*x(j));

obj..omega =e= sum((i,j), x(i)*q(i,j)*x(j)) - 람다*sum(i, mu(i)*x(i));

objx.. omega =e= sum(i, x(i)*mvar(i)) - 람다*sum(i, mu(i)*x(i));

모델
   평균 / 모두 - mvardef - objx /
   marg / 모두 - obj /;

람다 = 0.5;
타우 = 0.3;

minlp를 사용하여 오메가를 최소화하는 것을 해결합니다.

minlp를 사용하여 오메가를 최소화하는 마그를 해결합니다.

매개변수 보고서 '요약 보고서';
report(i,'old') = bdata(i,'old');
보고서(i,'inc') = xi.l(i);
보고서(i,'dec') = xd.l(i);
보고서(i,'새') = x.l(i);
보고서 표시;