$TITLE:M92.GMS CALIBRATION EXERCISE, FROM SHEET IO-2, M90-IOTABLE.XLS *CALIBRATES MODEL TO SHEET IO-2 IN M90-IOTABLE.XLS *assumes 10% of factors are sector specific to prevent "flats" problem *assumes domestic and foreign goods are Armington substitues, sigma = 5 *assume foreign goods only used for consumption, not intermediate usage *aggregates household, government,and investment demand to single consumer SETS R rows of the IO table /1*8/ C columns of the IO table /1*11/; SETS RS(R) subset of rows for production sectors /1*5/ CS(C) subset of columns for production sectors /1*5/; SETS RV(R) subset of rows for value added /6*7/ CD(C) subset of columns for final demand /6*8/; SETS I allows switching of rows and columns in sectors /1*5/; PARAMETERS IO(RS,I) extracts intermediate use for $prod blocks VA(RV,I) extracts factor requirements for $prod blocks TAX(I) computes implied tax rates assuming output taxes VALUE(I) value of sector I's output at consumer prices PRODQ(I) output quantity = value (consumer prices = 1) PRODP(I) producer prices calculated from consumer prices (=1) and taxes PRODR(I) producer revenue: prodp*prodq COST(I) cost of all inputs to the sector: should equal prodr DCONS(I) final demand (aggregates household government and investment demand) FCONS(I) demand for foreign goods inclusive of tariffs (domestic prices = 1) EX(I) exports of sector i TAR(I) implied tariff rates on foreign goods PIM(I) implied foreign prices: 1 = pim*(1+tar) TBAL trade balance: exports minus imports SHARE share of each factor in each sector that is sector specific; SHARE = 0.1; TABLE BENCH(*,*) 1 2 3 4 5 1 19.7 24.9 76.0 19.2 13.0 2 7.9 124.9 187.5 15.9 20.3 3 19.6 29.5 311.8 129.8 63.7 4 37.4 105.3 317.1 723.2 143.0 5 12.4 8.6 18.7 57.1 264.4 6 60.3 167.2 508.8 680.1 556.7 7 75.2 50.7 175.7 821.4 202.1 8 -10.3 4.7 8.7 26.4 -15.3 + 6 7 8 9 10 11 1 71.2 0.0 8.4 10.5 14.7 6.0 2 39.4 0.0 23.6 153.6 55.2 2.1 3 296.5 0.0 504.0 495.5 239.7 6.4 4 1002.3 21.4 87.6 141.0 75.0 30.2 5 188.7 755.8 7.2 4.4 36.9 32.5 6 0 7 0 8 0 ; DISPLAY BENCH; IO(RS,I) = BENCH(RS,I); VA(RV,I) = BENCH(RV,I); DISPLAY IO, VA; VALUE(I) = SUM(RS, BENCH(RS, I)) + SUM(RV, BENCH(RV,I)) + BENCH("8",I); TAX(I) = BENCH("8",I)/VALUE(I); DISPLAY VALUE, TAX; PRODQ(I) = VALUE(I); PRODP(I) = 1 - TAX(I); PRODR(I) = PRODQ(I)*PRODP(I); COST(I) = SUM(RS, BENCH(RS, I)) + SUM(RV, BENCH(RV,I)); DISPLAY PRODQ, PRODP, PRODR, COST; DCONS(I) = SUM(CD, BENCH(I, CD)) - BENCH(I,"10") - BENCH(I,"11"); FCONS(I) = BENCH(I, "10") + BENCH(I, "11"); EX(I) = BENCH(I, "9"); DISPLAY DCONS, FCONS, EX; TAR(I) = BENCH(I, "11")/FCONS(I); PIM(I) = 1/(1+TAR(I)); TBAL = SUM(I, EX(I) - (FCONS(I)*PIM(I))); DISPLAY TAR, PIM; $ONTEXT $MODEL:IOCAL $SECTORS: X(I) !domestic production of good i E(I) !exports of good i M(I) !imports of good i ARM(I) !Armington aggregator of domest (X) and foreign (M) good i WEL !welfare $COMMODITIES: PX(I) !price of domestic good i PXF(I) !price of foreign good i PFX !price of "foreign exchange" PF(RV) !price of factor rv (mobile factors) PFS(RV,I) !price of specific factor rv in sector i PARM(I) !price of the Armington aggregate good i PW !real consumer price index $CONSUMERS: CONS !representative consumer $PROD:X(I) s:1 O:PX(I) Q:PRODQ(I) P:PRODP(I) A:CONS T:TAX(I) I:PX(RS) Q:IO(RS,I) P:1 I:PF(RV) Q:(VA(RV,I)*(1-SHARE)) P:1 I:PFS(RV,I) Q:(VA(RV,I)*SHARE) P:1 $PROD:E(I) O:PFX Q:EX(I) P:1 I:PX(I) Q:EX(I) P:1 $PROD:M(I) O:PXF(I) Q:FCONS(I) I:PFX Q:(FCONS(I)*PIM(I)) A:CONS T:TAR(I) $PROD:ARM(I) s:5 O:PARM(I) Q:(DCONS(I)+FCONS(I)) I:PX(I) Q:DCONS(I) I:PXF(I) Q:FCONS(I) $PROD:WEL s:1 O:PW Q:(SUM(I, DCONS(I)+FCONS(I))) I:PARM(I) Q:(DCONS(I)+FCONS(I)) $DEMAND:CONS D:PW Q:(SUM(I, DCONS(I)+FCONS(I))) E:PF(RV) Q:(SUM(I, VA(RV,I))*(1-SHARE)) E:PFS(RV,I) Q:(VA(RV,I)*(SHARE)) E:PFX Q:(-TBAL) $OFFTEXT $SYSINCLUDE MPSGESET IOCAL PW.FX = 1; IOCAL.ITERLIM = 0; $INCLUDE IOCAL.GEN SOLVE IOCAL USING MCP; *perturbation: check that calibrated solution is indeed an equilibrium X.L("2") = 2; IOCAL.ITERLIM = 5000; $INCLUDE IOCAL.GEN SOLVE IOCAL USING MCP; *counterfactual: abolish all taxes TAX(I) = 0; TAR(I) = 0; $INCLUDE IOCAL.GEN SOLVE IOCAL USING MCP;