* Sets of indices SET n assets / APPLE,AMAZON,CATERPILLAR,COCACOLA,TESLA/ SET s scenarios /1*82/; SET k(s) selected scenarios /1*81/; SET l(s) selected scenarios /1*80/; SET h(s) selected scenarios /1*79/; SET w(s) selected scenarios /1*78/; SET e(s) selected scenarios /1*77/; SET r(s) selected scenarios /1*76/; SET g(s) selected scenarios /1*75/; SET u(s) selected scenarios /1*74/; SET o(s) selected scenarios /1*73/; SET f(s) selected scenarios /1*72/; Alias (n,i,j) ; *------------------------------------------------------------------------------ * Parameters (vectors) PARAMETER mu(n) expected return of assets/ APPLE 0.0211799 AMAZON 0.0282535 CATERPILLAR 0.0115284 COCACOLA 0.00896768 TESLA 0.0478615 / *------------------------------------------------------------------------------ * Tables (matrices) Table q(s,j) scenarios by assets APPLE AMAZON CATERPILLAR COCACOLA TESLA 1 0.167215060049919 0.25819110377007 0.207489250255218 0.047244114983912 0.047741273100616 2 0.0607228393384553 0.0520183248697099 -0.00101698318097587 0.0557851528313916 0.0700636942675159 3 0.0337893367446309 0.0615505552635854 0.0822647219235275 0.0301696096069573 0.617674084249084 4 0.0366706835854084 0.0262258047739728 0.107091958779717 0.0483537197161791 -0.24624971716673 5 0.0519592020453156 -0.0575555611111112 0.0357678370220363 -0.0443971859319749 -0.0950055987610063 6 0.0409350151005759 0.0215161166087959 0.066013810696604 0.0170246417185036 -0.0087137344398341 7 -0.0133067711696839 0.039471477155637 0.081803033902884 0.0378597756068162 0.161573928906401 8 0.00464815162979496 0.0870482016585743 0.0364619253163841 0.0242563988221437 -0.00540540540540535 9 -0.0065690254605939 0.00449417296863455 -0.0794507386126902 -0.00963585336757214 0.0920289492753623 10 -0.0349593251724607 0.0396563268121783 0.00623821004785346 0.00718486836257099 -0.0335102864469238 11 0.163285345140315 0.0881705636419736 -0.0720459941135687 0.0180170251076774 -0.0329556825594124 12 -0.0144692739429943 -0.0327611354887446 -0.0749631850519835 0.0358769749886803 -0.121760738374157 13 -0.0091210649941397 0.0046461925316395 -0.188571500410903 -0.0410219948070036 -0.0141471705739692 14 0.0615232223395824 -0.0125792029335282 0.279252613329691 0.0181466347274759 0.204182132192789 15 -0.055783479824201 -0.0993864572944231 0.0419417794177106 -0.0159543753871918 0.114742965109194 16 0.059654700394602 -0.0997971173674129 -0.0743768981645451 0.0483159708274193 -0.127672655609489 17 0.127111059198639 0.12328131288453 0.204415312351234 -0.0348720251514867 0.0178571784963998 18 0.188310922856479 -0.0758588759940457 0.0513242966881769 0.0345031133229931 0.149294805641555 19 0.105283472284189 0.126996453592337 -0.0673321399503711 0.0594047062994025 0.114636396288536 20 -0.0259697046118052 0.145128634268151 -0.0352048162363402 0.0387640221659691 -0.110365219636669 21 -0.0107024883226516 -0.0818887041454602 -0.143810150506414 -0.0208332877600606 -0.109568393915835 22 0.0108529127991762 0.0725189127327245 -0.0309290510842087 0.0462998063708367 0.060678 23 0.0458220780984027 0.021677236128472 -0.00824400627629765 0.0404363361593831 -0.123681715446414 24 0.0892002313977412 0.0641663129339951 0.0197740917114322 -0.0742572523056138 0.0401167031363967 25 0.00710165965627929 0.0243686426170115 0.00832054696264129 0.0141709737606862 0.0266480014025245 26 -0.1076002016436 -0.084263948608652 -0.0142956449428218 -0.0131103618064156 -0.0392760232487696 27 -0.0168649433283326 0.0822706173827585 0.0111395732633883 0.0199028850964548 0.202275193824216 28 -0.0865901200692595 -0.00468164247552108 0.0512669678383791 -0.0374808888976583 0.00147838557066823 29 -0.144089221824456 0.0583170777358209 0.104305225530038 0.0273104383847697 0.10746971087894 30 -0.0309335291703789 -0.00463280979284366 -0.0611850845323148 0.0397420263785545 -0.0714475111408964 31 0.00869905062593064 0.00840050362283085 -0.0584604276817678 0.0444219634341085 0.0878552059801777 32 0.000271101331645527 -0.0475814945244284 -0.0264459900875935 0.0543131103031066 0.424914315780267 33 0.0156963449438863 0.0606359643878174 0.0198553655977374 -0.0552801971246409 0.810705656206495 34 -0.112457215429456 0.0315378514916261 -0.0385781792056568 0.00300106228519723 0.0981996604296305 35 0.141225129986886 0.0847347719778548 0.0050914519185913 0.00615861567479741 0.250745135518395 36 0.0766578546015506 -0.0671933800305645 0.00247718284936112 -0.0474054776174174 0.258564203593716 37 -0.0150285637888268 0.112677068690128 0.0104196913071443 -0.00785731780253895 0.144201153846154 38 0.0963818469039011 0.164374301223085 -0.000480014136807375 0.0522118635835639 -0.172880973596757 39 0.0638414702335995 0.0812844987536317 0.021983010625722 0.015668588559879 -0.204201591794403 40 0.0147921904827694 0.0131345309325559 0.0734044111519412 0.0350679294467178 0.181882418148039 41 -0.107696783473886 -0.100554191667324 0.034137094214273 -0.0844833448102158 0.205943046211536 42 0.0512185112665561 0.00950682756972974 0.0393327010516882 0.0100477896154182 0.349484552130874 43 0.0260580218888329 -0.0710577480631138 0.0247499013656455 0.0120420012864576 -0.148523349932792 44 0.0993963608425528 -0.0958468070256981 0.0606823009403501 0.0634553678397906 -0.00268648600652178 45 0.0727179274529785 0.0276854728621729 -0.0243649647173305 0.00294178886388375 -0.00057720429350711 46 0.0334017877153422 0.0391297759384332 0.0629952233165651 0.0354434257595902 0.155412202812491 47 0.0287311334704905 -0.0363015242204 -0.0728812401608975 -0.0654982863211075 -0.0698158591170196 48 0.0721756078993387 0.083229559514028 0.0894262597247232 0.0618479047153938 0.207792245305075 49 -0.0121837737190061 -0.0489617937687112 -0.0920510289570475 0.0225309087536143 -0.100185457166387 50 0.0719602361505099 -0.0526609939668714 0.0240332855861862 -0.0111317832514031 -0.00403822329103166 51 0.101203947021875 0.108623142072966 -0.000430495108960555 0.0704392235524952 0.0116673853330664 52 -0.0678668912004597 -0.0835400653995364 -0.0901589552144035 -0.0517101538813168 -0.0904220498867651 53 0.0614242743677729 0.142355379880353 -0.126297532229601 -0.0248697803112379 -0.0845735248491789 54 0.0964494349189872 0.072292909125583 0.0451388844435629 0.0517366366572519 -0.00127706283073486 55 -0.0275490014235215 -0.0212015938425758 -0.0346201667751777 -0.0635101475260616 -0.0716533504800502 56 0.00578643451687402 0.133512475675692 0.0855929120815441 0.0085461996950883 0.197488998305049 57 0.0409907066454335 0.0176632652512288 -0.00981660697299801 0.00986198133528014 0.109489049641818 58 -0.0332058522753009 0.011322565700095 -0.00586015544784511 -0.0422362997427843 0.0696172519583264 59 -0.0329267386262225 0.235112600936328 -0.0729782374334636 0.0557968694165871 -0.00786556296631775 60 -0.0690849138764506 -0.0433833963607173 -0.0288867245650746 -0.0428434456757951 -0.0642118969951958 61 -0.0187807171973173 -0.00194973575377548 -0.136135385997697 0.0203458200997599 -0.00264997994579609 62 0.0834088470562236 0.222723643085712 0.116738126611035 0.0647287684983659 -0.166948478267677 63 -0.0100420018982071 0.0621504433749629 0.00646542724243582 0.00637520513849699 0.112743453289538 64 -0.106419433354372 0.0166817496994298 -0.0645562227936071 0.0157077602067098 0.0423434387723321 65 -0.0752423682344104 -0.131515502562943 -0.0841670383536273 -0.000931240183032674 -0.203366522298373 66 -0.00667750257063006 -0.0587393185689948 0.101343371571628 0.00489302723788906 0.00381797077120247 67 0.133327174326394 0.0744226335907247 0.130576240255036 0.0755853280252675 0.19715527734115 68 -0.139920998932321 0.111094283292207 0.0154168138342049 -0.0267432095941791 0.0478303991325169 69 0.065286937539656 0.0958170202897869 -0.0579386779805592 -0.00446430829612183 -0.0728110955476636 70 -0.0368311440325349 -0.00991987052703711 0.0455109220974876 0.016367728501355 -0.0490525341406179 71 0.090062820967739 0.0603532647239684 0.0916767877553653 -0.0301216797967021 0.106039165752964 72 0.0181363698476342 0.0136397451631892 -0.000248385506883201 -0.00458406419939537 -0.0970228658765708 73 0.0712764513476181 0.0886031871031852 0.0832215498389025 -0.0255583694673189 -0.0376397159954652 74 0.0043342952623577 -0.0567173342172368 -0.0598175397408283 0.0100758983833259 -0.0308778269415176 75 -0.026598564197825 -0.0496948667444936 0.155086770248722 -0.0483491833509862 -0.0421281655212293 76 0.0533356221048907 0.024101637197448 -0.0295102725602993 0.0496920307217533 0.128247142394313 77 0.0477464602449696 0.0713189302495395 0.0314859022460452 -0.010238125532041 0.178950772811542 78 0.128883494314414 0.0261815691014128 0.0188378918653808 0.00938176367469773 -0.00770050432224638 79 0.0532363555502777 0.0491101025755257 -0.0403476018346814 0.0114395129832781 0.113244459513491 80 -0.000069845378332 0.0433708721029612 0.102414795809364 0.0257034606730714 0.12853043673146 81 0.0634181949397708 0.0752764956948345 0.0395632762634409 0.0537659782239259 0.0857770637105123 82 -0.0533224292479476 -0.0267639853751382 0.0192544058580468 -0.0136354137603559 0.0604087105830118 ; *------------------------------------------------------------------------------ * Scalars Scalar level level alpha /0.95/, v expected return for the portfolio / 0 /, T number of SELECTED scenarios; PARAMETER pk(s) pravdepodobnost nahodneho vynosu; T = card(s) - 1; * tady se musi pouzit loop aby jste zadefinovala ty pravdepodobnosti loop(s$k(s), pk(s) = 1/T); PARAMETER pl(s) pravdepodobnost nahodneho vynosu; loop(s$l(s), pl(s) = 1/T-1); PARAMETER ph(s) pravdepodobnost nahodneho vynosu; loop(s$h(s), ph(s) = 1/T-2); PARAMETER pw(s) pravdepodobnost nahodneho vynosu; loop(s$w(s), pw(s) = 1/T-3); PARAMETER pe(s) pravdepodobnost nahodneho vynosu; loop(s$e(s), pe(s) = 1/T-4); PARAMETER pr(s) pravdepodobnost nahodneho vynosu; loop(s$r(s), pr(s) = 1/T-5); PARAMETER pg(s) pravdepodobnost nahodneho vynosu; loop(s$g(s), pg(s) = 1/T-6); PARAMETER pu(s) pravdepodobnost nahodneho vynosu; loop(s$u(s), pu(s) = 1/T-7); PARAMETER po(s) pravdepodobnost nahodneho vynosu; loop(s$o(s), po(s) = 1/T-8); PARAMETER pf(s) pravdepodobnost nahodneho vynosu; loop(s$f(s), pf(s) = 1/T-9); *------------------------------------------------------------------------------ * Decision variables Variables objout objk objl objh objw obje objr objg obju objo objf ak al ah aw ae ar ag au ao af ; Positive variables yk(s),yl(s),yh(s),yw(s),ye(s),yr(s),yg(s),yu(s),yo(s),yf(s),z, xk(i),xl(i), xh(i),xw(i),xe(i),xr(i),xg(i),xu(i),xo(i),xf(i); *------------------------------------------------------------------------------ * Equations Equations CVaRobjk, CVaRobjl, CVaRobjh, CVaRobjw, CVaRobje, CVaRobjr, CVaRobjg, CVaRobju, CVaRobjo, CVaRobjf, CVaRobjout, help_cvark(s) help_cvarl(s) help_cvarh(s) help_cvarw(s) help_cvare(s) help_cvarr(s) help_cvarg(s) help_cvaru(s) help_cvaro(s) help_cvarf(s) par investk investl investh investw investe investr investg investu investo investf; CVaRobjout.. objout =e= (sum(j,q("82",j)*xk(j))+sum(j,q("81",j)*xl(j))+sum(j,q("80",j)*xh(j))+sum(j,q("79",j)*xw(j))+sum(j,q("78",j)*xe(j))+sum(j,q("77",j)*xr(j))+sum(j,q("76",j)*xg(j))+sum(j,q("75",j)*xu(j))+sum(j,q("74",j)*xo(j))+sum(j,q("73",j)*xf(j)))/10; CVaRobjk.. objk =e= z*sum(s$k(s), sum(j , pk(s)*q(s,j)*xk(j))) - (1-z)*(ak + ( (1/(1-level))*sum(s$k(s), pk(s)*yk(s)) )) ; help_cvark(s)$k(s).. yk(s) =g= -sum(j,q(s,j)*xk(j))-ak; investk.. sum(i, xk(i)) =e= 1 ; CVaRobjl.. objl =e= z*sum(s$l(s), sum(j , pl(s)*q(s,j)*xl(j))) - (1-z)*(al + ( (1/(1-level))*sum(s$l(s), pl(s)*yl(s)) )) ; help_cvarl(s)$l(s).. yl(s) =g= -sum(j,q(s,j)*xl(j))-al; investl.. sum(i, xl(i)) =e= 1 ; CVaRobjh.. objh =e= z*sum(s$h(s), sum(j , ph(s)*q(s,j)*xh(j))) - (1-z)*(ah + ( (1/(1-level))*sum(s$h(s), ph(s)*yh(s)) )) ; help_cvarh(s)$h(s).. yh(s) =g= -sum(j,q(s,j)*xh(j))-ah; investh.. sum(i, xh(i)) =e= 1 ; CVaRobjw.. objw =e= z*sum(s$w(s), sum(j , pw(s)*q(s,j)*xw(j))) - (1-z)*(aw + ( (1/(1-level))*sum(s$w(s), pw(s)*yw(s)) )) ; help_cvarw(s)$w(s).. yw(s) =g= -sum(j,q(s,j)*xw(j))-aw; investw.. sum(i, xw(i)) =e= 1 ; CVaRobje.. obje =e= z*sum(s$e(s), sum(j , pe(s)*q(s,j)*xe(j))) - (1-z)*(ae + ( (1/(1-level))*sum(s$e(s), pe(s)*ye(s)) )) ; help_cvare(s)$e(s).. ye(s) =g= -sum(j,q(s,j)*xe(j))-ae; investe.. sum(i, xe(i)) =e= 1 ; CVaRobjr.. objr =e= z*sum(s$r(s), sum(j , pr(s)*q(s,j)*xr(j))) - (1-z)*(ar + ( (1/(1-level))*sum(s$r(s), pr(s)*yr(s)) )) ; help_cvarr(s)$r(s).. yr(s) =g= -sum(j,q(s,j)*xr(j))-ar; investr.. sum(i, xr(i)) =e= 1 ; CVaRobjg.. objg =e= z*sum(s$g(s), sum(j , pg(s)*q(s,j)*xg(j))) - (1-z)*(ag + ( (1/(1-level))*sum(s$g(s), pg(s)*yg(s)) )) ; help_cvarg(s)$g(s).. yg(s) =g= -sum(j,q(s,j)*xg(j))-ag; investg.. sum(i, xg(i)) =e= 1 ; CVaRobju.. obju =e= z*sum(s$u(s), sum(j , pu(s)*q(s,j)*xu(j))) - (1-z)*(au + ( (1/(1-level))*sum(s$u(s), pu(s)*yu(s)) )) ; help_cvaru(s)$u(s).. yu(s) =g= -sum(j,q(s,j)*xu(j))-au; investu.. sum(i, xu(i)) =e= 1 ; CVaRobjo.. objo =e= z*sum(s$o(s), sum(j , po(s)*q(s,j)*xo(j))) - (1-z)*(ao + ( (1/(1-level))*sum(s$o(s), po(s)*yo(s)) )) ; help_cvaro(s)$o(s).. yo(s) =g= -sum(j,q(s,j)*xo(j))-ao; investo.. sum(i, xo(i)) =e= 1 ; CVaRobjf.. objf =e= z*sum(s$f(s), sum(j , pf(s)*q(s,j)*xf(j))) - (1-z)*(af + ( (1/(1-level))*sum(s$f(s), pf(s)*yf(s)) )) ; help_cvarf(s)$f(s).. yf(s) =g= -sum(j,q(s,j)*xf(j))-af; investf.. sum(i, xf(i)) =e= 1 ; par.. z =l= 1 ; Model var1 / all / ; $onecho > "%emp.info%" bilevel z max objf yf xf af CVaRobjf help_cvarf investf par max objo yo xo ao CVaRobjo help_cvaro investo max obju yu xu au CVaRobju help_cvaru investu max objg yg xg ag CVaRobjg help_cvarg investg max objr yr xr ar CVaRobjr help_cvarr investr max obje ye xe ae CVaRobje help_cvare investe max objw yw xw aw CVaRobjw help_cvarw investw max objh yh xh ah CVaRobjh help_cvarh investh max objl yl xl al CVaRobjl help_cvarl investl max objk yk xk ak CVaRobjk help_cvark investk $offecho Solve var1 using emp maximizing objout; *Solve var1 using nlp maximizing obj; DISPLAY v,T,xk.l,xl.l,xh.l,xw.l,xe.l,xr.l,xg.l,xu.l,xo.l,xf.l,objout.l,z.l,objk.l,objl.l,objh.l,objw.l,obje.l,objr.l,objg.l,obju.l,objo.l,objf.l;