$ontext This model introduces taxes. The important lesson is to keep track of what prices firms and consumers face. It is not possible to calibrate a benchmark equilibrium with all prices equal to one. For example, if a production input is taxed, then if its consumer price is one, the producer price is specified as (1 + t). On the other hand, if the producer price is unity, the consumer price is 1/(1+t). In the benchmark data matrix we enter values received by firms and consumers, so that residual is government revenue. (For simplicity, we assume here that tax revenue is returned to consumers as lump-sum income.) The first formulation of the model assumes a 100% tax on labor input to the production of X. If the consumer price of L is unity, then X firms have a price equal to 2.0. The following accounting matrix adds a row for tax collections (negative) and with tax revenues appearing as a consumer endowment (i.e., lump sum rebate): Production Sectors Consumers Markets | X Y W | CONS ------------------------------------------------------ PX | 100 -100 | PY | 100 -100 | PW | 200 | -200 PL | -20 -60 | 80 PK | -60 -40 | 100 TAX | -20 0 | 20 ------------------------------------------------------ $offtext * Declare parameters which will be need to specify the * benchmark and counterfactual cases. SCALAR TX Proportional output tax on sector X, TY Proportional output tax on sector Y, TLX Ad-valorem tax on labor inputs to X, TKX Ad-valorem tax on capital inputs to X; $ONTEXT $MODEL:M2_1S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW ! Price index for welfare (expenditure function) $CONSUMERS: CONS ! Income level for consumer CONS * In the benchmark data, tax payments on labor inputs to * the X sector equal the value of labor inputs. Hence, the * ad-valorem tax rate, TL, equals 100%. This means that the user * cost of labor equals PL * (1 + TL) = 2. * When the benchmark price of a production input or output is not * equal to unity, it is necessary to add a reference price field. * The relative prices of inputs fix the marginal rate of substitution * (on inputs, marginal rate of transformation on outputs). * Benchmark reference prices and reference quantities * are needed to provide a first order approximation of the * underlying technology. (The quantity fields alone provide * a zero order approximation. The quantities, prices and elasticity * parameters together provide a second-order approximation.) * N.B. The reference price for production inputs equals 1 plus * the benchmark ad-valorem tax rate. This value does not change * with the tax rate in a counter-factual. $PROD:X s:1 O:PX Q:100 A:CONS T:TX ! Output tax initially 0. I:PL Q: 20 P:2 A:CONS T:TLX ! Labor tax = 1 in benchmark I:PK Q: 60 A:CONS T:TKX ! Capital tax initially 0. * Y sector will be subject to an output tax in the counterfactual: $PROD:Y s:1 O:PY Q:100 T:TY ! Output tax initially 0. I:PL Q:60 I:PK Q:40 * Note that the demand for X equals 100 -- we measure X in * units of benchmark value, gross of tax: $PROD:W s:1 O:PW Q:200 I:PX Q:100 I:PY Q:100 $DEMAND:CONS D:PW Q:200 E:PL Q:80 E:PK Q:100 $OFFTEXT $SYSINCLUDE mpsgeset M2_1S * Note that for this example, we do not fix a numeraire. For * larger models, it is best to let the solver do the normalization. * Some care is needed, however, in interpreting the solution. * Benchmark replication: TX = 0; TY = 0; TLX = 1; TKX = 0; M2_1S.ITERLIM = 0; $INCLUDE M2_1S.GEN SOLVE M2_1S USING MCP; M2_1S.ITERLIM = 2000; * In the first counterfactual, we replace the tax on labor inputs * by a uniform tax on both factors: TLX = 0.25; TKX = 0.25; TX = 0; TY = 0; $INCLUDE M2_1S.GEN SOLVE M2_1S USING MCP; $ontext In the next counterfactual, eliminate taxes on X sector inputs and replace with a single tax on X sector output. In the uniform input tax equilibrium, we have: PX* * 100 = (1 + 0.25) * VA(PL*,PK*) where PX*, PL* and PK* are equilibrium prices for X, L and K. We then see that: PX* * 100 * 0.8 = VA(PL*, PK*) In other words, an output tax of 20% (defined on a gross basis) is equivalent to to an input tax of 25% (defined on a net basis). The application of a 20% output tax in place of a 25% input tax therefore has no effect on the equilibrium. To this this, we can run the numbers: $offtext TLX = 0; TKX = 0; TX = 0.2; TY = 0; $INCLUDE M2_1S.GEN SOLVE M2_1S USING MCP; * One more equivalence can be demonstrated with this small model. * The following counterfactual demonstrates that a 20% tax on the * output of X is the same as a 25% subsidy to the production * of Y. Absolute prices may differ in terms of the numeraire, * but all quantities and welfare are the same. TKX = 0; TLX = 0; TX = 0; TY = -0.25; $INCLUDE M2_1S.GEN SOLVE M2_1S USING MCP;
TABLE BMFLOW(*,*) Benchmark Flows (in value terms) X Y W CONS X 100 -100 Y 100 -100 W 200 -200 L -20 -60 80 K -60 -40 100 TAX -20 0 20 SET I Goods /X, Y/ F Factors /L, K/; ALIAS (I,J) PARAMETER YBAR(I) Benchmark output levels FDBAR(F,I) Benchmark factor inputs CBAR(I) Benchmark final demand PBAR(F,I) Benchmark factor price ENDOW(F) Factor endowments TXF(F,I) Ad-valorem tax rate on sector I inputs TXO(I) Proportioanl tax rate on sector I outputs UBAR Benchmark expenditure; * Extract values from the table: YBAR(I) = BMFLOW(I,I); FDBAR(F,I) = -BMFLOW(F,I); CBAR(I) = -BMFLOW(I,"W"); UBAR = SUM(I, CBAR(I)); ENDOW(F) = BMFLOW(F,"CONS"); TXF("L",I) = -BMFLOW("TAX",I) / FDBAR("L",I); PBAR(F,I) = 1 + TXF(F,I); TXO(I) = 0; $ONTEXT $MODEL:M2_1 $SECTORS: A(I) ! ACTIVITY LEVEL W ! WELFARE INDEX $COMMODITIES: PW ! UTILITY "PRICE" P(I) ! GOODS PRICES PF(F) ! FACTOR PRICES $CONSUMERS: CONS ! REPRESENTATIVE CONSUMER $PROD:A(I) s:1 O:P(I) Q:YBAR(I) A:CONS T:TXO(I) I:PF(F) Q:FDBAR(F,I) P:PBAR(F,I) A:CONS T:TXF(F,I) $PROD:W s:1 O:PW Q:UBAR I:P(I) Q:CBAR(I) $DEMAND:CONS D:PW Q:UBAR E:PF(F) Q:ENDOW(F) $OFFTEXT $SYSINCLUDE mpsgeset M2_1 M2_1.ITERLIM = 0; $INCLUDE M2_1.GEN SOLVE M2_1 USING MCP; M2_1.ITERLIM = 2000; PARAMETER REPORT Summary report; REPORT("WELFARE"," ","BENCH") = W.L; REPORT("PRICE",I,"BENCH") = P.L(I) / PW.L; REPORT("PRICE",F,"BENCH") = PF.L(F) / PW.L; REPORT("OUTPUT",I,"BENCH") = A.L(I) * YBAR(I); * Compute tax revenue as the difference between * the value of expenditure and endowment income: REPORT("TAXREV"," ","BENCH") = W.L*PW.L*UBAR - SUM(F,PF.L(F)*ENDOW(F)); * Apply a uniform tax on X: TXF(F,"X") = 0.25; $INCLUDE M2_1.GEN SOLVE M2_1 USING MCP; REPORT("WELFARE"," ","UNIF_X") = W.L; REPORT("PRICE",I,"UNIF_X") = P.L(I) / PW.L; REPORT("PRICE",F,"UNIF_X") = PF.L(F) / PW.L; REPORT("OUTPUT",I,"UNIF_X") = A.L(I) * YBAR(I); REPORT("TAXREV"," ","UNIF_X") = W.L*PW.L*UBAR - SUM(F,PF.L(F)*ENDOW(F)); * Show that the equilibrium a uniform input tax is logically * equivalent to a uniform output tax: TXF(F,I) = 0; TXO("X") = 0.20; $INCLUDE M2_1.GEN SOLVE M2_1 USING MCP; REPORT("WELFARE"," ","TAX_X") = W.L; REPORT("PRICE",I,"TAX_X") = P.L(I) / PW.L; REPORT("PRICE",F,"TAX_X") = PF.L(F) / PW.L; REPORT("OUTPUT",I,"TAX_X") = A.L(I) * YBAR(I); REPORT("TAXREV"," ","TAX_X") = W.L*PW.L*UBAR - SUM(F,PF.L(F)*ENDOW(F)); * Finally, demonstrate the equivalence of a tax on X and a * subsidy on Y: TXF(F,I) = 0; TXO("X") = 0; TXO("Y") = -0.25; $INCLUDE M2_1.GEN SOLVE M2_1 USING MCP; REPORT("WELFARE"," ","SBSD_Y") = W.L; REPORT("PRICE",I,"SBSD_Y") = P.L(I) / PW.L; REPORT("PRICE",F,"SBSD_Y") = PF.L(F) / PW.L; REPORT("OUTPUT",I,"SBSD_Y") = A.L(I) * YBAR(I); REPORT("TAXREV"," ","SBSD_Y") = W.L*PW.L*UBAR - SUM(F,PF.L(F)*ENDOW(F)); * Provide a summary report of results at the end: DISPLAY REPORT;
$ONTEXT Following model M1-4A, we introduce additional activities which transform (supply) household owned factors into production inputs. In this example, the consumer owns 200 units of leisure, supplies 100 (LS) in the benchmark and retains 100 as leisure. Tax is applied to both labor and capital supply to the market. (The leisure margin is untaxed.) Benchmark value flows: Production Sectors Consumers Markets | A B W TK TK CONS ---------------------------------------------------------- PX | 120 -120 PY | 120 -120 PW | 340 -340 PLS | -48 -72 120 PKS | -72 -48 120 100 PL | -100 -100 200 PK | -100 TAX | -20 -20 40 --------------------------------------------------------- Activity TL transforms leisure into labor supply, and TK transforms capital into capital supply. Scaling is a matter of personal taste. In most applied models, market prices are scaled to unity in the benchmark. This makes it easier to scan for deviations and reduces the amount of data which must be handled. On the other hand, there may be situations in which the most natural approach is to adopt reference prices which differ from unity. Here, we will demonstrate how it is possible to rescale prices to other values in setting up the model. In the following, we scale the benchmark prices for X, Y, LS and KS to be 1.2. In this way, quantities measure NET OF TAX value. $OFFTEXT * Declare parameters to be used in setting up counter-factual * equilibria: SCALAR TXL Labor income tax rate, TXK Capital income tax rate; $ONTEXT $MODEL:M2_2S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) TL ! Supply activity for L TK ! Supply activity for K $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K (net of tax) PLS ! Price index for primary factor L (gross of tax) PKS ! Price index for primary factor K (gross of tax) PW ! Price index for welfare (expenditure function) $CONSUMERS: CONS ! Income level for consumer CONS * The P: fields shown here present the benchmark prices. * Strictly speaking, they could be omitted because the * marginal rate of substitution remains equal to unity when * the reference price of inputs are the same. $PROD:X s:1 O:PX Q:100 P:1.2 I:PLS Q:40 P:1.2 I:PKS Q:60 P:1.2 $PROD:Y s:1 O:PY Q:100 P:1.2 I:PLS Q:60 P:1.2 I:PKS Q:40 P:1.2 * The income tax applies to labor and capital supplies: $PROD:TL O:PLS Q:100 P:1.2 I:PL Q:100 P:1 A:CONS T:TXL $PROD:TK O:PKS Q:100 P:1.2 I:PK Q:100 P:1 A:CONS T:TXK $PROD:W s:0.7 a:1 O:PW Q:340 I:PX Q:100 P:1.2 a: I:PY Q:100 P:1.2 a: I:PL Q:100 $DEMAND:CONS D:PW Q:340 E:PL Q:200 E:PK Q:100 $OFFTEXT $SYSINCLUDE mpsgeset M2_2S * Benchmark replication: PX.L =1.2; PY.L =1.2; PLS.L =1.2; PKS.L =1.2; TXL = 0.2; TXK = 0.2; M2_2S.ITERLIM = 0; $INCLUDE M2_2S.GEN SOLVE M2_2S USING MCP; M2_2S.ITERLIM = 2000; * Lets do some counter-factual with taxes shifted to the * factor which is in fixed supply: PARAMETER SUMMARY; TXL = 0.15; TXK = 0.25; $INCLUDE M2_2S.GEN SOLVE M2_2S USING MCP; SUMMARY("TL=15%","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL=15%","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL=15%","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL=15%","Revenue %") = 100 * ((W.L * PW.L * 340 - PL.L * 200 - PK.L * 100)/(40*(PX.L+PY.L)/2) - 1); TXL = 0.10; TXK = 0.30; $INCLUDE M2_2S.GEN SOLVE M2_2S USING MCP; SUMMARY("TL=10%","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL=10%","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL=10%","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL=10%","Revenue %") = 100 * ((W.L * PW.L * 340 - PL.L * 200 - PK.L * 100)/(40*(PX.L+PY.L)/2) - 1); TXL = 0.05; TXK = 0.35; $INCLUDE M2_2S.GEN SOLVE M2_2S USING MCP; SUMMARY("TL=5%","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL=5%","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL=5%","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL=5%","Revenue %") = 100 * ((W.L * PW.L * 340 - PL.L * 200 - PK.L * 100)/(40*(PX.L+PY.L)/2) - 1); TXL = 0.00; TXK = 0.40; $INCLUDE M2_2S.GEN SOLVE M2_2S USING MCP; SUMMARY("TL=0%","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL=0%","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL=0%","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL=0%","Revenue %") = 100 * ((W.L * PW.L * 340 - PL.L * 200 - PK.L * 100)/(40*(PX.L+PY.L)/2) - 1); DISPLAY SUMMARY;
$ONTEXT This model is a follow-up on model M2-2s where we considered some income tax reform experiments. Like that model, here we apply taxes through activities which transform (supply) household owned factors into production inputs. The difference here is that we set up a model in which we can do differential tax policy analysis --- holding the level of government revenue constant. In order to keep things simple, we continue to rebate tax revenue in lump-sum fashion. This model introduces a fourth (and final) class of MPSGE unknown (in addition to activity levels, commodity prices and income levels). The new entity is called an "auxiliary variable". In this model, we use an auxiliary variable to endogenously alter the tax rate in order to maintain an equal yield. As in the previous model, the consumer owns 200 units of leisure, supplies 100 (LS) in the benchmark and retains 100 as leisure. Tax is applied to both labor and capital supply to the market. (The leisure margin is untaxed.) Benchmark value flows: Production Sectors Consumers Markets | A B W TK TK CONS ---------------------------------------------------------- PX | 120 -120 PY | 120 -120 PW | 340 -340 PLS | -48 -72 120 PKS | -72 -48 120 100 PL | -100 -100 200 PK | -100 TAX | -20 -20 40 --------------------------------------------------------- Activity TL transforms leisure into labor supply, and TK transforms capital into capital supply. In this example, we use the more traditional scaling in which all market prices are unity in the benchmark. $OFFTEXT * Declare parameters to be used in setting up counter-factual * equilibria: SCALAR TXL Labor income tax rate, TXK Capital income tax rate; $ONTEXT $MODEL:M2_3S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) TL ! Supply activity for L TK ! Supply activity for K $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K (net of tax) PLS ! Price index for primary factor L (gross of tax) PKS ! Price index for primary factor K (gross of tax) PW ! Price index for welfare (expenditure function) $CONSUMERS: CONS ! Income level for consumer CONS $AUXILIARY: TAU ! Tax multiplier associated with equal yield constraint. * The P: fields shown here present the benchmark prices. * Strictly speaking, they could be omitted because the * marginal rate of substitution remains equal to unity when * the reference price of inputs are the same. $PROD:X s:1 O:PX Q:120 I:PLS Q: 48 I:PKS Q: 72 $PROD:Y s:1 O:PY Q:120 I:PLS Q: 72 I:PKS Q: 48 * The income tax applies to labor and capital supplies. * Notice that I've omitted the reference price for PL here -- * the actual value is 1.2, but because there is only one input * we don't have to worry about specify the MRS! * The new syntax introduced here is the use of an eNdogenous * tax field (N:TAU) and Multiplier (M:TXL). In this sector * the user cost of labor is given by: PL (1 + TAU * TXL). * The value of TXL is exogenously specified, but the value of * TAU is determined within the model $PROD:TL O:PLS Q:120 I:PL Q:100 A:CONS N:TAU M:TXL $PROD:TK O:PKS Q:120 I:PK Q:100 A:CONS N:TAU M:TXK $PROD:W s:0.7 a:1 O:PW Q:340 I:PX Q:120 a: I:PY Q:120 a: I:PL Q:100 $DEMAND:CONS D:PW Q:340 E:PL Q:200 E:PK Q:100 * The model-specification is complete, except that we must * specify the equal-yield constraint. This is most easily * expressed by recognizing that government revenue equals the * difference between expenditure and factor incomes. We * specify a constraint stating that this value must remain * at the benchmark level: $CONSTRAINT:TAU W * PW * 340 - PL * 200 - PK * 100 =E= 40 * (PX + PY)/2; * We multiply the benchmark tax revenue (40) by a weighted * average of X and Y prices. This defines the revenue target in * real terms -- assuming that government output requires * equal amounts of X and Y inputs. $OFFTEXT $SYSINCLUDE mpsgeset M2_3S * For historical reasons, the default value of auxiliary variables * is not unity but zero. To replicate the benchmark, we must install * an initial value: TAU.L = 1; * Benchmark replication: TXL = 0.2; TXK = 0.2; M2_3S.ITERLIM = 0; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; M2_3S.ITERLIM = 2000; * Repeat our calculations subject to an equal yield constraint. * Here we fix the relative magnitude of the tax PARAMETER SUMMARY Consequences of tax reform; TXL = 0.15; TXK = 0.25; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; SUMMARY("TL/TK=3/5","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL/TK=3/5","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL/TK=3/5","TL") = TAU.L * TXL; SUMMARY("TL/TK=3/5","TK") = TAU.L * TXK; SUMMARY("TL/TK=3/5","Return %") = 100 * (PK.L/PW.L - 1); TXL = 0.10; TXK = 0.30; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; SUMMARY("TL/TK=1/3","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL/TK=1/3","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL/TK=1/3","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL/TK=1/3","TL") = TAU.L * TXL; SUMMARY("TL/TK=1/3","TK") = TAU.L * TXK; TXL = 0.05; TXK = 0.35; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; SUMMARY("TL/TK=1/7","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL/TK=1/7","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL/TK=1/7","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL/TK=1/7","TL") = TAU.L * TXL; SUMMARY("TL/TK=1/7","TK") = TAU.L * TXK; TXL = 0.00; TXK = 0.40; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; SUMMARY("TL=0","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL=0","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL=0","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL=0","TL") = TAU.L * TXL; SUMMARY("TL=0","TK") = TAU.L * TXK; TXL = -0.05; TXK = 0.45; $INCLUDE M2_3S.GEN SOLVE M2_3S USING MCP; SUMMARY("TL/TK=-1/7","Hicks EV%") = 100 * (W.L-1); SUMMARY("TL/TK=-1/7","Real Wage%") = 100 * (PL.L/PW.L - 1); SUMMARY("TL/TK=-1/7","Return %") = 100 * (PK.L/PW.L - 1); SUMMARY("TL/TK=-1/7","TL") = TAU.L * TXL; SUMMARY("TL/TK=-1/7","TK") = TAU.L * TXK; DISPLAY SUMMARY;
$ONTEXT Suppose that we believe that our benchmark data was generated by a monopoly producer in sector X, who sets an optimal markup given by the inverse Marshallian elasticity of demand. If SIGMA is elasticity of substitution between X and Y, and SHAREX is the share of expenditure on good X, then the Marshallian elasticity (defined as a positive number) is given by e = SIGMA - (SIGMA -1) SHAREX The monopoly markup on marginal cost, MK, is the inverse of this, i.e. MK = 1/e. In the data shown below, the formula PX (1 - MK) = MC where MC is marginal cost, tells us that the markup is 0.20. We can observe from the data that SHAREX= 0.5. Working backwards, this calibrates to an elasticity of substitution SIGMA = 9.0. This is used below. Similarly, if units are chosen such that the prices of L and K are one, the price of X must be 1.25, and the quantity of X produced must be 80. As an aside, we note that for most data, the monopoly markup formula, and an arbitrary elasticity of substitution are generally mutually inconsistent. Production Sectors Consumers Markets | X Y W | CONS ------------------------------------------------------ PX | 100 -100 | PY | 100 -100 | PW | 200 | -200 PL | -30 -60 | 90 PK | -50 -40 | 90 PROFIT | -20 | 20 ------------------------------------------------------ $offtext SCALAR SIGMA Elasticity of substitution (calibrated) /9/; $ONTEXT $MODEL:M2_4S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW ! Price index for welfare (expenditure function) $CONSUMERS: CONS ! Representative agent. $AUXILIARY: SHAREX ! Value share of good X MARKUP ! X sector markup on marginal cost $PROD:X s:1 O:PX Q: 80 A:CONS N:MARKUP I:PL Q: 30 I:PK Q: 50 $PROD:Y s:1 O:PY Q:100 I:PL Q:60 I:PK Q:40 $PROD:W s:9 O:PW Q:200 I:PX Q: 80 P:1.25 I:PY Q:100 $DEMAND:CONS D:PW Q:200 E:PL Q: 90 E:PK Q: 90 * Define the value share of X in final demand: $CONSTRAINT:SHAREX SHAREX =E= 80*PX*X / (80*PX*X + 100*PY*Y) ; $CONSTRAINT:MARKUP MARKUP =E= 1 / (SIGMA - (SIGMA-1) * SHAREX); $OFFTEXT $SYSINCLUDE mpsgeset M2_4S * Benchmark replication: PX.L = 1.25; SHAREX.L = 0.5; MARKUP.L = 0.2; $INCLUDE M2_4S.GEN SOLVE M2_4S USING MCP; * Evaluate the potential gains from first-best (marginal * cost) pricing: SHAREX.L = 0.5; MARKUP.FX = 0; $INCLUDE M2_4S.GEN SOLVE M2_4S USING MCP;
$ontext The assumption of lump-sum redistribution is convenient trick which simplifies tax policy analysis. In practice, governments often use money to purchase things which private markets do not provide. People value the public provision, but for some reason it is not easy to collect money from beneficiaries. In this model we use a trick give both consumers to full supply of the public good. A government "consumer" purchase the public good (i.e., for its own "consumption") with tax revenue. A rationing constraint then gives each consumer an "endowment" of the public good equal to the amount actually produced. PG gives the marginal cost of the public good. PG1 and PG2 are the private valuations of the public good by the two consumers. Private valuations are not actually observed in the data, but to do any welfare analysis, we need to know these values. Note that the initial data presented below represent a Pareto Optimum: it satisfies the Samuelson condition that the sum of the private values of the public good equal the cost of providing the good. More explanation is given below. The benchmark accounting matrix: Production Sectors Consumers Markets| X Y G W1 W2 CONS1 CONS2 GOVT --------------------------------------------------------------- PX | 100 -70 -30 PY | 100 -30 -70 PG | 50 -50 PL | -50 -30 -20 50 50 PK | -30 -50 -20 50 50 TAX | -20 -20 -10 50 PW1 | 125 -125 PW2 | 125 -125 PG1 | -25 25 PG2 | -25 25 --------------------------------------------------------------- $offtext SCALAR TAX Value-added tax rate; $ONTEXT $MODEL:M2_5S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y G ! Activity level for sector G (public provision) W1 ! Activity level for sector W1 (consumer 1 welfare index) W2 ! Activity level for sector W2 (consumer 2 welfare index) $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PG ! Price index for commodity G (marginal cost of public output) PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW1 ! Price index for welfare (consumer 1) PW2 ! Price index for welfare (consumer 2) PG1 ! Private valuation of the public good (consumer 1) PG2 ! Private valuation of the public good (consumer 2) $CONSUMERS: CONS1 ! Consumer 1 CONS2 ! Consumer 2 GOVT ! Government $AUXILIARY: LGP ! Level of government provision * Assume tax payments in the benchmark constitute a * uniform value-added tax: $PROD:X s:1 O:PX Q:100 I:PL Q: 50 P:1.25 A:GOVT T:TAX I:PK Q: 30 P:1.25 A:GOVT T:TAX $PROD:Y s:1 O:PY Q:100 I:PL Q: 30 P:1.25 A:GOVT T:TAX I:PK Q: 50 P:1.25 A:GOVT T:TAX $PROD:G s:1 O:PG Q: 50 I:PL Q: 20 P:1.25 A:GOVT T:TAX I:PK Q: 20 P:1.25 A:GOVT T:TAX * In the data we observe the amount 50 of the public good produced * If we want to assume that this is an optimum amount, then the * demand prices of each of the consumers for 50 units of the public * good must sum to one. The utility functions below are specified * (calibrated) such that each consumer "demands" 50 units of the * public good if the price is 0.5 given the consumption levels of the * other goods $PROD:W1 s:1 O:PW1 Q:125 I:PX Q: 70 I:PY Q: 30 I:PG1 Q: 50 P:0.5 $PROD:W2 s:1 O:PW2 Q:125 I:PX Q: 30 I:PY Q: 70 I:PG2 Q: 50 P:0.5 $DEMAND:GOVT D:PG $DEMAND:CONS1 D:PW1 Q:125 E:PL Q: 50 E:PK Q: 50 E:PG1 Q: 50 R:LGP $DEMAND:CONS2 D:PW2 Q:125 E:PL Q: 50 E:PK Q: 50 E:PG2 Q: 50 R:LGP $CONSTRAINT:LGP LGP =E= G; $OFFTEXT $SYSINCLUDE mpsgeset M2_5S * Benchmark replication TAX = 0.25; LGP.L = 1; PG1.L = 0.5; PG2.L = 0.5; M2_5S.ITERLIM = 0; $INCLUDE M2_5S.GEN SOLVE M2_5S USING MCP; M2_5S.ITERLIM = 2000; * The following counterfactual checks that the original * benchmark is indeed an optimum by raising the tax a bit: TAX = 0.26; $INCLUDE M2_5S.GEN SOLVE M2_5S USING MCP; OPTION DECIMALS = 8; DISPLAY W1.L, W2.L;
$ontext This model is the same as M2-5 except that the tax rate is endogenous, adjusting to provide the "optimum" level of the public good. The tax is adjusted until the sum of the individual prices for the public good equal to supply price. $offtext SCALAR VG1 Preference index for public goods for consumer 1 /1/; $ONTEXT $MODEL:M2_6S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y G ! Activity level for sector G (public provision) W1 ! Activity level for sector W1 (consumer 1 welfare index) W2 ! Activity level for sector W2 (consumer 2 welfare index) $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PG ! Price index for commodity G (marginal cost of public output) PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW1 ! Price index for welfare (consumer 1) PW2 ! Price index for welfare (consumer 2) PG1 ! Private valuation of the public good (consumer 1) PG2 ! Private valuation of the public good (consumer 2) $CONSUMERS: CONS1 ! Consumer 1 CONS2 ! Consumer 2 GOVT ! Government $AUXILIARY: LGP ! Level of government provision TAX ! Uniform value-added tax rate * Assume tax payments in the benchmark constitute a * uniform value-added tax: $PROD:X s:1 O:PX Q:100 I:PL Q: 50 P:1.25 A:GOVT N:TAX I:PK Q: 30 P:1.25 A:GOVT N:TAX $PROD:Y s:1 O:PY Q:100 I:PL Q: 30 P:1.25 A:GOVT N:TAX I:PK Q: 50 P:1.25 A:GOVT N:TAX $PROD:G s:1 O:PG Q: 50 I:PL Q: 20 P:1.25 A:GOVT N:TAX I:PK Q: 20 P:1.25 A:GOVT N:TAX * In the data we observe the amount 50 of the public good produced * If we want to assume that this is an optimum amount, then the * demand prices of each of the consumers for 50 units of the public * good must sum to one. The utility functions below are specified * (calibrated) such that each consumer "demands" 50 units of the * public good if the price is 0.5 given the consumption levels of the * other goods $PROD:W1 s:1 O:PW1 Q:125 I:PX Q: 70 I:PY Q: 30 I:PG1 Q:(VG1*50) P:0.5 $PROD:W2 s:1 O:PW2 Q:125 I:PX Q: 30 I:PY Q: 70 I:PG2 Q: 50 P:0.5 $DEMAND:GOVT D:PG $DEMAND:CONS1 D:PW1 Q:125 E:PL Q: 50 E:PK Q: 50 E:PG1 Q: 50 R:LGP $DEMAND:CONS2 D:PW2 Q:125 E:PL Q: 50 E:PK Q: 50 E:PG2 Q: 50 R:LGP $CONSTRAINT:LGP LGP =E= G; * Simple (potentially invalid) rule for determine the level * of tax and level of public output: equate marginal cost of * provision to the sum of marginal valuations. $CONSTRAINT:TAX PG =E= PG1 + PG2; $OFFTEXT $SYSINCLUDE mpsgeset M2_6S * Benchmark replication TAX.L = 0.25; LGP.L = 1; PG1.L = 0.5; PG2.L = 0.5; M2_6S.ITERLIM = 0; $INCLUDE M2_6S.GEN SOLVE M2_6S USING MCP; M2_6S.ITERLIM = 2000; * What happens to consumer 2 welfare if consumer 1 decides * she would like more public output: VG1 = 2; $INCLUDE M2_6S.GEN SOLVE M2_6S USING MCP;
$ontext The benchmark matrix is: Production Sectors Consumers Markets | X Y I W | CONS ------------------------------------------------------ PX | 100 -100 | PY | 100 -100 | PW | 200 | -200 PL | - 40 -60 -I0 | 100+I0 PK | -60 -40 | 140 PINV ! I0 ! -I0 ------------------------------------------------------ $offtext SCALAR TL tax rate on labor /0/, G Steady-state growth rate /0.02/ R Steady-state interest rate /0.05/, DELTA Capital depreciation rate /0.07/ I0 Base year steady-state investment; I0 = (100) * (g + delta) / (r + delta); $ONTEXT $MODEL:M2_7 $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) I ! Investment index $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW ! Price index for welfare (expenditure function) PI ! Price of a unit of investment $CONSUMERS: CONS ! Income level for consumer CONS $AUXILIARY: KSTOCK ! Capital stock from previous period $PROD:X s:1.0 O:PX Q:100 I:PL Q:40 I:PK Q:60 $PROD:Y s:1 O:PY Q:100 I:PL Q: 60 A:CONS T:TL I:PK Q: 40 $PROD:I O:PI Q:i0 I:PL Q:i0 $PROD:W s:1 O:PW Q:200 I:PX Q:100 I:PY Q:100 $DEMAND:CONS D:PW E:PL Q:(100+i0) E:PK Q:100 R:KSTOCK E:PI Q:(-i0) R:KSTOCK $CONSTRAINT:KSTOCK PI =E= PK; $OFFTEXT $SYSINCLUDE mpsgeset M2_7 KSTOCK.L = 1; * Benchmark replication $INCLUDE M2_7.GEN SOLVE M2_7 USING MCP; TL = 0.5; $INCLUDE M2_7.GEN SOLVE M2_7 USING MCP; PARAMETER COMPARE Comparison of static and steady-state results; compare("X","sstate") = 100 * (X.l-1); compare("Y","sstate") = 100 * (Y.l-1); compare("W","sstate") = 100 * (W.l-1); compare("I","sstate") = 100 * (I.l-1); compare("PX","sstate") = 100 * (PX.l/PW.l-1); compare("PY","sstate") = 100 * (PY.l/PW.l-1); compare("PK","sstate") = 100 * (PK.l/PW.l-1); compare("PL","sstate") = 100 * (PL.l/PW.l-1); compare("PI","sstate") = 100 * (PI.l/PW.l-1); KSTOCK.FX = 1; $INCLUDE M2_7.GEN SOLVE M2_7 USING MCP; compare("X","static") = 100 * (X.l-1); compare("Y","static") = 100 * (Y.l-1); compare("W","static") = 100 * (W.l-1); compare("I","static") = 100 * (I.l-1); compare("PX","static") = 100 * (PX.l/PW.l-1); compare("PY","static") = 100 * (PY.l/PW.l-1); compare("PK","static") = 100 * (PK.l/PW.l-1); compare("PL","static") = 100 * (PL.l/PW.l-1); compare("PI","static") = 100 * (PI.l/PW.l-1); option compare:1; display compare;
$ontext This model is based on M2-1S which introduced pre-existing taxes. All features are identical except that in this model there is a lower bound on the real wage and classical unemployment. The following accounting matrix is identical to M2-1 except that the labor endowment is now 100*(1-U) = 100*(1-0.2) = 80 in the benchmark. Production Sectors Consumers Markets | X Y W | CONS ------------------------------------------------------ PX | 100 -100 | PY | 100 -100 | PW | 200 | -200 PL | -20 -60 | 100*(1-U) PK | -60 -40 | 100 TAX | -20 0 | 20 ------------------------------------------------------ $offtext * Declare parameters which will be need to specify the * benchmark and counterfactual cases. SCALAR TX Proportional output tax on sector X, TY Proportional output tax on sector Y, TLX Ad-valorem tax on labor inputs to X, TKX Ad-valorem tax on capital inputs to X U0 Initial unemployment rate / 0.20 /; $ONTEXT $MODEL:M2_8S $SECTORS: X ! Activity level for sector X Y ! Activity level for sector Y W ! Activity level for sector W (Hicksian welfare index) $COMMODITIES: PX ! Price index for commodity X PY ! Price index for commodity Y PL ! Price index for primary factor L (net of tax) PK ! Price index for primary factor K PW ! Price index for welfare (expenditure function) $CONSUMERS: CONS ! Income level for consumer CONS $AUXILIARY: U ! Unemployment rate $PROD:X s:1 O:PX Q:100 A:CONS T:TX I:PL Q: 20 P:2 A:CONS T:TLX I:PK Q: 60 A:CONS T:TKX $PROD:Y s:1 O:PY Q:100 T:TY ! Output tax initially 0. I:PL Q:60 I:PK Q:40 $PROD:W s:1 O:PW Q:200 I:PX Q:100 I:PY Q:100 $DEMAND:CONS D:PW Q:200 E:PL Q:(80/(1-U0)) E:PL Q:(-80/(1-U0)) R:U E:PK Q:100 * Simple lower bound on the real wage -- using PW as the * price index for denominating wages $CONSTRAINT:U PL =G= PW; $OFFTEXT $SYSINCLUDE mpsgeset M2_8S * Benchmark replication: TX = 0; TY = 0; TLX = 1; TKX = 0; U.L = U0; M2_8S.ITERLIM = 0; $INCLUDE M2_8S.GEN SOLVE M2_8S USING MCP; M2_8S.ITERLIM = 2000; * As in M2-1S, we replace the tax on labor inputs * by a uniform tax on both factors: TLX = 0.25; TKX = 0.25; TX = 0; TY = 0; $INCLUDE M2_8S.GEN SOLVE M2_8S USING MCP;