설명
ThreeStageSPDA.gms: SPDA용 3단계 확률론적 프로그래밍 모델 Consiglio, Nielsen, Vladimirou 및 Zenios: 재무 최적화 모델 라이브러리, 섹션 5.4 Zenios: 실용적인 재무 최적화, 섹션 6.4도 참조하세요. 최종 수정일: 2005년 11월.
카테고리 : 무료 슬롯 FIN 라이브러리
메인파일 : ThreeStageSPDA.gms
* ThreeStageSPDA.gms: SPDA용 3단계 확률론적 프로그래밍 모델
* Consiglio, Nielsen, Vladimirou 및 Zenios: 재무 최적화 모델 라이브러리, 섹션 5.4
* Zenios: 실용적인 재무 최적화, 섹션 6.4도 참조하세요.
* 최종 수정일: 2005년 11월.
SET 시나리오 시나리오 세트
/uu, ud, dd, du/;
SET 자산 사용 가능한 자산
/io2, po7, po70, io90/;
SET 시간 시간 단계
/t0, t1, t2/;
별칭(시나리오, l);
별칭(자산, i);
ALIAS(시간, t);
표 수익률(i,t,l) 자산 수익률
UU UD DD DU
IO2 .T0 1.104439 1.104439 0.959238 0.959238
IO2 .T1 1.110009 0.975907 0.935106 1.167817
PO7 .T0 0.938159 0.938159 1.166825 1.166825
PO7 .T1 0.933668 1.154590 1.156536 0.903233
PO70.T0 0.924840 0.924840 1.167546 1.167546
PO70.T1 0.891527 1.200802 1.141917 0.907837
IO90.T0 1.107461 1.107461 0.908728 0.908728
IO90.T1 1.105168 0.925925 0.877669 1.187143;
표 현금수익률(t,l) 무위험(현금) 수익률
UU UD DD DU
T0 1.030414 1.030414 1.012735 1.012735
T1 1.032623 1.014298 1.009788 1.030481;
TABLE 부채(t,l) 연금 실효로 인한 부채
UU UD DD DU
T1 26.474340 26.474340 10.953843 10.953843
T2 31.264791 26.044541 10.757200 13.608207;
PARAMETER FinalLiability(l) 최종 부채
/유 = 47.284751,
Ud = 49.094838,
dd = 86.111238,
du = 83.290085/;
매개변수
Output(*,i) 각 모델의 최적 보유량을 저장하는 데 사용되는 매개변수
스칼라
PropCost 비례 거래 비용.
긍정적인 변수
buy(t,i,l) 구매 금액
Sell(t,i,l) 판매 금액
보유(t,i,l) 보유
현금(t,l) 현금 보유;
변수
부(l) 최종 부
z 목적 함수 값;
방정식
AssetInventoryCon(t,i,l) 자산 재고 잔액을 정의하는 제약 조건
CashInventoryCon(t,l) 재고 잔액을 정의하는 제약 조건
WealthRatioDef(l) 최종 자산-부채 비율을 정의하는 방정식
NonAnticConOne(i,l) 첫 번째 비예측 세트를 정의하는 제약 조건
NonAnticConTwo(i,l) 두 번째 비예측 세트를 정의하는 제약 조건
ExpWealthObjDef 기대 재산 목적 함수 정의.
AssetInventoryCon(t,i,l) ..
구매(t,i,l) $ (ORD(t) lt CARD(t)) +
( 수익률(i,t-1,l) * 보유(t-1,i,l) ) $ (ORD(t) gt 1) =E=
매도(t,i,l) $ (ORD(t) gt 1) +
보유(t,i,l) $ (ORD(t) lt CARD(t));
CashInventoryCon(t,l) ..
SUM(i, Sell(t,i,l) * (1 - PropCost)) $ (ORD(t) gt 1) +
( 현금수익률(t-1,l) * 현금(t-1,l) ) $ (ORD(t) gt 1) +
100 $ (ORD(t) eq 1) =E=
SUM(i, buy(t,i,l)) $ (ORD(t) lt CARD(t)) +
현금(t,l) + 부채(t,l);
NonAnticConOne(i,l)$(ORD(l) lt CARD(l)) ..
보유("t0",i,l) =E= 보유("t0",i,l+1);
NonAnticConTwo(i,l)$(ORD(l) eq 1 OR ORD(l) eq 3) ..
보유("t1",i,l) =E= 보유("t1",i,l+1);
자산비율Def(l) ..
부(l) =E= 현금("t2",l) / 최종 책임(l);
ExpWealthObjDef ..
z =E= SUM(l, 부(l)) / CARD(l);
모델 ThreeStageExpWealth /AssetInventoryCon,CashInventoryCon,WealthRatioDef,
ExpWealthObjDef,NonAnticConOne,NonAnticConTwo/;
* 모델 1: 거래 비용 없이 기대 부를 극대화
PropCost = 0.0;
LP를 사용하여 ThreeStageExpWealth를 극대화하세요.
디스플레이 "모델 1";
DISPLAY 구매.l, 판매.l, 보유.l, 부.l;
Output('Exp Wealth no TC',i) =hold.l('t0',i,'uu');
* 모델 2: 거래 비용을 통해 기대 부를 극대화
PropCost = 0.01;
LP를 사용하여 ThreeStageExpWealth를 극대화하세요.
디스플레이 "모델 2";
DISPLAY 구매.l, 판매.l, 보유.l, 부.l;
Output('TC로 부를 경험하세요',i) = Hold.l('t0',i,'uu');
* 모델 3: 최악의 캐스팅 결과를 극대화한다.
변수
WorstCase 최악의 결과;
방정식
WorstCaseDef(l) 최악의 결과를 정의하는 방정식입니다.
WorstCaseDef(l) .. WorstCase =L= 부(l);
모델 ThreeStageWorstCase /AssetInventoryCon,CashInventoryCon,WealthRatioDef,
최악의 경우Def,NonAnticConOne,NonAnticConTwo/;
LP를 사용하여 최악의 사례를 최대화하는 ThreeStageWorstCase 해결;
디스플레이 "모델 3";
DISPLAY 구매.l, 판매.l, 보류.l, 부.l, 최악의 경우.l;
Output('최악의 경우',i) =hold.l('t0',i,'uu');
* 모델 4: 기대효용 극대화:
방정식
UtilityObjDef 유틸리티 목적 함수 정의;
UtilityObjDef .. z =E= SUM(l, LOG ( 부(l) ) ) / CARD(l);
모델 ThreeStageUtility /AssetInventoryCon,CashInventoryCon,WealthRatioDef,
UtilityObjDef,NonAnticConOne,NonAnticConTwo/;
NLP를 사용하여 z를 극대화하는 ThreeStageUtility 해결;
디스플레이 "모델 4";
DISPLAY 구매.l, 판매.l, 보유.l, 부.l, z.l;
Output('Utility',i) =hold.l('t0',i,'uu');
* 모델 5: A/L > 1.1이 되는 MAD 제약을 사용하여 기대 부를 극대화합니다.
매개변수
EpsTolerance 공차;
방정식
MADCon(l) MAD 제약;
MADCon(l) .. 부(l) =G= 1.1 - EpsTolerance;
모델 ThreeStageMAD /AssetInventoryCon,CashInventoryCon,WealthRatioDef,
MADCon,ExpWealthObjDef,NonAnticConOne,NonAnticConTwo/;
EpsTolerance = 0.09;
LP를 사용하여 ThreeStageMAD를 최대화하는 문제를 해결하세요.
디스플레이 "모델 5";
DISPLAY 구매.l, 판매.l, 보유.l, 부.l, z.l;
Output('MAD',i) =hold.l('t0',i,'uu');
임베디드 코드 연결:
- GAMS리더:
기호: [ 이름: 출력 , 이름: 구매 , 이름: 판매 ]
- 프로젝션:
이름: buy.l(t,i,l)
새 이름: buy_l(t,i,l)
- 프로젝션:
이름: Sell.l(t,i,l)
새 이름: Sell_l(t,i,l)
- 엑셀작성기:
파일: 무료 슬롯xlsx
기호:
- 이름: 출력, 범위: 보유!A1
- 이름: buy_l, 범위: 구매!A1
- 이름: Sell_l, 범위: Sell!A1