*N:\special\ec\gams\gams 10dyn.gms *@Keshab Bhattarai, University of Hull, UK, March 2005. $Title A nine sector dynamic general equilibrium model for The UK set i /agric, min, manu,utils,const,distb,trans,busi,othSect /; alias (i, j); option decimals =4; *read your benchmark data set Table io(i, j) input output table Agric Min Manu Utils Const Distb Trans Busi OthSect Agric 2096 14 12606 0 4 564 48 15 148 Min 20 2792 5965 5519 401 105 17 8 57 Manu 4923 1585 72491 1688 12892 15941 8240 11578 9991 Utils 279 160 7026 12273 272 1201 857 1207 705 const 172 122 228 0 21085 603 151 5914 146 Distb 1005 406 13454 355 1371 4164 2470 2276 790 Trans 245 1039 9891 183 887 14871 15642 17280 3175 Busi 1949 1142 26427 1884 10483 22425 12387 66057 13435 OthSect 378 42 4468 179 242 1001 1369 4098 7756 ; Table va(*,i) income and consumption Agric Min Manu Utils Const Distb Trans Busi OthSect Labour 7143 3231 90644 5492 29947 61877 35191 70149 129383 capital 4388 11166 40078 9118 1505 27820 15406 77989 7908 con 6730 339 48096 16353 3521 111181 19715 78642 43653 inv 1 1 21414 1 48049 2586 779 8483 1 gov 42 47 9576 1323 4414 1229 2637 8458 110108 exp 1942 7925 139944 62 0 13701 12194 12545 4504 imp 1630 1414 73380 3612 5151 3532 4895 3968 2960 InTax 245 116 3513 1426 196 1326 2270 4193 1534 otax -265 -35 -1815 -10 -34 -443 -404 -415 -186 ; *check the base case in equilibrium parameters iot input output l0 labour output k0 capital output y0 sectoral output at factor cost yy0 sectoral output at market prices sd0 total sectoral demand ssd0 total sectoral demand itx indirect taxes otax other taxes and subsidies tax total tax (indirect and other taxes) labtax labour tax rate captax capital tax rate suptax tax on goods supplied c0 consumption demand inv0 investment demand gov government consumption exp exports imp imports tx indirect taxes as a percentage of exports fd0 final demand p0 pl0 tm taxes on imports i0 px0 export price bal balance between sectoral demand and supply endowl labour endownment endowk endowment of capital gk0 gross of tax capital income incbal income balance for households saving savings of households nincbal net of tax income revbal revenue balance for the government govrev government revenue sibal saving investment balance imexbal trade balance or BOP zeprof zero profit condition amongst production sectors tinv total investment rbal resource balance tbal trade balance cap0 Kstockt total capital stock ; iot(i,j) =io(i,j); L0(i) = va("labour",i); k0(i) = va("capital",i); itx(i) = va("intax",i); otax(i) = va("otax",i); c0(i) =va("con",i); inv0(i)=va("inv",i); gov(i)=va("gov",i); exp(i)=va("exp",i); imp(i)=va("imp",i); cap0(i) = k0(i); *supply at factor cost/supply side y0(i) = sum(j,io(j,i))+L0(i)+k0(i); parameter fimp, exsub, check1, check2, check3; fimp = 94247; exsub =1970; *supply at market prices/supply side yy0(i) = sum(j,io(j,i))+L0(i)+k0(i)+itx(i)+otax(i); *+imp(i); *demand side sd0(i) = sum(j,io(i,j))+ c0(i)+gov(i)+inv0(i); *-exp(i)-exsub+imp(i)+fimp; *trade balance/BOP tbal = SUM(I,imp(I)-exp(I)); check1 = sum(i,sd0(i)) - sum(i,yy0(i)); display sd0, yy0, check1, tbal; *+imp(i)+fimp; ssd0(i) = sum(j,io(i,j))+ c0(i)+gov(i)+inv0(i)-exp(i)+imp(i); fd0(i) = sd0(i) - sum(j,io(i,j)); check2 = sum(i, sd0(i))-sum(i,yy0(i)+imp(i)); check3 = sum(i, yy0(i))-sum(i,ssd0(i)); display check1, check2, check3; *labour endownment endowL = sum(i,L0(i)); endowk = sum(i,k0(i)); display tbal; *BALANCE bal(i) =yy0(i) -sd0(i); *tax rates tax(i) = itx(i)+otax(i); labtax(i)$L0(i) = 0.75*tax(i)/L0(i); *capital income tax rates captax(i)= 0.25*tax(i)/k0(i); gk0(i)= k0(i)*(1+captax(i)); *income balance (net of tax income) Saving= sum(i,L0(i)+k0(i)-c0(i)); *investment saving balance sibal=saving - sum(i,inv0(i)); tinv =sum(i,inv0(i)); *revenue balance revbal= sum(i, k0(i)*captax(i)+L0(i)*labtax(i)-gov(i)); govrev=sum(i, k0(i)*captax(i)+L0(i)*labtax(i)); *zero profit zeprof(i)= yy0(i)- sum(j,io(j,i))-L0(i)-k0(i)-tax(i); rbal = sibal+revbal; display bal, ssd0, yy0, tax, captax, labtax, saving, revbal, sibal, zeprof, rbal, tbal; px0(i) =1; tm(i) =0; *Armington elasticities PARAMETER ETRNDX(I), ETRNXX(I); ; ETRNDX(I)=3; ETRNXX(I)=4; p0(i) = (1+captax(i)); pl0(i) = (1+labtax(i)); SCALAR W0, TRANS; Trans=govrev-sum(i, gov(i)); parameter elas; display iot, l0, k0, itx, otax, c0,inv0,gov, exp, imp, pl0, trans; elas =1; Set tt /1995*2081/ t(tt) /1995*2080/ 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 /1.5/ gr growth rate of output /0.02/ r rate of interest /0.05/ depr rate of depreciation /0.1/ lendow ; Parameters pref(tt) reference prices qref(t) refenrece quantities cref(t) reference consumsption kstock(i) initial capital stock etran(i) invest(i) idiffer invadj ; lendow = sum(i, L0(i)); cap0("institt")=20; pref(tt) = (1/(1+r))**(ORD(tt)-1); qref(t) = (1+gr)**(ord(t)-1); cref(t) = sum(i, c0(i))*qref(t)*pref(t); kstock(i) = cap0(i)/(depr + r); etran(i)=2; *invest(i) = ((r+depr)/(depr+gr))*cap0(i); invest(i) = (gr+depr)*cap0(i)/(r+depr); idiffer(i) = invest(i)-inv0(i); invadj(i) = idiffer(i); display idiffer, invadj; inv0(i)=inv0(i)+invadj(i) display invest, inv0, kstock, idiffer, invadj, c0, invest, inv0; tinv = sum(i, inv0(i)); kstockt = sum(i, kstock(i)); display pref, qref, cref, kstock; display cap0, inv0; Parameter w0, income,incadj, capadj, incadj2, capdif, tcap0(i); w0 =sum(i,c0(i)); $ontext $echop:.true $datech:.true $funlog:.true $model:nineuk $Sectors: Y(i,t) K(i,t) A(i,t) *x(i,t)$exp(i) id(t) FX(t) inv(i,t) U(t) gv(t) $commodities: pd(i,t) pk(i,tt) p(i,t) pinv(t) px(i,t)$exp(i) rk(i,t) pl(t) *pt(t) pu(t) *ptk(i) pfx(t) pg(t) $consumers: ra govt $auxiliary: Tcap(i) *investment by origin $prod:id(t) k:2 o:pinv(t) q:(sum(i,invest(i))) I:p(i,t) q:(inv0(i)) k: *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:cap0(i) O:pk(i,tt+1) q:(kstock(i)*(1-depr)) I:PK(i,tt) q:kstock(i) $prod:y(i,t) s:0 t:etran(i) va:1.5 o:pd(i,t) q:(yy0(i)-exp(i)) o:px(i,t)$exp(i) q:exp(i) i:P(j,t) q:io(j,i) I:pl(t) q: L0(i) A:govt T:labtax(i) P:((1+labtax(i))) va: I:rk(i,t) q:(k0(i)) A:govt T:captax(i) P:((1+captax(i))) va: $prod:A(i,t) a:1 o:p(i,t) q:(sd0(i)) i:pd(i,t) q:(yy0(i)-exp(i)) a: i:pfx(t) q:imp(i) a: $prod:fx(t) a:2 o:pfx(t) q: (sum(i,exp(i))) i:px(i,t)$exp(i) q:exp(i) a: $prod:u(t) a:Esub o:pu(t) q:(sum(i,c0(i))) i:p(i,t) q:(c0(i)) $prod:gv(t) a:1 o:pg(t) q:(sum(i,gov(i))) i:p(i,t) q:(gov(i)) a: $demand:ra D:pu(t) q:(sum(i,qref(t)*c0(i))) E:pl(t) q:(endowl*qref(t)) E:pk(i,t0) q:((kstock(i))) E:pk(i,tp) q:(-1) r:tcap(i) E:p(i,t) q:(invadj(i)*qref(t)) E:pfx(t) q:(tbal*qref(t)) E:pg(t) q:(trans*qref(t)) $demand:govt D:pg(t) q:((sum(i,gov(i)*qref(t)))) E:pg(t) q:((-trans)*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; $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:A1(i,t) o:p(i,t) prod:A(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:GV(t) V:w1 W:ra V:w2 W:govt $offtext $sysinclude mpsgeset nineuk nineuk.scaleopt=1; Y.l(i,t)=qref(t); K.l(i,t)=qref(t); A.l(i,t)=qref(t); FX.l(t)=qref(t); inv.l(i,t)=qref(t); U.l(t)=qref(t); gv.l(t)=qref(t); tcap.l(i)=kstock(i)*(1+gr)*card(t); id.l(t) = qref(t); pd.l(i,t)=pref(t); pk.l(i,tt)=(1+r)*pref(tt); p.l(i,t)=pref(t); pinv.l(t)=pref(t); px.l(i,t)$exp(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 =govrev; option mcp =path; nineuk.iterlim =0; nineuk.workspace =30; *Option sysout= on; nineuk.scaleopt =0; $include nineuk.gen solve nineuk using mcp; parameters growth_c(i,t),growth_b(i,t), out, price; growth_b(i,t) = (y.l(i,t+1)-y.l(i,t))/y.l(i,t); nineuk.iterlim =10000; labtax(i) = 0.4; option decimals=6; $include nineuk.gen solve nineuk using mcp; growth_c(i,t) = (y.l(i,t+1)-y.l(i,t))/y.l(i,t); out(i,t) = y1.l(i,t); price(i,t) = p.l(i,t); display growth_b, growth_c, out, price;