$TITLE: M8-6a.GMS: Full two-country Heckscher-Ohlin model * formulation as an MPEC allows solutions for joint welfare max * and non-cooperative Nash equilibrium in tariffs $ONTEXT XHH YHH XHF YHF XFF YFF XFH YFH WH WF CONSH CONSF PXH 150 -50 -100 PYH 50 50 -100 PXF 50 50 -100 PYF 150 -50 -100 PWH 200 -200 PWF 200 -200 PLH -120 -10 130 PKH -30 -40 70 PLF -40 -30 70 PKF -10 -120 130 $OFFTEXT PARAMETERS SIZEH, SIZEF scales the endowments of countries h and f up and down WELBH, WELBF store free trade (B for benchmark) welfare level shares CASE denotes which case (of size differences) is displayed RESULTS(*, *), RESULTS2(*,*,*); SIZEH = 1; SIZEF = 1; WELBH = 0.5; WELBF = 0.5; VARIABLES JWELMAX joint welfare maximization WELHMAX welfare of country h WELFMAX welfare of country f TARH tariff of country h TARF tariff of country f; POSITIVE VARIABLES XHH X home prododuction - home consumption YHH Y home prododuction - home consumption XHF X home prododuction - foreign consumption YHF Y home prododuction - foreign consumption XFF X foreign prododuction - foreign consumption YFF Y foreign prododuction - foreign consumption XFH X foreign prododuction - home consumption YFH Y foreign prododuction - home consumption WH Activity level for sector WH (Hicksian domestic welfare index) WF Activity level for sector WF (Hicksian foreign welfare index) PXH Price index for commodity home X PYH Price index for commodity home Y PXF Price index for commodity foreign X PYF Price index for commodity foreign X PWH Price index for welfare domestic (expenditure function) PWF Price index for welfare foerign (expenditure function) PLH home price labor PKH home price capital PLF foreign price labor PKF foreign price capital CONSH Income definition for home agent CONSF Income definition for foreign agent; EQUATIONS OBJJ objective function for maximizing joint welfare OBJH objective function of country h (maximize WH) OBJF objective function of country f (maximize WF) PRF_XHH Zero profit for sector XHH PRF_YHH Zero profit for sector YHH PRF_XHF Zero profit for sector XHF PRF_YHF Zero profit for sector YHF PRF_XFF Zero profit for sector XFF PRF_YFF Zero profit for sector YFF PRF_XFH Zero profit for sector XFH PRF_YFH Zero profit for sector YFH PRF_WH Zero profit for sector WH (Hicksian home welfare index) PRF_WF Zero profit for sector WF (Hicksian foreign welfare index) MKT_XH Supply-demand balance for commodity XH MKT_XF Supply-demand balance for commodity XF MKT_YH Supply-demand balance for commodity YH MKT_YF Supply-demand balance for commodity YF MKT_LH Supply-demand balance for primary factor LH MKT_KH Supply-demand balance for primary factor KH MKT_LF Supply-demand balance for primary factor LF MKT_KF Supply-demand balance for primary factor KF MKT_WH Supply-demand balance for aggregate home demand MKT_WF Supply-demand balance for aggregate foreign demand I_CONSF Income definition for CONSF I_CONSH Income definition for CONSH; * Zero profit conditions OBJJ.. JWELMAX =E= WH**WELBH*WF**WELBF; OBJH.. WELHMAX =E= WH; OBJF.. WELFMAX =E= WF; PRF_XHH.. 150 * PLH**(4/5) * PKH**(1/5) =G= 150 * PXH; PRF_YHH.. 50 * PLH**(1/5) * PKH**(4/5) =G= 50 * PYH; PRF_XFF.. 50 * PLF**(4/5) * PKF**(1/5) =G= 50 * PXF; PRF_YFF.. 150 * PLF**(1/5) * PKF**(4/5) =G= 150 * PYF; PRF_XHF.. 50 * (1+TARF) * PXH =G= 50 * PXF; PRF_YHF.. 50.1 * PYH =G= 50 * PYF; PRF_XFH.. 50.1 * PXF =G= 50 * PXH; PRF_YFH.. 50 * (1+TARH) * PYF =G= 50 * PYH; PRF_WH.. 200 * PXH**0.5 * PYH**0.5 =G= 200 * PWH; PRF_WF.. 200 * PXF**0.5 * PYF**0.5 =G= 200 * PWF; * Market clearance conditions MKT_XH.. 150 * XHH + 50 * XFH =G= 50 * XHF + 100 * WH * PWH /PXH; MKT_XF.. 50 * XFF + 50 * XHF =G= 50.01 * XFH + 100 * WF * PWF/PXF; MKT_YH.. 50 * YHH + 50 * YFH =G= 50.01 * YHF +100 * WH * PWH/PYH; MKT_YF.. 150 * YFF + 50 * YHF =G= 50 * YFH + 100 * WF * PWF/PYF; MKT_LH.. 130*SIZEH =G= 120 * XHH * PXH/PLH + 10 * YHH * PYH/PLH; MKT_KH.. 70*SIZEH =G= 30 * XHH * PXH/PKH + 40 * YHH * PYH/PKH; MKT_LF.. 70*SIZEF =G= 40 * XFF * PXF/PLF + 30 * YFF * PYF/PLF; MKT_KF.. 130*SIZEF =G= 120 * YFF * PYF/PKF + 10 * XFF * PXF/PKF; MKT_WH.. 200 * WH =G= CONSH/PWH; MKT_WF.. 200 * WF =G= CONSF/PWF; * Income balance states I_CONSH.. CONSH =E= 130*SIZEH*PLH + 70*SIZEH*PKH + 50*YFH*PYF*TARH; I_CONSF.. CONSF =E= 70*SIZEF*PLF + 130*SIZEF*PKF + 50*XHF*PXH*TARF; OPTION MPEC=nlpec; MODEL HO / OBJJ, OBJH, OBJF, PRF_XHH.XHH, PRF_YHH.YHH, PRF_XHF.XHF, PRF_YHF.YHF, PRF_XFF.XFF, PRF_YFF.YFF, PRF_XFH.XFH, PRF_YFH.YFH, PRF_WH.WH, PRF_WF.WF, MKT_XH.PXH, MKT_XF.PXF, MKT_YH.PYH, MKT_YF.PYF, MKT_LH.PLH, MKT_KH.PKH, MKT_LF.PLF, MKT_KF.PKF, MKT_WH.PWH, MKT_WF.PWF, I_CONSF.CONSF, I_CONSH.CONSH /; * Check the benchmark XHH.L =1; YHH.L =1; XHF.L =1; YHF.L =0; XFF.L =1; YFF.L =1; XFH.L =0; YFH.L =1; WH.L =1; WF.L =1; PXH.L =1; PXF.L =1; PYH.L =1; PYF.L =1; PLH.L =1; PKH.L =1; PLF.L =1; PKF.L =1; PWH.FX =1; PWF.L =1; * "benchmark" with countries symmetric and free trade: * all activities, prices = 1 HO.ITERLIM = 1000; SOLVE HO USING MPEC MAXIMIZING JWELMAX; * allow for size differences (scaling endowments up and down) SIZEH = 1; SIZEF = 1; TARH.FX = 0; TARF.FX = 0; SOLVE HO USING MPEC MAXIMIZING JWELMAX; * store free trade welfare levels, used to compute JWELMAX WELBH = WH.L/(WH.L + WF.L); WELBF = WF.L/(WH.L + WF.L); DISPLAY WELBH, WELBF; SOLVE HO USING MPEC MAXIMIZING JWELMAX; RESULTS("SIZEH", "FREETR") = SIZEH; RESULTS("WELJ", "FREETR") = JWELMAX.L; RESULTS("WELH", "FREETR") = WH.L; RESULTS("WELF", "FREETR") = WF.L; RESULTS("TARIFFH", "FREETR") = TARH.L; RESULTS("TARIFFF", "FREETR") = TARF.L; * solve for the (unilateral by h) non-cooperative Nash equilibrium TARH.LO = -INF; TARH.UP = +INF; SOLVE HO USING MPEC MAXIMIZING WELHMAX; RESULTS("SIZEH", "UNIH") = SIZEH; RESULTS("WELJ", "UNIH") = JWELMAX.L; RESULTS("WELH", "UNIH") = WH.L; RESULTS("WELF", "UNIH") = WF.L; RESULTS("TARIFFH", "UNIH") = TARH.L; RESULTS("TARIFFF", "UNIH") = TARF.L; * solve for the joint welfare max TARH.LO = -INF; TARH.UP = +INF; TARF.LO = -INF; TARF.UP = +INF; SOLVE HO USING MPEC MAXIMIZING JWELMAX; RESULTS("SIZEH", "JMAX") = SIZEH; RESULTS("WELJ", "JMAX") = JWELMAX.L; RESULTS("WELH", "JMAX") = WH.L; RESULTS("WELF", "JMAX") = WF.L; RESULTS("TARIFFH", "JMAX") = TARH.L; RESULTS("TARIFFF", "JMAX") = TARF.L; DISPLAY RESULTS; * now let's look at a non-cooperative outcome in tariffs * iterative procedure: * max WH subject to TARF fixed * hold TARH at it's solution level and free up TARF * max WF solve model for fixed TARF * repeat 10 time SETS J size difference for the countries /J1*J9/; SETS I iterative procedure to determine Nash tariffs /I1*I10/; LOOP(J, SIZEH = 0.9 + 0.1*ORD(J); SIZEF = 1.1 - 0.1*ORD(J); TARH.FX = 0; TARF.FX = 0; SOLVE HO USING MPEC MAXIMIZING JWELMAX; * store free trade welfare levels in order to get * correct value of JWELMAX WELBH = WH.L/(WH.L + WF.L); WELBF = WF.L/(WH.L + WF.L); SOLVE HO USING MPEC MAXIMIZING JWELMAX; RESULTS2(J, "SIZEH", "FREETR") = SIZEH; RESULTS2(J, "WELJ", "FREETR") = JWELMAX.L; RESULTS2(J, "WELH", "FREETR") = WH.L; RESULTS2(J, "WELF", "FREETR") = WF.L; RESULTS2(J, "TARIFFH", "FREETR") = TARH.L; RESULTS2(J, "TARIFFF", "FREETR") = TARF.L; * loop to compute non-cooperative Nash equilibrium in tariffs * fist solve for TARH given TARF, then TARF given the existing * value of TARH. Loop 10 times to get best-response Nash eq. LOOP(I, TARH.LO = -INF; TARH.UP = +INF; TARF.FX = TARF.L; SOLVE HO USING MPEC MAXIMIZING WELHMAX; TARF.LO = -INF; TARF.UP = +INF; TARH.FX = TARH.L; SOLVE HO USING MPEC MAXIMIZING WELFMAX; ); RESULTS2(J, "SIZEH", "NONCOOP") = SIZEH; RESULTS2(J, "WELJ", "NONCOOP") = JWELMAX.L; RESULTS2(J, "WELH", "NONCOOP") = WH.L; RESULTS2(J, "WELF", "NONCOOP") = WF.L; RESULTS2(J, "TARIFFH", "NONCOOP") = TARH.L; RESULTS2(J, "TARIFFF", "NONCOOP") = TARF.L; ); DISPLAY RESULTS, RESULTS2; $LIBINCLUDE XLDUMP RESULTS M8.XLS SHEET2!B3 $LIBINCLUDE XLDUMP RESULTS2 M8.XLS SHEET3!B3