$TITLE M6-5.GMS: Public intermediate good with optimal provision * technique for modeling infrastructure for example $ONTEXT Production Sectors Consumers Markets| X Y G W1 CONS1 GOVT -------------------------------------------------------------- PX | 100 -100 PY | 100 -100 PG | 50 -50 PL | -80 -80 -40 200 TAX | -20 -20 -10 50 PW | 200 -200 -------------------------------------------------------------- X = ALPHA*L ALPHA = F(G) ALPHA viewed as exogenous by firms $OFFTEXT PARAMETERS SHX, SHY shares of X and Y in consumer's utility INFPROD productivity parameter of the public good in X output WELF; SHX = 0.5; SHY = 0.5; INFPROD = 0; POSITIVE VARIABLES X Activity level for sector X Y Activity level for sector Y W Activity level for sector W G Activity level for government sector PX Price index for commodity X PY Price index for commodity Y PG Private valuation of the public good PL Price index for primary factor L PW Price index for welfare 1(expenditure function) GOVT Budget restriction for government CONS Income definition for CONS TAX Uniform value-added tax rate ALPHA Public intermediary good multiplier on productivity; EQUATIONS PRF_X Zero profit for sector X PRF_Y Zero profit for sector Y PRF_W Zero profit for sector W1 PRF_G Zero profit in government sector MKT_X Supply-demand balance for commodity X MKT_Y Supply-demand balance for commodity Y MKT_G Supply-demand balance for commodity G MKT_L Supply-demand balance for primary factor L MKT_W Supply-demand balance for consumer 1 I_G Budget restriction for government I_CONS Income definition for CONS A_TAX Auxiliary for government provision INFRA Auxiliary for public intermediate good calculation; * Zero profit conditions: PRF_X.. 80*PL * (1+TAX)/ALPHA =G= 100*PX; PRF_Y.. 80*PL * (1+TAX) =G= 100*PY; PRF_W .. 200*PX**(SHX) * PY**(SHY) =E= 200*PW; PRF_G.. 40*PL * (1+TAX) =G= 100*PG; * Market clearing conditions: MKT_X.. 100*X =G= 200*SHX*W*PW/PX; MKT_Y.. 100*Y =G= 200*SHY*W*PW/PY; MKT_G.. 100*G =G= GOVT/ PG; MKT_L.. 200 =G= (80*X/ALPHA + 80*Y + 40*G); MKT_W.. 200*W =G= CONS/PW; * Income constraints: I_G.. GOVT =G= PL*(80*X/ALPHA + 80*Y + 40*G )*TAX; I_CONS.. CONS =E= 200*PL; * Auxiliary constraints: A_TAX.. PG =E= PX*INFPROD*(X/ALPHA); INFRA.. ALPHA =E= 1 + INFPROD*G; MODEL PUBINT /PRF_X.X, PRF_Y.Y, PRF_W.W, PRF_G.G, MKT_X.PX, MKT_Y.PY, MKT_L.PL, MKT_W.PW, MKT_G.PG, I_G.GOVT, I_CONS.CONS, A_TAX.TAX, INFRA.ALPHA /; X.L =1; Y.L =1; W.L =1; G.L =1; PL.FX =1; PX.L =1; PY.L =1; PG.L =0.5; PW.L =1; CONS.L =200; GOVT.L =50; ALPHA.L = 1; TAX.L = .25; PUBINT.ITERLIM = 0; SOLVE PUBINT USING MCP; * with INFPROD = 0 initially, the optimal tax should be zero PUBINT.ITERLIM = 2000; SOLVE PUBINT USING MCP; * now set INFPROD = 2, optimal tax and provision should be positive INFPROD = 2; TAX.L = 0.25; G.L = 1; SOLVE PUBINT USING MCP; WELF = W.L*100; DISPLAY WELF; * now let's check by "brute force" whether the answer is right * loop over fixed values of TAX SETS I /I1*I15/; PARAMETERS WELFARE(I) TAXRATE(I); LOOP(I, TAX.FX = 0.29 + 0.01*ORD(I); SOLVE PUBINT USING MCP; WELFARE(I) = 100*W.L; TAXRATE(I) = TAX.L; ); DISPLAY TAXRATE, WELFARE;