gemmcp.gms : GEMTAP: A general equilibrium model for tax policy
set definitions and input data for 1983 version of gemtap.
Reference:
- Rutherford, T F, GEMTAP: A General Equilibrium Model for Tax Policy.
Large Model of Type: MCP
$title The 1983 GEMTAB Model as MCP (GEMMCP,SEQ=137)
$Ontext
set definitions and input data for 1983 version of gemtap.
Rutherford, T F, GEMTAP: A General Equilibrium Model for Tax Policy.
$Offtext
sets
s sectors (producer goods)
/ agri, mines, crude, const, food, textl, paper,
refin, chem, lumbr, metls, equip, vehcl, trnsp,
trade, fnanc, realt, srvcs, govt/
g consumer goods
/ food, alchl, tobac, util, housg, frnsh, appl,
clth, trnsp, vehcl, servc, bnkng, readg, n_dur,
petrl, hlth, educ, savng /;
alias (s,ss);
sets
hh all households /h1*h14, hh2*hh14/,
h(hh) aggregated households /hh2*hh14/,
dh(hh) disaggregated households /h1*h14/;
* the following assignment omits h1 which appears to be
* a residual account in this data set:
set hmap(dh,h) mapping from disaggregated households
/ h2.hh2, h3.hh3, h4.hh4, h5.hh5, h6.hh6, h7.hh7, h8.hh8,
h9.hh9, h10.hh10, h11.hh11, h12.hh12, h13.hh13, h14.hh14 /;
scalar gdk government capital purchases. (p. 118) / 1.65084e+05/;
scalar gsk government capital ownership. (table 6.3) / 1.13409e+05/;
scalar gdl government labor demand. (p. 107) / 2.72392e+05/;
scalar gtl labor tax payments by government.(p. 107) / 4.41080e+04/;
parameter count(hh) population count /
h1 0.347
h2 1.183
h3 3.753
h4 8.457
h5 13.328
h6 13.988
h7 12.876
h8 11.523
h9 18.538
h10 13.362
h11 16.565
h12 4.501
h13 2.725
h14 0.573 /;
parameter dk(s) capital payments by sector. (table 4.7)
/agri 1.50670e+04, mines 9.14909e+02, crude 2.99886e+03, const 4.99169e+03,
food 6.71724e+03, textl 2.97874e+03, paper 4.31363e+03, refin 1.39132e+04,
chem 4.78283e+03, lumbr 2.57358e+03, metls 2.78550e+03, equip 1.43345e+03,
vehcl 2.49335e+02, trnsp 3.31062e+04, trade 2.77352e+04, fnanc 2.91767e+03,
realt 1.57818e+05, srvcs 2.90328e+04, govt 1.23209e+04/
parameter sk(hh) capital ownership by household. (table 6.2)
/h1 -1.15989e+04, h2 1.32289e+02, h3 1.40763e+03, h4 5.82356e+03,
h5 1.51394e+04, h6 2.17343e+04, h7 2.44363e+04, h8 2.57096e+04,
h9 4.68859e+04, h10 4.02364e+04, h11 6.74481e+04, h12 3.33326e+04,
h13 4.47871e+04, h14 6.28510e+04/
parameter dl(s) labor demand by sector. (table 4.1)
/agri 1.92060e+04, mines 1.18360e+04, crude 1.92690e+04, const 1.12095e+05,
food 3.57680e+04, textl 2.79840e+04, paper 4.39730e+04, refin 6.36500e+03,
chem 4.58740e+04, lumbr 2.59050e+04, metls 1.82051e+05, equip 3.12680e+04,
vehcl 2.51430e+04, trnsp 1.46020e+05, trade 3.13381e+05, fnanc 1.02262e+05,
realt 1.68840e+04, srvcs 3.73269e+05, govt 3.07730e+04/
parameter sl(hh) labor supply by household. (table 6.1)
/h1 -4.07035e+02, h2 9.72331e+02, h3 4.94308e+03, h4 2.55985e+04,
h5 8.32951e+04, h6 1.27887e+05, h7 1.53337e+05, h8 1.72699e+05,
h9 3.26104e+05, h10 2.86196e+05, h11 3.83643e+05, h12 1.19378e+05,
h13 1.02400e+05, h14 5.56721e+04/
parameter zta(hh) labor endowment : supply ratios by household.
/h1 1.26791e+00, h2 1.27168e+00, h3 1.33304e+00, h4 1.40639e+00,
h5 1.48221e+00, h6 1.53994e+00, h7 1.58088e+00, h8 1.61328e+00,
h9 1.64773e+00, h10 1.68873e+00, h11 1.71083e+00, h12 1.69191e+00,
h13 1.63084e+00, h14 1.34709e+00 /;
* for increased comparability with 1973 dataset, we use a value
* of 1.75 for all households:
zta(hh) = 1.75;
scalar els elasticity of labor supply /0.15/;
parameter pit(hh) income tax payments by household. (table 6.5)
/h1 4.70693e+03, h2 -4.78527e+01, h3 -4.83605e+02, h4 -1.38173e+03,
h5 -8.30128e+02, h6 2.07466e+03, h7 5.51451e+03, h8 9.36992e+03,
h9 2.08846e+04, h10 2.25915e+04, h11 3.28106e+04, h12 1.08714e+04,
h13 1.28299e+04, h14 1.30979e+04/
parameter tau(hh) marginal tax rates by household. (table 5.8)
/h1 7.30000e-02, h2 1.00000e-03, h3 2.00000e-02, h4 6.10000e-02,
h5 1.11000e-01, h6 1.39000e-01, h7 1.65000e-01, h8 1.95000e-01,
h9 2.19000e-01, h10 2.56000e-01, h11 2.93000e-01, h12 3.43000e-01,
h13 3.96000e-01, h14 4.01000e-01/
parameter trn(hh) transfer levels by household (from government). (table 6.5)
/h1 4.62898e+02, h2 7.16898e+02, h3 9.99424e+03, h4 2.82718e+04,
h5 4.06371e+04, h6 4.04673e+04, h7 3.55249e+04, h8 2.80239e+04,
h9 4.10061e+04, h10 2.63098e+04, h11 3.01152e+04, h12 7.94427e+03,
h13 4.27825e+03, h14 8.37153e+02/
parameter tc(g) consumption tax payments by good. (table 5.4)
/food 1.02623e+02, alchl 3.43401e+01, tobac 4.92577e+01, util 5.27143e+01,
frnsh 6.82659e+01, appl 5.61957e+01, clth 7.82538e+02, trnsp 1.29003e+00,
vehcl 1.30150e+02, servc 8.53633e+00, readg 1.38249e+02, n_dur 9.66488e+01,
petrl 7.99788e+01, hlth 4.19992e+01 /;
*-----------------------------------------------------------------------------
$ontext
the following three vectors which appear in the 83 dataset are converted
to percentage rate form in table taxrate:
parameter txo(s)
/
agri 5.42000e+02, mines 2.00500e+03, crude 1.61310e+04, const 2.34900e+03,
food 1.12890e+04, textl 1.69000e+02, paper 7.52000e+02, refin 9.20100e+03,
chem 1.45500e+03, lumbr 4.76000e+02, metls 2.48100e+03, equip 5.41000e+02,
vehcl 7.61000e+02, trnsp 2.03530e+04, trade 8.50440e+04, fnanc 8.57600e+03,
realt 1.76200e+04, srvcs 8.45000e+03 /
parameter tk(s)
/
agri 1.01810e+04, mines 1.34009e+03, crude 5.18414e+03, const 4.60731e+03,
food 7.47776e+03, textl 3.00226e+03, paper 5.31437e+03, refin 9.16883e+03,
chem 7.16117e+03, lumbr 3.09542e+03, metls 1.15835e+04, equip 1.10355e+03,
vehcl 1.35867e+03, trnsp 3.50988e+04, trade 2.69098e+04, fnanc 2.22403e+04,
realt 1.09969e+05, srvcs 1.90732e+04, govt 3.35605e+03 /
parameter tl(s)
/
agri 2.67400e+03, mines 1.26600e+03, crude 2.18700e+03, const 1.45680e+04,
food 5.23400e+03, textl 4.68000e+03, paper 5.97300e+03, refin 7.68000e+02,
chem 6.86600e+03, lumbr 1.18640e+04, metls 2.51540e+04, equip 3.27600e+03,
vehcl 3.93400e+03, trnsp 1.86950e+04, trade 4.33670e+04, fnanc 1.29190e+04,
realt 2.52100e+03, srvcs 4.43190e+04, govt 1.34930e+04/;
parameter taxrate(s,*) taxes (%) (tables 4.13 4.7 and 4.1 respectively);
code:
taxrate(s,"txo") = 100 * txo(s) / y(s);
taxrate(s,"tl") = 100 * tl(s) / dl(s);
taxrate(s,"tk") = 100 * tk(s) / dk(s);
display taxrate;
table tkval(s,*) sectoral capital tax rates in 73 and 83
tk73 tk83
agri 54.0162 67.572
mines 95.0472 146.472
crude 101.5675 172.870
const 210.4031 92.300
food 346.9550 111.322
textl 253.4060 100.790
paper 162.5490 123.199
refin 46.3458 65.900
chem 186.6596 149.727
lumbr 91.2334 120.277
metls 171.6036 415.850
equip 2356.8627 76.986
vehcl 128.7486 544.917
trnsp 170.1676 106.019
trade 185.0761 97.024
fnanc 199.2051 762.262
realt 62.9748 69.681
srvcs 86.0299 65.695
govt 26.3711 27.239;
$offtext
*-----------------------------------------------------------------------------
table taxrate(s,*) taxes (%) (tables 4.13 4.7 and 4.1 respectively)
txo tl tk
agri 0.311 13.923 67.572
mines 4.529 10.696 146.472
crude 19.296 11.350 172.870
const 0.775 12.996 92.300
food 4.016 14.633 111.322
textl 0.133 16.724 100.790
paper 0.454 13.583 123.199
refin 4.698 12.066 65.900
chem 0.618 14.967 149.727
lumbr 0.427 45.798 120.277
metls 0.337 13.817 415.850
equip 0.700 10.477 76.986
vehcl 0.682 15.647 544.917
trnsp 3.760 12.803 106.019
trade 12.991 13.838 97.024
fnanc 3.585 12.633 762.262
realt 3.650 14.931 69.681
srvcs 1.080 11.873 65.695
govt 43.847 27.239
parameter gse(s) government commodity endowments. (table 6.3);
gse(s) = 0;
parameter gd(s) government commodity demands. (table 6.4)
/agri 5.74182e+02, mines 1.55043e+02, crude 3.63664e+02, const 4.50692e+04,
food 2.67746e+03, textl 8.95648e+02, paper 4.45026e+03, refin 5.48673e+03,
chem 4.57070e+03, lumbr 1.12229e+03, metls 1.78503e+05, equip 1.93211e+04,
vehcl 2.35552e+03, trnsp 1.46367e+04, trade 4.89975e+03, fnanc 3.05061e+03,
realt 3.17531e+03, srvcs 3.04402e+04, govt 6.39613e+02/
parameter vm(s) import levels by sectoral commodity. (table 5.1)
/agri 3.84500e+03, mines 3.49000e+03, crude 6.61250e+04, food 1.39690e+04,
textl 1.60500e+04, paper 6.58100e+03, refin 2.23780e+04, chem 1.53900e+04,
lumbr 8.32600e+03, metls 1.01264e+05, equip 5.50100e+03, vehcl 2.90780e+04,
trnsp 5.29900e+03, trade 7.80800e+03, fnanc 7.43000e+02, srvcs 1.74900e+03/
parameter vx(s) export levels by sectoral commodity. (table 5.1)
/agri 2.14831e+04, mines 5.09111e+03, crude 1.45680e+03, const 3.71680e+01,
food 1.27640e+04, textl 4.89076e+03, paper 4.99139e+03, refin 5.75651e+03,
chem 2.02557e+04, lumbr 5.10924e+03, metls 1.46532e+05, equip 1.51174e+04,
vehcl 1.07298e+04, trnsp 1.52072e+04, trade 2.29182e+04, fnanc 8.49425e+02,
realt 5.32137e+03, srvcs 9.01913e+03, govt 6.61772e+01/
parameter el(hh) elasticity between leisure and consumption. (table 6.8)
/h1 5.69000e-01, h2 6.74000e-01, h3 7.77000e-01, h4 8.38000e-01,
h5 8.86000e-01, h6 9.48000e-01, h7 9.83000e-01, h8 9.90000e-01,
h9 1.02700e+00, h10 1.00500e+00, h11 9.69000e-01, h12 7.38000e-01,
h13 7.38000e-01, h14 7.38000e-01/
parameter ec(hh) elasticity in current consumption. (table 6.9)
/h1 1.26791e+00, h2 1.27168e+00, h3 1.33304e+00, h4 1.40639e+00,
h5 1.48221e+00, h6 1.53994e+00, h7 1.58088e+00, h8 1.61328e+00,
h9 1.64773e+00, h10 1.68873e+00, h11 1.71083e+00, h12 1.69191e+00,
h13 1.63084e+00, h14 1.34709e+00/
parameter ekl(s) labor-capital elasticity. (table 6.11)
/agri 1.92123e+00, mines 1.00000e+00, crude 1.00000e+00, const 1.00000e+00,
food 1.68095e+00, textl 1.12108e+00, paper 1.11995e+00, refin 1.38332e+00,
chem 1.04308e+00, lumbr 1.10632e+00, metls 1.55352e+00, equip 1.29132e+00,
vehcl 1.09135e+00, trnsp 1.00000e+00, trade 1.00000e+00, fnanc 1.00000e+00,
realt 1.00000e+00, srvcs 1.00000e+00, govt 1.00000e+00/
parameter ekl73(s) labor-capital elasticity. table 6.11
/agri 6.75900e-01, mines 1.00000e+00, crude 1.00000e+00, const 1.00000e+00,
food 7.11700e-01, textl 9.02500e-01, paper 9.03300e-01, refin 7.83000e-01,
chem 9.60300e-01, lumbr 9.12300e-01, metls 7.37300e-01, equip 8.15900e-01,
vehcl 9.22800e-01, trnsp 1.00000e+00, trade 1.00000e+00, fnanc 1.00000e+00,
realt 1.00000e+00, srvcs 1.00000e+00, govt 1.00000e+00/;
parameter ekl83(s) labor-capital elasticity. (table 6.11)
/agri 1.92123e+00, mines 1.00000e+00, crude 1.00000e+00, const 1.00000e+00,
food 1.68095e+00, textl 1.12108e+00, paper 1.11995e+00, refin 1.38332e+00,
chem 1.04308e+00, lumbr 1.10632e+00, metls 1.55352e+00, equip 1.29132e+00,
vehcl 1.09135e+00, trnsp 1.00000e+00, trade 1.00000e+00, fnanc 1.00000e+00,
realt 1.00000e+00, srvcs 1.00000e+00, govt 1.00000e+00/
parameter em(s) elasticity of import supply
ex(s) elasticity of export demand;
em(s) = 0.465;
ex(s) = 10;
parameter y(s) gross output level by sector. (table 4.13)
/agri 1.74055e+05, mines 4.42744e+04, crude 8.35975e+04, const 3.03029e+05,
food 2.81073e+05, textl 1.26674e+05, paper 1.65760e+05, refin 1.95844e+05,
chem 2.35265e+05, lumbr 1.11494e+05, metls 7.35374e+05, equip 7.72401e+04,
vehcl 1.11519e+05, trnsp 5.41315e+05, trade 6.54613e+05, fnanc 2.39210e+05,
realt 4.82737e+05, srvcs 7.82546e+05, govt 9.61957e+04 /;
table z(s,g) consumption composition matrix. (table 4.10)
food alchl tobac util housg frnsh
agri 3.49303e-02 3.49250e-02
mines 8.89490e-06
food 4.44127e-01 4.44162e-01 4.96879e-01
textl 1.51941e-01
paper 1.13370e-03
refin 2.57659e-05
chem 2.13478e-04 1.95293e-04
lumbr 2.60854e-01
metls 9.58233e-02
equip 7.98743e-04
trnsp 1.80389e-02 1.80321e-02 4.29918e-03 9.67120e-01 1.03579e-02
trade 2.34928e-01 2.34938e-01 4.98822e-01 4.79065e-01
fnanc 8.89490e-06
realt 9.63414e-01
srvcs 2.67745e-01 2.67747e-01 4.22719e-03 3.65864e-02
govt 2.86527e-02
+ appl clth trnsp vehcl servc bnkng
textl 1.96668e-04 4.22525e-01 2.43355e-04
paper 9.72015e-03
chem 2.17739e-02 9.63838e-03 4.00725e-02
lumbr 3.21973e-02 4.23618e-04 2.15520e-03
metls 5.17911e-01 5.98949e-02 1.54125e-02 2.28764e-04
equip 2.40200e-02
vehcl 4.15732e-01
trnsp 8.28815e-03 3.03563e-03 9.43310e-01 1.55927e-02 4.17193e-02
trade 4.18734e-01 4.71361e-01 2.05121e-01 1.32442e-03
fnanc 1.65312e-02 1.00000e+00
realt 6.51376e-03
srvcs 8.99053e-04 2.38251e-02 2.83382e-01 8.99115e-01
govt 5.66898e-02 3.24123e-02
+ readg n_dur petrl hlth educ savng
agri 4.41326e-02 6.14907e-04 -3.63988e-02
mines 6.47270e-04 3.66763e-03 2.50821e-03
crude 9.10418e-04
const 4.91561e-01
food -7.32829e-04
textl 8.28619e-03 2.39490e-03 2.14316e-03
paper 1.66921e-01 1.60038e-01 5.69271e-03 -4.07667e-04
refin 6.58331e-01 1.93630e-05 -1.18903e-03
chem 4.02524e-03 3.92213e-01 1.70587e-03 5.59009e-02 1.37297e-03
lumbr 3.46290e-03 1.80823e-03 1.71430e-02
metls 1.33159e-01 7.86757e-02 8.52937e-05 1.55000e-02 2.84313e-01
equip 9.83283e-02 3.99168e-02
vehcl 7.10858e-02
trnsp 1.06977e-01 2.17483e-02 2.67993e-02 1.04560e-03 1.71905e-02
trade 2.68150e-01 3.40205e-01 3.07603e-01 7.96495e-02 1.19901e-01
fnanc 5.43951e-05
realt 2.95876e-02
srvcs 1.55407e-01 8.42192e-01 1.00000e+00 -3.8905e-02
govt 1.45598e-02
table ras(s,s) adjusted input-output table. (tables 4.8 and 4.9)
agri mines crude const food textl
agri 4.77039e+04 1.29167e+01 4.94328e+00 4.14308e+02 8.07202e+04 2.16489e+03
mines 3.19103e+02 6.05761e+03 1.28523e+01 1.74414e+03 1.58516e+02 6.93484e+01
crude 2.75040e+02 1.05530e+02 5.46406e+03 1.82005e+02 1.00093e+02 5.49454e+01
const 2.68590e+03 4.87043e+02 1.08872e+04 2.86600e+02 1.46124e+03 5.88429e+02
food 1.70603e+04 1.21148e+01 1.67424e+01 3.48826e+01 5.83569e+04 6.66520e+02
textl 3.42696e+02 1.02025e+02 2.83085e+01 1.67936e+03 1.22183e+02 4.95362e+04
paper 7.80488e+02 3.25057e+02 2.55315e+02 3.81202e+03 1.11966e+04 1.81391e+03
refin 9.88521e+03 2.35625e+03 1.24116e+03 6.24300e+03 1.93248e+03 1.25882e+03
chem 9.77087e+03 1.45763e+03 9.50792e+02 6.56288e+03 5.42140e+03 1.26869e+04
lumbr 4.56307e+02 4.98159e+02 5.60705e+01 3.76413e+04 4.69320e+03 3.62200e+02
metls 2.03185e+03 4.63286e+03 3.27433e+03 3.80960e+04 7.48649e+03 1.61303e+03
equip 5.35927e+02 1.06592e+02 5.83976e+01 5.32920e+02 2.83783e+01 4.00452e+01
vehcl 1.70121e+02 2.10930e+02 3.52576e+01 3.80755e+02 3.22277e+01 1.79056e+01
trnsp 6.02777e+03 3.34213e+03 2.53607e+03 9.87724e+03 1.02177e+04 3.74510e+03
trade 1.34513e+04 3.00750e+03 1.51076e+03 3.21204e+04 2.11882e+04 7.67672e+03
fnanc 2.55270e+03 6.17634e+02 7.68909e+02 2.51563e+03 1.28108e+03 6.32573e+02
realt 7.40672e+03 8.34401e+02 7.56553e+03 4.67231e+02 5.58298e+02 4.84227e+02
srvcs 3.93065e+03 2.15643e+03 2.06860e+03 2.08522e+04 7.80496e+03 3.21905e+03
govt 7.84913e+02 5.72576e+02 1.07121e+03 8.76811e+02 1.79685e+03 1.22383e+03
+ paper refin chem lumbr metls equip
agri 4.95558e+01 2.57982e+00 6.13878e+02 4.10659e+03 6.67960e+01 3.48058e+00
mines 4.80497e+02 2.99266e+02 3.97423e+03 2.06994e+03 1.49215e+04 1.39879e+01
crude 1.58425e+02 1.05766e+05 3.90772e+03 1.16685e+02 6.21400e+02 2.88911e+01
const 1.26204e+03 1.38001e+03 2.06264e+03 1.15375e+03 8.36066e+03 3.29064e+02
food 5.14232e+02 8.75865e+01 2.47313e+03 9.32015e+01 3.70207e+02 1.01664e+01
textl 1.63620e+03 3.74388e+01 3.27421e+03 1.87451e+03 2.84958e+03 4.06322e+02
paper 4.63469e+04 1.05641e+03 7.79450e+03 2.06093e+03 1.33010e+04 4.51683e+02
refin 4.06976e+03 2.00380e+04 1.46170e+04 2.50776e+03 1.02380e+04 5.87484e+02
chem 7.17832e+03 4.89943e+03 6.65589e+04 3.88466e+03 3.24850e+04 8.95859e+02
lumbr 4.95827e+03 3.82156e+02 2.35622e+03 2.37056e+04 1.14772e+04 1.31904e+03
metls 3.45937e+03 9.70241e+02 8.31886e+03 4.95921e+03 2.42505e+05 1.21644e+04
equip 1.68734e+02 9.82306e+00 7.99628e+01 9.83550e+01 3.14783e+03 1.27697e+04
vehcl 6.40378e+01 1.51190e+02 8.71123e+01 1.75502e+02 2.81914e+03 4.12245e+02
trnsp 1.03269e+04 1.16825e+04 1.82501e+04 8.00805e+03 4.25135e+04 2.19451e+03
trade 1.16057e+04 5.01511e+03 1.57178e+04 7.18179e+03 7.46440e+04 3.26569e+03
fnanc 1.02228e+03 8.44861e+02 1.48315e+03 8.28850e+02 6.18708e+03 6.20171e+02
realt 1.11894e+03 2.62709e+02 1.58982e+03 4.76650e+02 5.53245e+03 3.65087e+02
srvcs 6.83419e+03 2.35907e+03 1.23156e+04 3.00436e+03 2.84889e+04 2.54310e+03
govt 4.15367e+03 1.17168e+03 3.63197e+03 1.21178e+03 1.07284e+04 1.23522e+03
+ vehcl trnsp trade fnanc realt srvcs
agri 1.52082e+00 4.91644e+01 8.73337e+02 4.84854e+00 4.31162e+03 2.60626e+03
mines 4.38196e+01 9.75567e+03 4.67007e+00 5.24419e-01 2.40127e+01 1.13320e+02
crude 2.61194e+01 2.93924e+04 4.70898e+02 7.15163e+01 1.70123e+02 6.09765e+02
const 3.25754e+02 2.40091e+04 3.86461e+03 7.62033e+02 7.12670e+04 1.33394e+04
food 2.69740e+01 1.64303e+02 4.83188e+02 1.47578e+01 9.62752e+00 6.62090e+03
textl 2.61111e+03 4.85133e+02 3.71442e+02 1.64973e+02 2.33814e+01 4.00854e+03
paper 6.22244e+02 3.04369e+03 1.11278e+04 6.03662e+03 3.09007e+03 2.12056e+04
refin 4.10666e+02 4.84692e+04 1.10733e+04 1.18735e+03 1.89838e+03 1.40215e+04
chem 5.36451e+03 3.25176e+03 1.62399e+03 1.35312e+02 1.27542e+03 1.83553e+04
lumbr 2.10358e+03 4.08367e+02 9.40659e+02 2.70518e+01 7.10703e+01 2.67436e+03
metls 2.38947e+04 8.37612e+03 2.37642e+03 7.60264e+02 8.25374e+02 2.00537e+04
equip 4.30563e+02 6.16430e+03 3.06914e+01 6.41174e+01 1.09553e+01 1.25107e+03
vehcl 3.01012e+04 9.05646e+02 4.43927e+02 3.53968e+01 4.16257e+01 8.12870e+03
trnsp 2.25330e+03 9.36376e+04 2.96017e+04 9.49454e+03 9.99490e+03 4.07070e+04
trade 8.26929e+03 1.55832e+04 1.22973e+04 1.42583e+03 3.51304e+03 2.94769e+04
fnanc 3.80231e+02 5.55400e+03 7.08814e+03 4.20652e+04 2.05804e+04 8.10357e+03
realt 1.13128e+02 4.24392e+03 1.37242e+04 3.72805e+03 3.96620e+04 2.46183e+04
srvcs 2.60763e+03 2.19662e+04 4.69394e+04 1.75710e+04 1.53004e+04 7.48002e+04
govt 4.79289e+02 1.17297e+04 1.42000e+04 6.69891e+03 5.80996e+03 1.74284e+04
table rcs(g,hh) adjusted consumption matrix. tables 5.2 and 5.3
h1 h2 h3 h4 h5 h6
food 2.43154e+03 8.31012e+02 5.20838e+03 1.59696e+04 3.11945e+04 3.68235e+04
alchl 5.99531e+02 7.09930e+01 4.47408e+02 1.47625e+03 3.10355e+03 3.85386e+03
tobac 3.00241e+02 3.55527e+01 2.24052e+02 7.39320e+02 1.55420e+03 1.92995e+03
util 8.09773e+02 2.90719e+02 1.91339e+03 6.31809e+03 1.27338e+04 1.49690e+04
housg 6.12199e+03 1.58282e+03 9.48922e+03 2.39017e+04 4.04763e+04 4.36047e+04
frnsh 6.29848e+02 7.45854e+01 4.70031e+02 1.55093e+03 3.26043e+03 4.04867e+03
appl 5.18472e+02 1.02586e+02 5.15702e+02 1.73699e+03 3.94353e+03 4.88070e+03
clth 7.22029e+03 1.94843e+02 1.20325e+03 3.92543e+03 8.34312e+03 1.02651e+04
trnsp 1.10486e+02 4.72766e+01 3.05804e+02 9.45871e+02 1.87616e+03 2.21232e+03
vehcl 1.20089e+03 2.59688e+02 1.40132e+03 5.15694e+03 1.18923e+04 1.47618e+04
servc 7.30451e+02 8.64961e+01 5.45119e+02 1.79866e+03 3.78124e+03 4.69536e+03
bnkng 1.60339e+03 1.89865e+02 1.19656e+03 3.94812e+03 8.30000e+03 1.03067e+04
readg 1.27226e+03 1.50655e+02 9.49461e+02 3.13278e+03 6.58597e+03 8.17810e+03
n_dur 8.91740e+02 6.01011e+01 3.35115e+02 1.09765e+03 2.25039e+03 2.69641e+03
petrl 5.46878e+02 1.12026e+02 7.24765e+02 2.64345e+03 5.97935e+03 7.57259e+03
hlth 3.59269e+03 3.64276e+02 2.89157e+03 9.48352e+03 1.84661e+04 2.22962e+04
educ 4.10709e+02 4.86350e+01 3.06502e+02 1.01128e+03 2.12606e+03 2.64005e+03
savng -4.6884e+04 -2.8102e+03 -1.2384e+04 -2.7382e+04 -3.3634e+04 -1.7098e+04
+ h7 h8 h9 h10 h11 h12
food 3.72263e+04 3.64173e+04 6.22303e+04 4.77327e+04 5.55705e+04 1.43476e+04
alchl 4.09038e+03 4.27672e+03 7.88731e+03 6.63555e+03 8.87697e+03 3.07807e+03
tobac 2.04850e+03 2.14176e+03 3.94985e+03 3.32301e+03 4.44547e+03 1.54143e+03
util 1.49085e+04 1.44047e+04 2.47844e+04 1.92801e+04 2.31262e+04 6.46643e+03
housg 4.07999e+04 3.67105e+04 5.06882e+04 3.22039e+04 3.40273e+04 9.89624e+03
frnsh 4.29734e+03 4.49303e+03 8.28624e+03 6.97116e+03 9.32584e+03 3.23370e+03
appl 5.31140e+03 5.50475e+03 9.62492e+03 7.56886e+03 9.51822e+03 2.77065e+03
clth 1.07248e+04 1.10415e+04 1.98779e+04 1.64221e+04 2.13323e+04 7.18989e+03
trnsp 2.24502e+03 2.23530e+03 3.80079e+03 2.91343e+03 3.50719e+03 9.92770e+02
vehcl 1.65255e+04 1.69002e+04 2.91693e+04 2.27302e+04 2.85742e+04 8.05782e+03
servc 4.98369e+03 5.21064e+03 9.60965e+03 8.08456e+03 1.08154e+04 3.75019e+03
bnkng 1.09396e+04 1.14377e+04 2.10939e+04 1.77463e+04 2.37406e+04 8.23194e+03
readg 8.68036e+03 9.07556e+03 1.67376e+04 1.40813e+04 1.88378e+04 6.53186e+03
n_dur 2.77299e+03 2.88574e+03 5.33512e+03 4.58741e+03 6.38517e+03 2.59914e+03
petrl 8.00777e+03 8.11209e+03 1.44354e+04 1.14639e+04 1.36132e+04 3.64777e+03
hlth 2.30433e+04 2.30927e+04 4.00924e+04 3.17075e+04 3.96004e+04 1.21082e+04
educ 2.80215e+03 2.92981e+03 5.40313e+03 4.54572e+03 6.08121e+03 2.10860e+03
savng -1.49995e+03 1.01676e+04 4.23748e+04 5.79356e+04 1.13118e+05 4.77507e+04
+ h13 h14
food 8.11929e+03 5.24818e+02
alchl 3.30288e+03 1.53387e+03
tobac 1.65404e+03 7.68143e+02
util 4.23549e+03 3.88370e+02
housg 1.15294e+04 2.68036e+04
frnsh 3.46990e+03 1.61143e+03
appl 2.03276e+03 2.66599e+02
clth 7.94568e+03 1.13218e+04
trnsp 6.56467e+02 7.65529e+01
vehcl 6.14244e+03 1.59609e+03
servc 4.02413e+03 1.86881e+03
bnkng 8.83324e+03 4.10219e+03
readg 7.00898e+03 3.25500e+03
n_dur 3.92681e+03 1.30495e+04
petrl 2.33556e+03 3.01442e+02
hlth 9.46404e+03 1.86004e+03
educ 2.26261e+03 1.05077e+03
savng 4.67953e+04 3.21618e+04;
* convert into units consistent with the 1973 data:
gdk = 1.e-5 * gdk;
gsk = 1.e-5 * gsk;
gdl = 1.e-5 * gdl;
gtl = 1.e-5 * gtl;
dk(s) = 1.e-5 * dk(s);
sk(hh) = 1.e-5 * sk(hh);
dl(s) = 1.e-5 * dl(s);
sl(hh) = 1.e-5 * sl(hh);
pit(hh) = 1.e-5 * pit(hh);
trn(hh) = 1.e-5 * trn(hh);
tc(g) = 1.e-5 * tc(g);
gd(s) = 1.e-5 * gd(s);
vm(s) = 1.e-5 * vm(s);
vx(s) = 1.e-5 * vx(s);
y(s) = 1.e-5 * y(s);
rcs(g,hh) = 1.e-5 * rcs(g,hh);
ras(s,ss) = 1.e-5 * ras(s,ss);
parameter
taubmk(*) benchmark marginal tax,
tauave(*) average tax,
cc(h) current consumption value (market + leisure),
leisure(h) leisure demand in benchmark,
gc government consumption,
cp(h) value of private consumption,
eg(h) elasticity of substitution - private vs public
govsav exogenous (government) savings
cg(h) consumption plus public goods valuation
vpg(h) benchmark valuation of public goods;
set hfix(dh) households omitted from the aggregation;
alias (hp,h);
* identify households from the disaggregated data set
* which are not assigned:
hfix(dh) = yes$(sum(h$hmap(dh,h), 1) eq 0);
parameter txo(s) production output taxes (total value),
tk(s) capital taxes (total value),
tl(s) labor taxes (total value),
plref(s) labor reference price,
pkref(s) capital reference price
incadj(hh) income adjustment transfer;
*
incadj(hh) = 0;
txo(s) = 0.01 * taxrate(s,"txo") * y(s);
tk(s) = 0.01 * taxrate(s,"tk") * dk(s);
tl(s) = 0.01 * taxrate(s,"tl") * dl(s);
plref(s) = 1 + 0.01 * taxrate(s,"tl");
pkref(s) = 1 + 0.01 * taxrate(s,"tk");
parameter gce(g) gross consumption expenditure by good. (table 6.6);
set excs / y, inter, netexp, findem, check/;
set hcol /expend, inc_tax, labor, capital, transf, check/;
set prft /y, va, tax, inter, check/;
set gcol /endowment, l_tax, k_tax, prod_tax, con_tax, inc_tax, revenue,
transf, expend, outlay, deficit/;
set vcol /labor, capital, inter, total/;
set tcol / output, labor, capital, total/;
set govt(s) government sectors /govt/;
set ccg(g) current consumption goods;
ccg(g) = yes;
ccg("savng") = no;
* check consistency of the disaggregated data.
parameter
cd(s) consumer demand,
fd(s) final demand,
va(s) value-added,
labmkt labor market clearance,
capmkt capital market clearance,
pmchk(s,*) profit and market clearance check,
budget(hh,*) budget balance,
gbdgt(*) government budget balance,
zchk check of consumer goods transformation matrix,
zsum(g) transformation check sum;
parameter
expend(hh) benchmark consumption expenditure,
saving(hh) benchmark savings,
profit(s,*) benchmark profit check,
excess(*,*) excess demand check,
bdgtbal(hh,*) budget balance calculation,
pctprofit(s,*) benchmark profit check (percent),
pctva(*,*) value-added allocation
pctexcess(s,*) excess demand check (percent),
pctbudget(hh,*) budget balance calculation (percent),
pctrcs(g,hh) consumption as percentage of expenditure,
pctras(ss,s) intermediate input as percentage of output value,
government(*,*) government budget summary (percent),
valueadded(s,*) value-added summary,
taxpayment(s,*) tax payment summary;
* perform some quick data checks:
zsum(g) = sum(s, z(s,g));
zchk = sum(g, abs(zsum(g)) - 1);
abort$(abs(zchk) gt 1.e-5) " z matrix error: ", zsum;
gce(g) = sum(dh, rcs(g,dh));
cd(s) = sum(g, z(s,g) * (gce(g) - tc(g)));
fd(s) = gd(s) + cd(s) + vx(s) - gse(s) - vm(s);
va(s) = dl(s) + dk(s) + tl(s) + tk(s);
labmkt = sum(s, dl(s)) + gdl - sum(dh, sl(dh));
capmkt = sum(s, dk(s)) + gdk - sum(dh, sk(dh)) - gsk;
pmchk(s,"profit") = y(s) - sum(ss,ras(ss,s)) -
(dl(s) + dk(s) + tl(s) + tk(s) + txo(s));
pmchk(s,"profit%") = 100 * pmchk(s,"profit") / y(s);
pmchk(s,"excess") = fd(s) + sum(ss,ras(s,ss)) - y(s);
pmchk(s,"excess%") = 100 * (fd(s) + sum(ss,ras(s,ss)) - y(s))/y(s);
* include some other statistics for a complete report:
set gexpend / trnsfr, adj, gc, sav/
grevenu / gse, gsk, pit, tl, tk, txo, tc, hfix/;
gbdgt("trnsfr") = sum(dh, trn(dh));
gbdgt("adj") = sum(dh, incadj(dh));
gbdgt("gc") = sum(s, gd(s)) + gdk + gdl + gtl;
gbdgt("gse") = sum(s,gse(s));
gbdgt("gsk") = gsk;
gbdgt("pit") = sum(dh, pit(dh));
gbdgt("tl") = sum(s, tl(s)) + gtl;
gbdgt("tk") = sum(s, tk(s));
gbdgt("txo") = sum(s, txo(s));
gbdgt("tc") = sum(g, tc(g));
gbdgt("revenue") = sum(grevenu, gbdgt(grevenu));
gbdgt("outlay") = sum(gexpend, gbdgt(gexpend));
gbdgt("deficit") = gbdgt("outlay") - gbdgt("revenue");
expend(dh) = sum(ccg, rcs(ccg,dh));
saving(dh) = rcs("savng",dh);
bdgtbal(dh,"expend") = expend(dh);
bdgtbal(dh,"saving") = saving(dh);
bdgtbal(dh,"inc_tax") = pit(dh);
bdgtbal(dh,"labor") = sl(dh);
bdgtbal(dh,"capital") = sk(dh);
bdgtbal(dh,"transf") = trn(dh);
bdgtbal(dh,"check") =
expend(dh)+saving(dh)-(sl(dh)+sk(dh)+trn(dh)-pit(dh));
pctbudget(dh,"expend") = 100;
pctbudget(dh,"saving") = 100*
bdgtbal(dh,"saving") / expend(dh);
pctbudget(dh,"inc_tax") = 100*
bdgtbal(dh,"inc_tax") / expend(dh);
pctbudget(dh,"labor") = 100*
bdgtbal(dh,"labor") / expend(dh);
pctbudget(dh,"capital") = 100*
bdgtbal(dh,"capital") / expend(dh);
pctbudget(dh,"transf") = 100*
bdgtbal(dh,"transf") / expend(dh);
pctbudget(dh,"check") = 100*
bdgtbal(dh,"check") / expend(dh);
display zchk, labmkt, capmkt, pmchk, gbdgt;
display pctbudget, bdgtbal;
* =================================================================
* make adjustments to balance budgets:
* first, remove any negative income taxes:
pit(dh) = max(0, pit(dh));
incadj(dh) = sum(g, rcs(g,dh)) - (sl(dh)+sk(dh)+trn(dh)-pit(dh));
* make adjustments to balance profits:
y(s) = y(s) - pmchk(s,"profit");
* adjustments to balance sectoral markets:
gse(s) = gse(s) + fd(s) + sum(ss,ras(s,ss)) - y(s);
* =================================================================
* recheck the central variables:
fd(s) = gd(s) + cd(s) + vx(s) - gse(s) - vm(s);
pmchk(s,"profit") = y(s) - sum(ss,ras(ss,s)) -
(dl(s) + dk(s) + tl(s) + tk(s) + txo(s));
pmchk(s,"profit%") = 100 * pmchk(s,"profit") / y(s);
budget(dh,"value") =
sum(g, rcs(g,dh)) - (sl(dh)+sk(dh)+trn(dh)-pit(dh));
budget(dh,"percent") = 100 * budget(dh,"value")/sum(g, rcs(g,dh));
pmchk(s,"excess") = fd(s) + sum(ss,ras(s,ss)) - y(s);
pmchk(s,"excess%") = 100 * (fd(s) + sum(ss,ras(s,ss)) - y(s))/y(s);
* recalculate the government budget statistics:
gbdgt("trnsfr") = sum(dh, trn(dh));
gbdgt("adj") = sum(dh, incadj(dh));
gbdgt("gc") = sum(s, gd(s)) + gdk + gdl + gtl;
gbdgt("gse") = sum(s,gse(s));
gbdgt("gsk") = gsk;
gbdgt("pit") = sum(dh, pit(dh));
gbdgt("tl") = sum(s, tl(s)) + gtl;
gbdgt("tk") = sum(s, tk(s));
gbdgt("txo") = sum(s, txo(s));
gbdgt("tc") = sum(g, tc(g));
gbdgt("revenue") = sum(grevenu, gbdgt(grevenu));
gbdgt("outlay") = sum(gexpend, gbdgt(gexpend));
gbdgt("deficit") = gbdgt("outlay") - gbdgt("revenue");
display pmchk, gbdgt;
expend(dh) = sum(ccg, rcs(ccg,dh));
saving(dh) = rcs("savng",dh);
profit(s,"y") = y(s);
profit(s,"va") = dl(s) + dk(s);
profit(s,"tax") = tl(s) + tk(s) + txo(s);
profit(s,"inter") = sum(ss,ras(ss,s));
profit(s,"check") = y(s) - sum(ss,ras(ss,s)) -
(dl(s) + dk(s) + tl(s) + tk(s) + txo(s));
pctprofit(s,"y") = 100;
pctprofit(s,"va") = 100*profit(s,"va") / profit(s,"y");
pctprofit(s,"tax") = 100*profit(s,"tax") / profit(s,"y");
pctprofit(s,"inter") = 100*profit(s,"inter") / profit(s,"y");
pctprofit(s,"check") = 100*profit(s,"check") / profit(s,"y");
pctva(s,"k") = 100 * dk(s) / va(s);
pctva(s,"l") = 100 * dl(s) / va(s);
pctva(s,"tl") = 100 * tl(s) / va(s);
pctva(s,"tk") = 100 * tk(s) / va(s);
pctva("total","k") = 100 * sum(s, dk(s)) / sum(s, va(s));
pctva("total","l") = 100 * sum(s, dl(s)) / sum(s,va(s));
pctva("total","tl") = 100 * sum(s, tl(s)) / sum(s,va(s));
pctva("total","tk") = 100 * sum(s, tk(s)) / sum(s,va(s));
excess(s,"y") = y(s);
excess(s,"inter") = sum(ss,ras(s,ss));
excess(s,"netexp") = vx(s) - vm(s);
excess("total","netexp") = sum(s, vx(s) - vm(s));
excess(s,"findem") = gd(s) + cd(s) - gse(s);
excess(s,"check") = fd(s) + sum(ss,ras(s,ss)) - y(s);
pctexcess(s,"y") = 100;
pctexcess(s,"inter") = 100*excess(s,"inter") /excess(s,"y");
pctexcess(s,"netexp") = 100*excess(s,"netexp") /excess(s,"y");
pctexcess(s,"findem") = 100*excess(s,"findem") /excess(s,"y");
pctexcess(s,"check") = 100*excess(s,"check") /excess(s,"y");
bdgtbal(dh,"expend") = expend(dh);
bdgtbal(dh,"saving") = saving(dh);
bdgtbal(dh,"inc_tax") = pit(dh);
bdgtbal(dh,"labor") = sl(dh);
bdgtbal(dh,"capital") = sk(dh);
bdgtbal(dh,"transf") = trn(dh);
bdgtbal(dh,"check") =
expend(dh)+saving(dh)-(sl(dh)+sk(dh)+trn(dh)-pit(dh));
pctbudget(dh,"expend") = 100;
pctbudget(dh,"saving") = 100*
bdgtbal(dh,"saving")/bdgtbal(dh,"expend");
pctbudget(dh,"inc_tax") = 100*
bdgtbal(dh,"inc_tax")/bdgtbal(dh,"expend");
pctbudget(dh,"labor") = 100*
bdgtbal(dh,"labor") /bdgtbal(dh,"expend");
pctbudget(dh,"capital") = 100*
bdgtbal(dh,"capital")/bdgtbal(dh,"expend");
pctbudget(dh,"transf") = 100*
bdgtbal(dh,"transf") /bdgtbal(dh,"expend");
pctbudget(dh,"check") = 100*
bdgtbal(dh,"check") /bdgtbal(dh,"expend");
government("endowment","level") = gsk + sum(s, gse(s));
government("l_tax","level") = sum(s, tl(s));
government("k_tax","level") = sum(s, tk(s));
government("prod_tax","level") = sum(s, txo(s));
government("con_tax","level") = sum(g, tc(g));
government("inc_tax","level") = sum(dh, pit(dh));
government("revenue","level") = gsk + sum(s, gse(s)) +
sum(s, tl(s) + tk(s) + txo(s)) +
sum(g, tc(g)) + sum(dh, pit(dh));
government("transf","level") = sum(dh, trn(dh));
government("incadj","level") = sum(dh, incadj(dh));
government("expend","level") = sum(s, gd(s)) + gdl + gdk + gtl;
government("outlay","level") = sum(dh, trn(dh)) +
sum(s, gd(s)) + gdl + gdk + gtl;
government("deficit","level") = government("outlay","level")-
government("revenue","level");
government("endowment","percent") =
100 * government("endowment","level") /
government("revenue","level");
government("l_tax","percent") =
100 * government("l_tax","level") /
government("revenue","level");
government("k_tax","percent") =
100 * government("k_tax","level") /
government("revenue","level");
government("prod_tax","percent") =
100 * government("prod_tax","level") /
government("revenue","level");
government("con_tax","percent") =
100 * government("con_tax","level") /
government("revenue","level");
government("inc_tax","percent") =
100 * government("inc_tax","level") /
government("revenue","level");
government("revenue","percent") = 100;
government("transf","percent") =
100 * government("transf","level") /
government("revenue","level");
government("incadj","percent") =
100 * government("incadj","level") /
government("revenue","level");
government("expend","percent") =
100 * government("expend","level") /
government("revenue","level");
government("outlay","percent") =
100 * government("outlay","level") /
government("revenue","level");
government("deficit","percent") =
100 * government("deficit","level") /
government("revenue","level");
pctrcs(g,dh) = 100 * rcs(g,dh) / expend(dh);
pctras(ss,s) = 100 * ras(ss,s) / y(s);
valueadded(s,"labor") = dl(s);
valueadded(s,"capital") = dk(s);
valueadded(s,"inter") = sum(ss, ras(ss,s));
valueadded(s,"total") = dl(s) + dk(s) + sum(ss, ras(ss,s));
taxpayment(s,"output") = txo(s);
taxpayment(s,"labor") = tl(s);
taxpayment(s,"capital") = tk(s);
taxpayment(s,"total") = txo(s) + tl(s) + tk(s);
display profit, excess, bdgtbal;
display pctprofit, pctva, pctexcess, pctbudget;
display government, taxpayment;
option pctrcs:1;
option pctras:1;
*.display valueadded, pctrcs, pctras;
*== display tax rates before aggregation:
tauave(dh) = pit(dh) / (sl(dh) + sk(dh));
display tau, tauave;
tauave(dh) = 0;
*======= check the aggregation.
abort$(smax(dh, sum(h$hmap(dh,h), 1)-1) gt 0) "invalid mapping.";
*======= perform the aggregation ===========
parameter popshr(h) share of population;
count(h) = sum(dh$hmap(dh,h), count(dh));
popshr(h) = count(h) / sum(hp, count(hp));
sk(h) = sum(dh$hmap(dh,h), sk(dh));
sl(h) = sum(dh$hmap(dh,h), sl(dh));
pit(h) = sum(dh$hmap(dh,h), pit(dh));
incadj(h) = sum(dh$hmap(dh,h), incadj(dh));
trn(h) = sum(dh$hmap(dh,h), trn(dh));
tau(h)$pit(h) = sum(dh$hmap(dh,h), pit(dh) * tau(dh)) / pit(h);
rcs(g,h) = sum(dh$hmap(dh,h), rcs(g,dh));
zta(h) = sum(dh$hmap(dh,h), sl(dh) * zta(dh)) /
sum(dh$hmap(dh,h), sl(dh));
* fix elasticities:
el(h) = sum(dh$hmap(dh,h), el(dh)*sl(dh))/
sum(dh$hmap(dh,h), sl(dh));
ec(h) = 1.5;
taubmk(h) = tau(h);
tauave(h) = pit(h) / (sl(h) + sk(h));
leisure(h) = sl(h)*(zta(h)-1);
cc(h) = sum(g$ccg(g), rcs(g,h)) + leisure(h);
gc = sum(s, gd(s)) + gdk + gdl + gtl;
* set savings levels to zero for households with negative savings
* and make according income adjustment:
saving(h) = sum(g$(not ccg(g)), rcs(g,h));
expend(h) = sum(ccg, rcs(ccg,h));
govsav = sum(h$(saving(h) lt 0), saving(h));
incadj(h)$(saving(h) lt 0) = incadj(h) - saving(h);
loop(g$(not ccg(g)), rcs(g,h)$(saving(h) lt 0) = 0;);
saving(h) = sum(g$(not ccg(g)), rcs(g,h));
display govsav, saving;
bdgtbal(dh,"expend") = 0;
bdgtbal(dh,"saving") = 0;
bdgtbal(dh,"inc_tax") = 0;
bdgtbal(dh,"labor") = 0;
bdgtbal(dh,"capital") = 0;
bdgtbal(dh,"transf") = 0;
bdgtbal(dh,"check") = 0;
pctbudget(dh,"expend") = 0;
pctbudget(dh,"saving") = 0;
pctbudget(dh,"inc_tax") = 0;
pctbudget(dh,"labor") = 0;
pctbudget(dh,"capital") = 0;
pctbudget(dh,"transf") = 0;
pctbudget(dh,"check") = 0;
bdgtbal(h,"expend") = expend(h);
bdgtbal(h,"saving") = saving(h);
bdgtbal(h,"inc_tax") = pit(h);
bdgtbal(h,"labor") = sl(h);
bdgtbal(h,"capital") = sk(h);
bdgtbal(h,"incadj") = incadj(h);
bdgtbal(h,"transf") = trn(h);
bdgtbal(h,"check") = expend(h)+saving(h) -
(sl(h)+sk(h)+trn(h)+incadj(h)-pit(h));
pctbudget(h,"expend") = 100;
pctbudget(h,"saving") = 100* bdgtbal(h,"saving")/bdgtbal(h,"expend");
pctbudget(h,"inc_tax") = 100* bdgtbal(h,"inc_tax")/bdgtbal(h,"expend");
pctbudget(h,"labor") = 100* bdgtbal(h,"labor") /bdgtbal(h,"expend");
pctbudget(h,"capital") = 100* bdgtbal(h,"capital")/bdgtbal(h,"expend");
pctbudget(h,"transf") = 100* bdgtbal(h,"transf") /bdgtbal(h,"expend");
pctbudget(h,"incadj") = 100* bdgtbal(h,"incadj") /bdgtbal(h,"expend");
pctbudget(h,"check") = 100 * bdgtbal(h,"check") /bdgtbal(h,"expend");
display popshr, bdgtbal, pctbudget;
parameter share(h,*);
share(h,"l/k") = sl(h) / sk(h);
share(h,"saving") = 100 * saving(h) / sum(hp, saving(hp));
share(h,"sl") = 100 * sl(h) / sum(hp, sl(hp));
share(h,"sk") = 100 * sk(h) / sum(hp, sk(hp));
share(h,"tr") = 100 * trn(h) / sum(hp, trn(hp));
share(h,"pit") = 100 * pit(h) / sum(hp, pit(hp));
share(h,"expend") = 100 * expend(h) / sum(hp, expend(hp));
display share;
government("endowment","level") = gsk + sum(s, gse(s));
government("l_tax","level") = sum(s, tl(s)) + gtl;
government("k_tax","level") = sum(s, tk(s));
government("prod_tax","level") = sum(s, txo(s));
government("con_tax","level") = sum(g, tc(g));
government("inc_tax","level") = sum(h, pit(h));
government("trd_bal","level") = sum(s, vm(s) - vx(s));
government("revenue","level") = gsk + sum(s, gse(s)) +
sum(s, tl(s) + tk(s) + txo(s)) + gtl +
sum(s, vm(s) - vx(s)) +
sum(g, tc(g)) + sum(h, pit(h));
government("transf","level") = sum(h, trn(h));
government("incadj","level") = sum(h, incadj(h));
government("hfix","level") = sum(hfix, sum(g, rcs(g,hfix))
- sl(hfix) - sk(hfix));
government("expend","level") = sum(s, gd(s)) + gdl + gdk + gtl;
government("outlay","level") = sum(h, trn(h) + incadj(h)) +
government("hfix","level") +
sum(s, gd(s)) + gdl + gdk + gtl;
government("deficit","level") = government("outlay", "level")-
government("revenue","level");
government("endowment","percent") =
100 * government("endowment","level") /
government("revenue","level");
government("l_tax","percent") =
100 * government("l_tax","level") /
government("revenue","level");
government("k_tax","percent") =
100 * government("k_tax","level") /
government("revenue","level");
government("prod_tax","percent") =
100 * government("prod_tax","level") /
government("revenue","level");
government("con_tax","percent") =
100 * government("con_tax","level") /
government("revenue","level");
government("inc_tax","percent") =
100 * government("inc_tax","level") /
government("revenue","level");
government("revenue","percent") = 100;
government("transf","percent") =
100 * government("transf","level") /
government("revenue","level");
government("incadj","percent") =
100 * government("incadj","level") /
government("revenue","level");
government("hfix","percent") =
100 * government("hfix","level") /
government("revenue","level");
government("expend","percent") =
100 * government("expend","level") /
government("revenue","level");
government("outlay","percent") =
100 * government("outlay","level") /
government("revenue","level");
government("deficit","percent") =
100 * government("deficit","level") /
government("revenue","level");
display government;
* recalculate the government budget statistics:
gbdgt("trnsfr") = sum(h, trn(h));
gbdgt("adj") = sum(h, incadj(h));
gbdgt("gc") = sum(s, gd(s)) + gdk + gdl + gtl;
gbdgt("sav") = govsav;
gbdgt("hfix") = sum(hfix, sl(hfix)+sk(hfix) - sum(g, rcs(g,hfix)));
gbdgt("gse") = sum(s,gse(s));
gbdgt("gsk") = gsk;
gbdgt("pit") = sum(h, pit(h));
gbdgt("tl") = sum(s, tl(s)) + gtl;
gbdgt("tk") = sum(s, tk(s));
gbdgt("txo") = sum(s, txo(s));
gbdgt("tc") = sum(g, tc(g));
gbdgt("revenue") = sum(grevenu, gbdgt(grevenu));
gbdgt("outlay") = sum(gexpend, gbdgt(gexpend));
gbdgt("deficit") = gbdgt("outlay") - gbdgt("revenue");
display gbdgt;
parameter tikave average capital-income tax rate,
tiave average income tax rate,
tlave average labor tax rate,
tkave average capital tax rate,
gbench benchmark provision;
tlave = sum(s, tl(s)) / sum(s, dl(s) + tl(s));
tiave = sum(h, pit(h)) / sum(h, sl(h) + sk(h));
tkave = sum(s, tk(s)) / sum(s, dk(s)+tk(s));
tikave = (sum(h, pit(h)) + sum(s, tk(s))) /
(sum(h, pit(h) + sl(h) + sk(h)) + sum(s, dk(s)+tk(s)));
gbench = (gdl + gtl + gdk + sum(s, gd(s))) /
sum((g,h), rcs(g,h));
display tiave, tlave, tikave, tkave, gbench, tauave, taubmk;
scalar static switch for fixed capital stock /1/
redist switch for endogenous income redistribution /1/;
scalar efks elasticity of foreign capital supply /0.25/,
vscale scale factor on valuation of public good /1/;
alias (hp,h);
option limrow=0;
option limcol=0;
$offsymlist offsymxref offuellist offuelxref
parameter
qref_ls(h) reference level of labor supply - net of tax
qref_z(s,g) reference level of consumer goods formation net tax
qref_va(s) refreence level of value-added
qref_i(h) reference level of household income-expenditure
qref_gc reference level of government consumption
qref_trn reference level of transfers
qref_adj reference level of income adjustments
qref_ginc reference level of government income
pref_ls(h) reference price of leisure
pref_l(s) reference price of labor
pref_k(s) reference price of capital services
t_l(s) labor tax
t_k(s) capital tax
t_y(s) output tax
t_i(h) income tax (marginal rate)
t_iave(h) income tax (average rate)
t_c(g) tax rates on consumption
t_gdl tax rate on government labor demand
theta(h) weights applied in synthetic objective ;
qref_ls(h) = sl(h)*(1-taubmk(h));
pref_ls(h) = 1 + taubmk(h)/(1-taubmk(h));
t_i(h) = taubmk(h)/(1-taubmk(h));
t_iave(h) = pit(h) / (sl(h) + sk(h));
qref_z(s,g) = z(s,g)*(gce(g)-tc(g));
t_c(g) = tc(g) / gce(g);
qref_va(s) = dl(s) + tl(s) + dk(s) + tk(s);
pref_l(s) = 1 + tl(s)/dl(s);
t_l(s) = tl(s) / dl(s);
pref_k(s) = 1 + tk(s)/dk(s);
t_k(s) = tk(s)/dk(s);
t_y(s) = txo(s) / y(s);
qref_gc = gdl + gtl + gdk + sum(s, gd(s));
vpg(h) = vscale *
qref_gc * sum(ccg, rcs(ccg,h)) / sum((ccg,hp), rcs(ccg,hp));
cp(h) = sum(g$ccg(g), rcs(g,h));
cg(h) = cp(h) + vpg(h);
qref_i(h) = cg(h) + leisure(h);
t_gdl = gtl/gdl;
qref_trn = sum(h, trn(h));
qref_adj = sum(h, incadj(h));
qref_ginc = qref_trn + qref_adj + qref_gc;
* calibrate the top level elasticity of leisure vs. consumption:
el(h) = (leisure(h)/(qref_i(h)-leisure(h)) + 0.15 /(zta(h)-1)) /
(1 - qref_ls(h)/(qref_i(h)-leisure(h)));
el(dh) = 0;
eg(h) = 0.5;
vpg(h) = qref_gc * popshr(h);
cg(h) = sum(ccg, rcs(ccg,h)) + vpg(h);
qref_i(h) = cg(h) + leisure(h);
el(h) = ( els/(zta(h)-1) + qref_ls(h) / qref_i(h) ) /
(1 - leisure(h) / qref_i(h));
display el;
alias (hp,h);
option solprint=off;
option limrow=0;
option limcol=0;
$offsymlist offsymxref offuellist offuelxref
* gemtap model in mcp format.
variables
p_l wage index
p_k capital return index
p_ls(h) leisure price
p_c(g) consumption goods price
p_cc(h) current consumption price
p_w(h) welfare price index
p_gc government consumption price
p_cp(h) private consumption price
p_g(h) household valuation of public good
p_y(s) sectoral goods price
p_va(s) value-added price index
p_trn transfer price index
p_fx the real exchange rate
a_gc government consumption
a_invest investment-capital stock
a_y(s) production index
a_va(s) value added index
a_w(h) welfare index
a_cc(h) current consumption
a_cp(h) private consumption aggregate
a_c(g) aggregate consumption index
a_ls(h) labor supply
i_gov governemtn income
i_h(h) household income (total)
i_e(h) endowment income
tau_l labor tax instrument
tau_k capital and income tax instrument
tau_pl instrument for compute labour supply elasticity;
variable
a_km net capital inflow;
equations
mkt_l labor market - endogenous taxes
mkt_k capital market - endogenous taxes
mkt_ls(h) leisure - labor market
mkt_c(g) consumption good market
mkt_cc(h) current consumption market
mkt_w(h) supply-demand for welfare
mkt_gc government consumption
mkt_cp(h) private consumption aggregate
mkt_g(h) household valuation of public good
mkt_va(s) value-added supply-demand
mkt_y(s) sectoral output markets
mkt_trn transfer balance
mkt_fx foreign exchange market
prf_gc government consumption (leontief)
prf_invest zero profit for investment
prf_y(s) sectoral cost function (leontief)
prf_va(s) value-added cost function (ces) - endogenous taxes
prf_w(h) welfare index (ces)
prf_cc(h) current consumption (ces)
prf_cp(h) zero profit condition for private consumption
prf_c(g) consumption good formation (leontief)
prf_ls(h) labor supply (leontief)
kmdef capital import definition
totinc(h) household income definition - total
income(h) household endowment income
govinc government income;
* labor supply condition:
prf_ls(h).. p_ls(h) * (1 + t_i(h)) / pref_ls(h)
=e= p_l + tau_pl * p_trn;
prf_c(g).. sum(s$z(s,g), p_y(s) * qref_z(s,g)) =e=
p_c(g) * gce(g) * (1 - t_c(g));
prf_cp(h)..
( sum(g$ccg(g),
rcs(g,h) * p_c(g)**(1-ec(h)) ) -
cp(h) * p_cp(h)**(1-ec(h)) )$(ec(h) ne 1) +
( sum(g$ccg(g), rcs(g,h) * log(p_c(g))) -
cp(h) * log(p_cp(h)) )$(ec(h) eq 1) =e= 0;
prf_cc(h).. ( (vpg(h) * p_g(h)**(1-eg(h)))$vpg(h) +
cp(h) * p_cp(h)**(1-eg(h)) -
cg(h) * p_cc(h)**(1-eg(h)) )$(eg(h) ne 1) +
( (vpg(h) * log(p_g(h)))$vpg(h) +
cp(h) * log(p_cp(h)) -
cg(h) * log(p_cc(h)) )$(eg(h) eq 1) =e= 0;
prf_w(h).. ( cg(h) * p_cc(h)**(1-el(h)) +
leisure(h) * p_ls(h)**(1-el(h)) -
qref_i(h) * p_w(h)**(1-el(h)) )$(el(h) ne 1) +
( cg(h) * log(p_cc(h)) +
leisure(h) * log(p_ls(h)) -
qref_i(h) * log(p_w(h)) )$(el(h) eq 1) =e= 0;
prf_gc.. p_l * (1 + t_gdl) * gdl + p_k * gdk
+ sum(s$gd(s), p_y(s) * gd(s)) =e= p_gc * qref_gc;
prf_va(s)..
((p_l * (1+tau_l*t_l(s))/pref_l(s))**(1-ekl(s))
* dl(s) * pref_l(s) +
(p_k * (1+ tau_k * t_k(s))/pref_k(s))**(1-ekl(s))
* dk(s) * pref_k(s)
- p_va(s)**(1-ekl(s)) * qref_va(s) )$(ekl(s) ne 1) +
(dl(s) * pref_l(s) * log(p_l * (1+tau_l*t_l(s))/ pref_l(s)) +
dk(s) * pref_k(s) * log(p_k * (1+ tau_k *t_k(s))/pref_k(s)) -
qref_va(s) * log(p_va(s)) )$(ekl(s) eq 1) =e= 0;
prf_y(s).. p_va(s) * qref_va(s) +
sum(ss$ras(ss,s), ras(ss,s) * p_y(ss)) =e=
p_y(s) * y(s) * (1-t_y(s));
prf_invest..
sum(g$(not ccg(g)), p_c(g)) =e= p_k;
kmdef.. a_km =e= 1 - (p_fx/p_k)**efks;
mkt_k.. a_invest * (sum(h, sk(h)) + gsk) + sum(hfix, sk(hfix))
* foreign capital flows:
+ (sum(h, sk(h)) * a_km)$efks =e=
sum(s, a_va(s) * dk(s)*
( pref_k(s)/(1+tau_k *t_k(s)) )**ekl(s) *
( p_va(s)/p_k )**ekl(s) )
+ a_gc * gdk;
mkt_l.. sum(h, a_ls(h)*sl(h)) + sum(hfix, sl(hfix)) =e=
sum(s, a_va(s) * dl(s) *
( pref_l(s) / (1+tau_l*t_l(s)) )**ekl(s) *
( p_va(s)/p_l)**ekl(s) )
+ a_gc * gdl;
mkt_ls(h).. leisure(h) + qref_ls(h) =e=
leisure(h) * a_w(h) * (p_w(h)/p_ls(h))**el(h) +
qref_ls(h) * a_ls(h);
mkt_c(g).. gce(g) * a_c(g) =e=
* exogenous household demand and saving:
sum(hfix, rcs(g,hfix)) + govsav$(not ccg(g))
* current consumption goods:
+ sum(h, (a_cp(h) * rcs(g,h) *
(p_cp(h)/p_c(g))**eg(h))$ccg(g)
* investment demand:
+ (a_invest * rcs(g,h))$(not ccg(g)) );
mkt_cc(h).. a_cc(h) =e= a_w(h) * (p_w(h)/p_cc(h))**el(h);
mkt_cp(h).. a_cp(h) =e= a_cc(h) * (p_cc(h)/p_cp(h))**eg(h);
mkt_g(h)..
a_gc =e= a_cc(h) * (p_cc(h) / p_g(h))**eg(h);
mkt_w(h).. a_w(h) =e= i_h(h) / p_w(h);
mkt_gc.. p_trn * (qref_trn + qref_adj) +
p_gc * a_gc * qref_gc =e= i_gov * qref_ginc;
mkt_va(s).. a_va(s) =e= a_y(s);
* trade elasticity parameters (0.465 and 10) taken from p139 of bfsw:
mkt_y(s).. a_y(s) * y(s) + vm(s)*(p_y(s)/p_fx)**0.465 + gse(s) =e=
sum(ss, a_y(ss) * ras(s,ss))
+ sum(g, a_c(g) * qref_z(s,g)) + gd(s) * a_gc
+ vx(s)*(p_fx/p_y(s))**10;
mkt_fx.. sum(s, vm(s)*(p_y(s)/p_fx)**0.465 -
vx(s)*(p_fx/p_y(s))**10 )
* capital flows:
+ (sum(h, sk(h)) * a_km)$efks =e= 0;
* hold real value of transfers constant:
mkt_trn.. p_trn =e= sum((h,ccg), rcs(ccg,h) * p_c(ccg)) /
sum((h,ccg), rcs(ccg,h));
* total income includes private valuation of public good:
totinc(h).. i_h(h) * qref_i(h) =e= i_e(h) * (qref_i(h)-vpg(h))
+ (p_g(h) * vpg(h) * a_gc)$vpg(h);
income(h).. i_e(h) * (qref_i(h)-vpg(h)) =e=
* capital income:
a_invest * ( p_k * sk(h)
- sum(g$(not ccg(g)), p_c(g) * saving(h)) )
* labor income:
+ p_ls(h) * (qref_ls(h) + leisure(h))
* income taxes (average with marginal adjustment):
- t_iave(h) * (sl(h) + sk(h)) * p_trn * tau_k
- t_i(h) * sk(h) * (p_k - p_trn)
+ t_i(h) * qref_ls(h) * p_trn
* transfers:
+ p_trn * (trn(h) + incadj(h));
govinc..
i_gov * qref_ginc =e=
* income of exogenous households:
sum(hfix, sl(hfix) * p_l + sk(hfix) * p_k
- sum(g, rcs(g,hfix) * p_c(g)) )
* savings (exogenous)
- sum(g$(not ccg(g)), p_c(g) * govsav)
* capital revenue:
+ a_invest * p_k * gsk
* government expenditures:
+ sum(s, p_y(s) * gse(s))
* tax receipts:
+ sum(h,
t_iave(h) * (sl(h) + sk(h)) * p_trn * tau_k
+ t_i(h) *
( qref_ls(h) * (a_ls(h) * p_ls(h) - p_trn) +
sk(h) * (p_k-p_trn) )
)
+ sum(s, a_va(s) * p_l * dl(s) * tau_l * t_l(s)
* (pref_l(s)/(1+tau_l*t_l(s)))**ekl(s)
* (p_va(s)/p_l)**ekl(s) )
+ sum(s, a_va(s) * p_k * dk(s) * tau_k * t_k(s)
* (pref_k(s)/(1+tau_k *t_k(s)))**ekl(s)
* (p_va(s)/p_k)**ekl(s))
+ sum(s, a_y(s) * p_y(s) * y(s) * t_y(s))
+ a_gc * p_l * gdl * t_gdl
+ sum(g, a_c(g) * p_c(g) * gce(g) * t_c(g));
model gemtap /
mkt_l.p_l,
mkt_k.p_k,
mkt_ls.p_ls,
mkt_c.p_c,
mkt_cc.p_cc,
mkt_w.p_w,
mkt_gc.p_gc,
mkt_cp.p_cp,
mkt_g.p_g,
mkt_va.p_va,
mkt_y.p_y,
mkt_trn.p_trn,
mkt_fx.p_fx,
prf_gc.a_gc,
prf_invest.a_invest,
prf_y.a_y,
prf_va.a_va,
prf_w.a_w,
prf_cc.a_cc
prf_cp.a_cp,
prf_c.a_c,
prf_ls.a_ls,
kmdef.a_km,
totinc.i_h,
income.i_e,
govinc.i_gov /;
* default calibration: uniform attribubtion with -0.5 elasticity:
eg(h) = 0.5;
vpg(h) = qref_gc * popshr(h);
cg(h) = sum(ccg, rcs(ccg,h)) + vpg(h);
qref_i(h) = cg(h) + leisure(h);
$ontext
scalar peps / 1.e-5 / ;
p_k.lo = peps;
p_l.lo = peps;
p_va.lo(s) = peps;
p_ls.lo(h) = peps;
p_c.lo(g) = peps;
p_cc.lo(h) = peps;
p_cp.lo(h) = peps;
p_g.lo(h) = peps;
p_w.lo(h) = peps;
p_fx.lo = peps;
p_y.lo(s) = peps;
$offtext
* install benchmark:
a_cp.l(h) = 1;
p_cp.l(h) = 1;
a_gc.l = 1;
a_invest.l = 1;
a_y.l(s) = 1;
a_va.l(s) = 1;
a_w.l(h) = 1;
a_cc.l(h) = 1;
a_c.l(g) = 1;
a_ls.l(h) = 1;
p_l.l = 1;
p_k.l = 1;
p_gc.l = 1;
p_g.l(h) = 1;
p_trn.l = 1;
p_fx.l = 1;
p_ls.l(h) = 1;
p_w.l(h) = 1;
p_y.l(s) = 1;
p_va.l(s) = 1;
p_c.l(g) = 1;
p_cc.l(h) = 1;
i_gov.l = 1;
i_e.l(h) = 1;
i_h.l(h) = 1;
a_km.l = 0;
tau_l.l = 1;
tau_k.l = 1;
* fix indicator variables:
tau_pl.fx = 0;
tau_l.fx = 1;
tau_k.fx = 1;
* fix variables according to switches and benchmark values.
* n.b. this causes associated equations to drop.
a_invest.fx$static = 1;
a_km.fx$(efks eq 0) = 1;
p_g.fx(h)$(vpg(h) eq 0) = 0;
i_e.fx(h)$(not redist) = 1;
i_gov.fx$redist = 1;
solve gemtap using mcp;
set sc scenarios /bench benchmark replication,
itcut uniform (flat rate) income tax,
ktcut uniform capital tax,
ltcut uniform labor tax/;
parameter summary(*,*,sc) solution summary;
table uniftax(sc,*) indicators for uniform
k l i
bench 0 0 0
itcut 0 0 1
ktcut 1 0 0
ltcut 0 1 0;
loop(sc,
* flat rate capital tax:
if (uniftax(sc,"k"),
t_k(s) = sum(ss, tk(ss)) / sum(ss, dk(ss));
else
t_k(s) = tk(s)/dk(s);
);
* flat rate labor tax:
if (uniftax(sc,"l"),
t_l(s) = sum(ss, tl(ss)) / sum(ss, dl(ss));
else
t_l(s) = tl(s) / dl(s);
);
* move to a flat rate income tax:
if (uniftax(sc,"i"),
t_i(h) = tiave;
t_iave(h) = tiave;
else
t_i(h) = taubmk(h)/(1-taubmk(h));
t_iave(h) = pit(h) / (sl(h) + sk(h));
);
solve gemtap using mcp;
* report solution statistics:
summary("status","_", sc) = gemtap.modelstat;
summary("iters", "_", sc) = gemtap.iterusd;
summary("cpu", "_", sc) = gemtap.resusd;
* public goods provision:
summary("g","_",sc) = 100 * (a_gc.l - 1);
summary("pk","_",sc) = 100 * (p_k.l/p_trn.l - 1);
summary("pl","_",sc) = 100 * (p_l.l/p_trn.l - 1);
summary("kmx","_",sc) = 100 * a_km.l;
* report welare changes indices:
summary("ev",h,sc) = 100 * (a_w.l(h) - 1);
* report current consumption:
summary("cc",h,sc) = 100 * (a_cc.l(h) - 1);
* report private consumption:
summary("cp",h,sc) = 100 * (a_cp.l(h) - 1);
);
display summary;