슬롯 무료체험gms : 재무 최적화: 금융 공학

설명

모기지담보부증권의 인도 및 결제가 관리됩니다.
광범위한 규칙과 규정에 의해. 전달
아직 통합되지 않은 모기지의 합의는 곧 발표될 예정입니다.
(TPA) 기준. 일부 허용된 분산을 통해 슬롯 무료체험를 구조화할 수 있습니다.
비용 효율적인 방식입니다.

대형 모델 유형 :MIP


카테고리 : 슬롯 무료체험 모델 라이브러리


메인 파일 : 슬롯 무료체험gms

$title 금융 최적화: 금융 공학(미정,SEQ=115)

$onText
주택저당증권의 인도 및 결제가 관장됩니다.
광범위한 규칙과 규정에 의해. 전달
아직 통합되지 않은 모기지의 합의는 곧 발표될 예정입니다.
(TPA) 기준. 일부 허용된 분산을 통해 슬롯 무료체험를 구조화할 수 있습니다.
비용 효율적인 방식.

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

키워드: 혼합 정수 선형 계획법, 금융 최적화, 금융
$offText

세트
   p 'gnma 풀' / gn999001*gn999011 /
   나 '트바스' / 20580252 /
   l '많은' / l1*l4 /
   c3(p) '클래스 3 고위험 풀' / gn999010*gn999011 /;

* 참고:
* 상자에 있는 class1
* class2 48시간 이내 배송
* 3등급 배송 지연

별칭 (p,pp), (i,ii), (l,ll);

테이블 pv(p,*) '풀 값'
              원래 조정됨
   gn999001 50 50
   gn999002 100 100
   gn999003 300 300
   gn999004 400 400
   gn999005 450 450
   gn999006 450 450
   gn999007 475 475
   gn999008 700 700
   gn999009 1000 1000
   gn999010 1000 1000
   gn999011 5000 5000;

테이블 tbainfo(i,*) '슬롯 무료체험 정보 테이블'
              수량 판매 시장 변화 maxpools
   20580252 5000 100.88 100 .05 3;

매개변수
    o(p) '풀의 원래 액면가'
    a(p) '풀의 조정된 액면가'
    head '할당을 위한 첫 번째 증분 단계'
    steps '머리와 꼬리 사이의 증분 단계 크기'
    tail(p) '풀의 꼬리'
    Splitcost(p) '풀 분할 비용'
    futprice(i) '합의된 배송 가격'
    mktprice(i) '시장 가격'
    futamt(i) '합의된 수량'
    var(i) '합의된 상한 및 하한 상대 편차'
    maxpools(i) '1백만 달러 슬롯 무료체험 로트의 최대 풀 수'
    lsize(i,l) '슬롯 무료체험 로트 크기'
    maxp(i,l) '각 로트에 할당할 최대 풀 수'
    m(p,i,l) '값 증분 단계 수의 상한'
    mb(p) '박스 증분 단계 수의 상한'
    n '할당된 총 로트 수';

o(p) = pv(p,"원본");
a(p) = pv(p,"조정됨");
머리 = 25;
단계 = 5;
tail(p) = mod((o(p)-head$(o(p) > head)),단계);
분할비용(p) = .00001;
futamt(i) = tbainfo(i,"수량");
futprice(i) = tbainfo(i,"판매")/100;
mktprice(i) = tbainfo(i,"시장")/100;
var(i) = tbainfo(i,"변형");
maxpools(i) = tbainfo(i,"maxpools");
lsize(i,l) = 0;

loop(l, lsize(i,l) = min(1000,futamt(i)-sum(ll$(ord(ll) < ord(l)), lsize(i,ll))));

maxp(i,l) = (maxpools(i)-2)$(lsize(i,l) < 500)
          + (maxpools(i)-1)$(lsize(i,l) >= 500 및 lsize(i,l) < 1000)
          + maxpools(i) $(lsize(i,l) >= 1000);

m(p,i,l) = Floor(max(0, ((1 + var(i))*lsize(i,l)*o(p)/a(p) - head)/단계));
mb(p) = Floor( max(0,o(p) - 헤드)/걸음);
n = sum((i,l)$lsize(i,l), 1);

변동이익 '총이익';

양수 변수
   v(p,i,l) '슬롯 무료체험 로트별로 할당된 풀 값'
   b(p) '상자에 남아 있는 풀의 액면가 조정';

바이너리 변수
   z(p,i,l) '슬롯 무료체험 lot에 pool을 할당할지 결정'
   zb1(p) '분할을 결정하기 위한 보조 이진 변수'
   zb2(p) '분할을 결정하는 보조 이진 변수'
   w(i,l) '많은 실패 여부 결정(0 = 실패)'
   u0(p,i,l) '최소 할당을 위한 보조 이진 변수'
   u0b(p) '최소 복싱을 위한 보조 이진 변수'
   ut(p,i,l) '테일 할당을 위한 보조 이진 변수'
   ubt(p) '테일 박싱을 위한 보조 이진 변수'
   s(p) '풀 분할 여부 결정'
   f1(i,l) '하나의 큰 풀 할당을 위한 이진 변수'
   f2(i,l) '두 개의 큰 풀 할당을 위한 이진 변수';

정수변수
   u(p,i,l) '할당 단계를 위한 보조 정수 변수'
   ub(p) '박스 단계를 위한 보조 정수 변수';

방정식
   loval(i,l) '슬롯 무료체험 로트별 할당값 하한'
   upval(i,l) '슬롯 무료체험 로트별 할당값 상한'
   공급(p) '가치 및 박스형 금액 할당'
   class3con(i,l) '클래스 3 풀 사용에 대한 제약'
   Splitsize(p,i,l) '헤드 스텝 및 테일 변수 할당'
   stepcon(p,i,l) '헤드 할당 후에만 단계를 할당합니다'
   tailcon(p,i,l) '헤드 할당 후에만 테일을 할당합니다'
   onetail(p) '각 풀에 대해 꼬리를 한 번만 할당합니다'
   boxsize(p) '박스형 헤드 스텝 및 테일 변수 할당'
   stepboxcon(p) '박스형 헤드 뒤에 박스형 단계를 할당합니다'
   boxtailcon(p) '박스형 헤드 뒤에 박스형 테일을 할당합니다'
   zdet(p,i,l) '풀 할당 여부 결정'
   zbox1def(p) 'zb1의 정의'
   zbox2def(p) 'zb2 정의'
   Splitdet(p) '분할 여부 결정'
   f1det(p,i,l) '단일 대규모 할당 풀 결정'
   f2det(p,pp,i,l) '두 개의 큰 풀 결정'
   maxpool1(i,l) '로트당 최대 풀 제한'
   maxpool2(i,l) '로트당 최대 풀에 대한 제약'
   maxpool3(i,l) '로트당 최대 풀에 대한 제약'
   이익def '이익의 정의';

$sTitle 방정식 및 모델 정의
* 슬롯 무료체험 로트에 할당된 풀의 가치는 하한값보다 높아야 합니다.
* 로트가 아닌 한 배송 및 차이에 대한 계약에 따라 제공됩니다.
* 실패한 경우에는 0이어야 합니다.
loval(i,l)$lsize(i,l).. sum(p, v(p,i,l)) =g= (1 - var(i))*lsize(i,l)*w(i,l);

* 슬롯 무료체험 로트에 할당된 풀의 가치는 상한선 이하여야 합니다.
* 로트가 아닌 한 배송 및 차이에 대한 계약에 따라 제공됩니다.
* 실패한 경우에는 0이어야 합니다.
upval(i,l)$lsize(i,l).. sum(p, v(p,i,l)) =l= (1 + var(i))*lsize(i,l)*w(i,l);

* 풀의 조정된 액면가 이상을 할당하거나 박스화할 수 없습니다.
공급(p).. sum((i,l)$lsize(i,l), v(p,i,l)) + b(p) =e= a(p);

* 3등급 풀장만 많이 사용하는 것은 불법입니다.
class3con(i,l)$lsize(i,l).. sum(p$(c3(p) 아님), v(p,i,l)) =g= w(i,l);

* 풀은 최소 금액의 인두 달러로 할당되어야 합니다.
* 원래 액면가 및 단계적으로 증가하는 달러 원래 액면가
* 꼬리를 제외하고 값입니다.
분할 크기(p,i,l)$lsize(i,l)..
   v(p,i,l)*o(p)/a(p) =e= 머리*u0(p,i,l) + 단계*u(p,i,l) + tail(p)*ut(p,i,l);

* 분할 풀의 단계 증가는 이후에만 적용됩니다.
* 헤드는 슬롯 무료체험 로트에 할당되었습니다.
stepcon(p,i,l)$lsize(i,l).. u(p,i,l) =l= m(p,i,l)*u0(p,i,l);

* 분할 풀의 테일 증분은 이후에만 적용됩니다.
* 헤드는 슬롯 무료체험 로트에 할당되었습니다.
tailcon(p,i,l)$(lsize(i,l) 및 tail(p)).. ut(p,i,l) =l= u0(p,i,l);

* 풀의 꼬리는 분할될 수 없습니다.
onetail(p)$tail(p).. sum((i,l)$lsize(i,l), ut(p,i,l)) + ubt(p) =l= 1;

* 분할 풀에 대한 위의 크기 규칙은 상자에 남아 있는 것에도 적용됩니다.
boxsize(p).. b(p)*o(p)/a(p) =e= head*u0b(p) + steps*ub(p) + tail(p)*ubt(p);

*박스에도 적용됩니다.
stepboxcon(p)..ub(p) =l= mb(p)*u0b(p);

* 분할 풀의 박스 테일 증가분은 이후에만 적용됩니다.
* 박스 헤드는 풀용으로 할당되었습니다.
boxtailcon(p)$tail(p)..ubt(p) =l= u0b(p);

* 풀이 슬롯 무료체험 로트에 할당되지 않은 경우 해당 할당 값
*는 0이어야 합니다.
zdet(p,i,l)$lsize(i,l).. v(p,i,l) =l= (1+var(i))*lsize(i,l)*z(p,i,l);

* zb1은 a의 어떤 것 또는 아무것도 아닌 경우(그러나 전부는 아님) 1입니다.
* 수영장은 박스형입니다. 모든 것이 박스로 포장되어 있으면 0입니다.
zbox1def(p).. zb1(p) =g= (a(p) - b(p))/a(p);

* 풀의 어떤 것 또는 모든 것이 박스로 묶인 경우 zb2는 1입니다. 그것은 0이다
*박스에 아무것도 남지 않은 경우.  따라서 zb1 + zb2는 다음과 같은 경우 1이 됩니다.
* 상자에 모든 것이 남아 있거나 아무것도 남지 않으며 그 외에는 2개입니다.
zbox2def(p).. zb2(p) =g= 1 - (a(p) - b(p))/a(p);

* 풀이 두 개 이상의 로트에 할당된 경우 분할됩니다.
* 하나의 로트에만 할당 - 완전히 할당되지 않은 경우(예:
* 원래 값 전체가 아닌 분수가 상자에 남아 있습니다.
Splitdet(p).. sum((i,l)$lsize(i,l), z(p,i,l)) + zb1(p) + zb2(p) - 2 =l= n*s(p);

* 단일 풀 할당은 다음보다 크거나 같으면 큰 것입니다.
* 더 낮은 가치 요구 사항.
f1det(p,i,l)$lsize(i,l)..
   2*var(i)*lsize(i,l)*f1(i,l) =g= v(p,i,l) - (1-var(i))*lsize(i,l);

* 2개의 풀 할당은 다음에 할당된 값의 합이 클 경우 큰 규모입니다.
* 해당 두 풀은 최소 할당보다 크거나 같습니다.
* 값 요구 사항.
f2det(p,pp,i,l)$(lsize(i,l) 및 ord(p) < ord(pp))..
   2*var(i)*lsize(i,l)*f2(i,l) =g= v(p,i,l) + v(pp,i,l) - (1 - var(i))*lsize(i,l);

* 지정된 수 이상의 풀을 하나의 풀에 할당할 수 없습니다.
* 많이. 대규모 단일 풀 할당이 발생하는 경우 해당
* Pool 할당이 가능하며, Big Two Pool 할당이 이루어지는 경우
* 슬롯 무료체험 로트의 경우 해당 2개의 풀만 로트에 할당될 수 있습니다.
maxpool1(i,l)$lsize(i,l).. sum(p, z(p,i,l)) =l= maxp(i,l);

maxpool2(i,l)$lsize(i,l).. sum(p, z(p,i,l)) =l= 1 + (1 - f1(i,l))*maxp(i,l);

maxpool3(i,l)$lsize(i,l).. sum(p, z(p,i,l)) =l= 2 + (1 - f2(i,l))*maxp(i,l);

* 총 이익은 마진에 납품 시간을 곱하고 분할 비용을 뺀 값입니다.
이익정의..
   이익 =e= sum((p,i,l)$lsize(i,l), (futprice(i) - mktprice(i))*v(p,i,l))
           - 합계(p, 분할 비용(p)*s(p));

u.up(p,i,l) = m(p,i,l);
ub.up(p) = mb(p);

모델 poolass '풀에서 탭 로트 할당 모델로' / all /;

* 밉 코드를 따라가도록 도와주세요
u.prior(p,i,l) = 2;
ub.prior(p) = 2;
풀할당.priorOpt = 1;
풀할당.optCr = .0001;

mip를 사용하여 풀 할당을 해결하여 이익을 극대화합니다.