$Title Nine sector General Equilibrium Tax Model of the Nepalese Economy *@Keshab Bhattarai, University of Hull. * Steps for implementing an applied general equilibrium model using GAMS/MPSGE *1. Formulate a precise research question. *2. Think about the basic analytical structure that can answer that question. *3. Prepare the input-output table to the dimension suitable for study. *4. Read transction table, final demand, value added and the transfer parts. *5. Check consistency of benchmark data and tax rates. * Normalise all prices to 1 in the benchmark. *6. Declare the model using these benchmark quantities. *7. Solve the model. *8. Insure that the benchmark economy is replicated as a model solution. *9. Do counter factual analysis. *10. write a paper when you are happy with the results of the model $Title A nine sector general equilibrium model for a developing economy set i sectors/ agri Manuf Chem Metal Gselw Hotel Transp Finnce ScSrv / set f final demand / Pcon Gcon Prfxinv Gfxinv Stock Exp/ set h households /h1*h10/ ; alias(i,j), (f, ff); Table IO(i,j) nine sector input-output model (NPC: Economic analysis division) agri manuf Chem Metal Gselw Hotel Transp Finnce ScSrv agri 8694.1 16788.6 544.5 1778.5 0.0 193.6 0.1 18.8 16.6 Manuf 1985.1 6550.4 35.8 1457.0 9.9 211.4 46.9 171.6 2127.4 Chem 3730.4 22.3 684.3 419.0 15.4 27.0 16.5 0.0 84.0 Metal 900.1 87.8 25.0 13336.2 36.3 59.3 31.4 437.5 615.4 Gselw 10.4 612.1 34.1 316.1 118.8 310.3 62.4 80.5 112.8 Hotel 3195.0 4104.7 244.2 3335.4 84.2 4507.7 6841.8 746.8 1797.6 Transp 4805.3 6582.2 407.5 4566.2 103.8 4284.7 4506.1 666.8 2501.5 Finnce 8294.7 4279.1 253.9 3062.6 1143.2 2902.2 6340.7 1383.3 1009.8 ScSrv 164.5 367.8 21.4 4204.3 20.0 404.4 146.2 449.7 1429.3 ; Table FD(i,ff) final demand Pcon Gcon Prfxinv Gfxinv Stock Exp agri 103889 0 538 0 44489 1943 manuf 72038 0 53 14 -29005 30753 chem 3232 0 0 0 -4586 3697 metal 10412 0 37757 25479 3742 9814 Gselw 1684 0 0 0 4823 0 hotel 20953 0 485 147 10552 14347 transp 15809 0 785 238 9603 6925 Finnce 9576 0 0 0 3043 0 scsrv 7007 34579 0 0 -14416 21441 ; Table VA(*,j) value added agri manuf Chem Metal Gselw Hotel Transp Finnce ScSrv intimp 2147 14983 2191 19674 677 14673 14051 408 11881 Wages 46203 4517 222 20382 801 5274 11653 14235 29222 Depr 1722 1093 107 1784 718 1472 7482 1070 69 Indtx 244 6097 1278 6664 61 659 460 6 219 capital 96799 20364 1292 21753 4376 36362 10146 21614 4734 ; Table TRN(*,ff) transfer for final demand Pcon Gcon Prfxinv Gfxinv Stock Exp intimp 36282 0 4179 468 0 0 Wages 0 0 0 0 0 0 Depr 0 0 0 0 0 0 Indtx 7063 0 814 91 0 1241 capital 0 0 0 0 0 0 ; Table coninc(*, h) consumption and income (CBS: living standard survey 2002) h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 cons 4183 5647 6786 7960 9230 10913 13179 16144 22479 62037 hhinc 3190 4820 6061 7394 8846 10545 13098 16734 23845 57145 ; Parameter IO c0 G0 IP0 IG0 IS0 X0 M0 L0 K0 DP0 TX0 MII0 MC0 MIP0 MIG0 TRC0 TRI0 TRIG0 TRX0 txl(i) txk(i) ; IO(i,j) =IO(i,j); c0(i) =FD(i,"pcon"); G0(i)=FD(i,"Gcon"); IP0(i)=FD(i,"Prfxinv"); IG0(i)=FD(i,"Gfxinv"); IS0(i)=FD(i,"Stock"); X0(i)=FD(i,"Exp"); L0(j)=va("wages", j); K0(j)=va("capital", j); DP0(j)=va("Depr", j); TX0(j)=va("Indtx", j); MII0(j)=va("intimp", j); MC0=TRN("intimp", "pcon"); MIP0=TRN("intimp", "prfxinv"); MIG0=TRN("intimp", "gfxinv"); TRC0=TRN("indtx", "pcon"); TRI0=TRN("indtx", "prfxinv"); TRIG0=TRN("indtx", "gfxinv"); TRX0=TRN("indtx", "exp"); Parameter hhinco; hhinco = sum(h, coninc("cons", h))-sum(i,c0(i)); display hhinco; *Define tax rates in production txl(i)=dp0(i)/l0(i); txk(i)=tx0(i)/k0(i); Display IO,c0,G0,IP0,IG0,IS0,X0,L0,K0,DP0,TX0,MII0,MC0,MIP0,MIG0,TRC0,TRI0,TRIG0,TRX0; display txl, txk; *check the microconsistency of the data set Parameters y0, R0, TB0, netinc,sav,pinvt,ginvt, gdef, sibal; Y0(i) = sum(j,IO(j,i))+L0(i)*(1+txl(i))+K0(i)*(1+txk(i))+MII0(i); R0 = sum(i, L0(i)*txl(i)+K0(i)*txk(i))+(TRC0+TRI0+TRIG0+TRX0); netinc = sum(i, L0(i)+K0(i)); sav = netinc -sum(i,c0(i)) -(Mc0+TRC0); pinvt = sum(i, IP0(i)+IS0(i))+(MIP0+TRI0); ginvt = sum(i, IG0(i))+(MIG0+TRIG0); gdef = R0 - sum(i, G0(i)+IG0(i))-(MIG0+TRIG0); tb0 = sum(i, x0(i))+TRX0-sum(i, MII0(i))-(MC0+MIP0+MIG0); sibal=sav-pinvt; Display y0, netinc,sav,pinvt, R0,gdef, sibal,TB0; *three tariff instruments Parameters trc tarrif on consumption tri tarrif on investment trg tarrif on government consumption trx export tax ; trc = TRC0/Mc0; tri = TRI0/MIP0; trg=TRIG0/MIG0; trx(i) = (TRX0*(x0(i)/sum(j,x0(j))))/sum(j,x0(j)); *trx =TRX0/sum(j,x0(j)); display trc, tri, trg,trx; Set tt /2002*2101/ t(tt) /2002*2100/ t0(t) tl(t) tp(tt) tterm(tt) ; t0(t) =yes$(ord(t) eq 1); tl(t) =yes$(ord(t) eq card(t)); tterm(tt) = yes$(ord(tt) eq card(tt)); tp(tt) = yes$(ord(tt) eq card(tt)); scalar esub elasticity of substitution /0.5/ gr growth rate of output /0.02/ r rate of interest /0.05/ depr rate of depreciation /0.07/ lendow ; Parameters pref(tt) reference prices qref(t) refenrece quantities kstock(i) initial capital stock etran(i) invest(i) idiffer invadj inv0(i) w0 ; lendow = sum(i, L0(i)); pref(tt) = (1/(1+r))**(ORD(tt)-1); qref(t) = (1+gr)**(ord(t)-1); kstock(i) = K0(i)/(depr + r); etran(i)=2; inv0(i)=IP0(i)+IS0(i); *invest(i) = ((r+depr)/(depr+gr))*cap0(i); invest(i) = (gr+depr)*K0(i)/(r+depr); idiffer(i) = invest(i)-inv0(i); invadj(i) = idiffer(i); display idiffer, invadj; inv0(i)=inv0(i)+invadj(i); w0 =sum(i,c0(i)); $ontext $model:LDCdyn *$ECHOP:.TRUE *$FUNLOG:.TRUE *$DATECH:.TRUE *$WALCHK:.TRUE $sectors: ID(t) Inv(i,t) K(i,t) y(i,t) *X(i)$x0(i) Pub(t) U(t) FX(t) $commodities: PD(i,t) pk(i,tt) pinv(t) Px(i,t)$x0(i) PL(t) RK(i,t) pfx(t) PG(t) *PT Pu(t) $Consumers: RA Govt $auxiliary: Tcap(i) *investment by origin $prod:id(t) k:2 *O:Pinv(t) Q:pinvt O:Pinv(t) Q:(sum(i,invest(i))) I:Pd(i,t) Q:(IP0(i)+IS0(i)+invadj(i)-(mip0/card(i))*(1+tri)) k: I:pfx(t) Q:MIP0 A:govt t:tri P:(1+tri) *investment by destination $prod:inv(i,tt)$T(tt) o:pk(i,tt+1) q:(inv0(i)) I:pinv(tt) q:invest(i) $prod:K(i,tt)$t(tt) O:rk(i,tt) q:k0(i) O:pk(i,tt+1) q:(kstock(i)*(1-depr)) I:PK(i,tt) q:kstock(i) $prod:y(i,t) t:0 va:1 O:PD(i,t) Q:(Y0(i)-X0(i)) O:PX(i,t)$x0(i) Q:X0(i) I:Pd(j,t) Q:IO(j,i) I:pfx(t) Q:MII0(i) I:PL(t) Q:L0(i) A:govt t:txl(i) P:(1+txl(i)) va: I:RK(i,t) Q:K0(i) A:govt t:txk(i) P:(1+txk(i)) va: *$prod:FX(t)$x0(i) $prod:FX(t) *O:pfx Q:(X0(i)) t:trx(i)$x0(i) A:govt O:pfx(t) Q:(sum(i,X0(i))) I:px(i,t)$x0(i) Q:X0(i) $prod:u(t) s:1.5 O:PU(t) Q:(sum(i,C0(i))+MC0+TRC0) I:Pd(i,t) Q:(C0(i)) I:pfx(t) Q:MC0 A:govt t:trc P:(1+trc) $prod:pub(t) s:1 O:pg(t) Q:(sum(i,G0(i)+IG0(i))+MIG0+TRIG0) I:Pd(i,t) Q:(G0(i)+IG0(i)) I:pfx(t) Q:MIG0 A:govt t:trg P:(1+trg) *$demand:ra s:1.2 *D:PU(t) Q:((sum(i,C0(i))+MC0+TRC0)*qref(t)) *D:PU Q:(sum(i,C0(i))+MC0) *E:PL(t) Q:(sum(i,L0(i))*qref(t)) *E:RK(i,t) Q:(sum(i,K0(i))) *E:Pg(t) Q:(gdef) *E:pinv(t) q:(-pinvt) *E:Pfx(t) Q:(-tb0) $demand:ra D:PU(t) Q:((sum(i,C0(i))+MC0+TRC0)*qref(t)) E:pl(t) q:(lendow*qref(t)) E:pk(i,t0) q:((kstock(i))) E:pk(i,tp) q:(-1) r:tcap(i) E:pd(i,t) q:(invadj(i)*qref(t)) *E:pd(i,t) q:(-incadj(i)*qref(t)) E:pfx(t) q:(-tb0*qref(t)) E:pg(t) q:(gdef*qref(t)) *$demand:govt *D:pg(t) q:((sum(i,gov(i)*qref(t)))) *E:pg(t) q:((-trans)*qref(t)) $demand:govt s:0 D:pg(t) Q:((sum(i,G0(i)+IG0(i))+MIG0+TRIG0)*qref(t)) E:pfx(t) Q:(trx0*qref(t)) $constraint:tcap(i) Sum(T$tl(t+1), inv(i,t+1)/inv(i,t) -k(i,t+1)/k(i,t)) =e=0; $offtext $sysinclude mpsgeset LDCdyn Y.l(i,t)=qref(t); K.l(i,t)=qref(t); FX.l(t)=qref(t); id.l(t)=qref(t); inv.l(i,t)=qref(t); U.l(t)=qref(t); pub.l(t)=qref(t); tcap.l(i)=kstock(i)*(1+gr)*card(t); pd.l(i,t)=pref(t); pk.l(i,tt)=(1+r)*pref(tt); pinv.l(t)=pref(t); px.l(i,t)$x0(i)=pref(t); rk.l(i,t)=pref(t); pl.l(t)=pref(t); pu.l(t)=pref(t); tcap.l(i) = kstock(i)*(1+gr)**card(t); pfx.l(t)=pref(t); pg.l(t)=pref(t); ra.l = w0; govt.l =R0; Parameter incadj; *incadj(i) = C0(i)+MC0+TRC0+IP0(i)+IS0(i)+G0(i)+IG0(i)+MIG0+TRIG0-(Y0(i)-X0(i)); incadj(i) = C0(i)+MC0+IP0(i)+IS0(i)+G0(i)+IG0(i)+MIG0-(Y0(i)-X0(i)); LDCdyn.iterlim=5; option mcp=path; $include LDCdyn.gen option sysout=on; Solve LDCdyn using mcp; $exit $report: V:Y1(i,t) o:pd(i,t) prod:y(i,t) V:K1(i,t) i:rk(i,t) prod:y(i,t) V:INV1(i,t) I:pinv(t) prod:inv(i,t) V:L1(i,t) i:pl(t) Prod:y(i,t) V:FX1(t) o:pfx(t) Prod:fx(t) V:U1(t) o:pu(t) Prod:U(t) V:GV1(t) o:pg(t) Prod:pub(t) V:w1 W:ra V:w2 W:govt display incadj; parameters growth_c(i,t),growth_b(i,t) ; growth_b(i,t) = (y.l(i,t+1)-y.l(i,t))/y.l(i,t); ldcdyn.iterlim =10000; trc = 0.01; option decimals=6; $include ldcdyn.gen solve ldcdyn using mcp; growth_c(i,t) = (y.l(i,t+1)-y.l(i,t))/y.l(i,t); display growth_b, growth_c;