scarfmge.gms : Tax distortions in a small activity analysis model

Description

Tax Distortions in a Small Activity Analysis Model.


Reference

  • Scarf, H, and Hansen, T, The Computation of Economic Equilibria. Yale University Press, 1973.

Small Model of Types : MPSGE mcp


Category : GAMS Model library


Main file : scarfmge.gms

$title Tax Distortions in a small Activity Analysis Model (SCARFMGE,SEQ=152)

$onText
Tax Distortions in a Small Activity Analysis Model.


Scarf, H, and Hansen, T, The Computation of Economic Equilibria.
Yale University Press, 1973.

HERE WE CONSIDER THE EFFECTS OF TAXATION:

Keywords: mixed complementarity problem, general equilibrium model, tax policy
          activity analysis
$offText

Set
   SC   'tax rate scenarios' / ZERO, LOW, MEDIUM, HIGH /
   C    'commodities' / UNSKLAB, SKILLAB, CAPEOP, NONDURBL, DURABLE, CAPBOP /
   K(C) 'capital input identifier' / CAPBOP /
   H    'consumers' / AGENT1*AGENT5 /
   S    'sectors'   / D1, D2, N1, N2, N3, CD, C1, C2/;

Alias (C,CC);

Parameter T(SC) 'tax rates' / LOW 0.05, MEDIUM 0.20, HIGH 0.50 /;

Table E(C,H) 'commodity endowments'
              AGENT1  AGENT2  AGENT3  AGENT4  AGENT5
   CAPBOP        3       0.1     2       1       6
   SKILLAB       5       0.1     6       0.1     0.1
   UNSKLAB       0.1     7       0.1     8       0.5
   DURABLE       1       2       1.5     1       2  ;

Parameter TR(H) 'tax distribution rule' / AGENT1 1 /;

Scalar TK 'tax on capital in current scenario';

Table D(C,H) 'reference demands'
              AGENT1  AGENT2  AGENT3  AGENT4  AGENT5
   CAPEOP       4        0.4     2       5       3
   SKILLAB      0.2              0.5
   UNSKLAB               0.6             0.2     0.2
   NONDURBL     2        4       2       5       4
   DURABLE      3.2      1       1.5     4.5     2  ;

Parameter ESUB(H) 'elasticities in demand' / AGENT1 1.2, AGENT2 1.6, AGENT3 0.8
                                             AGENT4 0.5, AGENT5 0.6           /;

Table DATA(*,C,S) 'activity analysis matrix'
                      D1   D2   N1   N2   N3
   OUTPUT.NONDURBL             6.0  8.0  7.0
   OUTPUT.DURABLE    4.0  3.5
   OUTPUT.CAPEOP     4.0  4.0  1.6  1.6  1.6
   INPUT .CAPBOP     5.3  5.0  2.0  2.0  2.0
   INPUT .SKILLAB    2.0  1.0  2.0  4.0  1.0
   INPUT .UNSKLAB    1.0  6.0  3.0  1.0  8.0

   +                  CD   C1   C2
   OUTPUT.CAPEOP     0.9  7.0  8.0
   INPUT .CAPBOP     1.0  4.0  5.0
   INPUT .SKILLAB         3.0  2.0
   INPUT .UNSKLAB         1.0  8.0;

$onText
$MODEL: SCARF

$SECTORS:
   Y(S)    ! Activity level

$COMMODITIES:
   P(C)    ! Market price
   PT$TK   ! Price index for lumpsum redistribution of tax revenue.

$CONSUMERS:
   HH(H)   ! Household income
   GOVT$TK ! Government tax revenue (only included when taxes are levied).

$REPORT:
   V:WELFARE(H)   W:HH(H)

$PROD:Y(S)
   O:P(C)         Q:DATA("OUTPUT",C,S)
   I:P(C)         Q:DATA("INPUT" ,C,S)   A:GOVT$TK   T:TK$K(C)

$DEMAND:HH(H) s:ESUB(H)
   D:P(C)         Q:D(C,H)
   E:P(C)         Q:E(C,H)
   E:PT$TK        Q:TR(H)

$DEMAND:GOVT$TK
   D:PT
$offText

* READ THE HEADER:
$sysInclude mpsgeset SCARF

* REPORT TABLE:
Parameter EV(H,SC) 'HICKS-Equivalent variation (%)';

P.fx("UNSKLAB") = 1;

loop(SC,
*  SET THE CAPITAL TAX RATE:
   TK = T(SC);

*  GENERATE AND SOLVE THE MODEL:
$  include SCARF.GEN

   PT.l = 1;

   solve SCARF using mcp;

   EV(H,SC) = WELFARE.l(H);
);

*  AFTER COMPLETION, CONVERT TO TRUE EQUIVALENT VARIATIONS:
EV(H,SC) = 100*(EV(H,SC)/EV(H,"ZERO") - 1);
display EV;