GAMS [ Home | Support | Sales | Solvers | Documentation | Model Libraries | Search | Contact Us ]

ers82mcp.gms : USDA-ERS CGE Model of the US


U.S. CGE MODEL WITH 1982 DATA BASE, Billions of Dollars.
USDA/ERS GNP Version, April 1990. Programmed by: Sherman Robinson,
Kenneth Hanson, and Maureen Kilkenny.

The model is based on GNP data, and includes exports and imports of
factor services.

Reference:
Small Model of Type: MCP
$title USDA/ERS CGE Model of the US (ERS82MCP,SEQ=138) $Ontext U.S. CGE MODEL WITH 1982 DATA BASE, Billions of Dollars. USDA/ERS GNP Version, April 1990. Programmed by: Sherman Robinson, Kenneth Hanson, and Maureen Kilkenny. The model is based on GNP data, and includes exports and imports of factor services. Robinson, S, Kilkenny, M, and Hanson, K, The USDA/ERS Computable General Equilibrium (CGE) Model of the United States. Tech. rep., USDA/ERS, 1990. $Offtext sets i sectors / lvstk dairy and meat expcrp grains and oilseeds othcrp other agriculture agproc agric processing aginp agric inputs intmnf interm manuf fdmnf final demand manuf trdtrn trade and transport service services resta real estate / f factors of production / labor labor capital capital land agricultural land / ins institutions / labr labor ent enterprises prop property / hh household type / hhtrn transfer recipients hhlab wage earners hhcap rentiers / * the institution names and the factor names "capital" and "land" * are referred to explicitly below. if changed, they must also be * changed where referenced. * the printing of the gnp accounts assume that there is a sector * labeled "service." *## subsets defined below: "define indexes" iag(i) ag sectors / lvstk, expcrp, othcrp / iagn(i) non ag sectors ie(i) export sectors ied(i) sectors with export demand eqn iedn(i) sectors with no export demand eqn ien(i) non export sectors im(i) import sectors imn(i) non import sectors alias(i,j) ; *## for sam set isam categories /commdty,activity,valuad,insttns,households, govt,kaccount,world,total/ isam1(isam) /total/ isam2(isam) ; alias(isam2,isam3); parameter sam(isam,isam) social accounting matrix ; isam2(isam) = not isam1(isam) ; *######################## parameter declaration ###################### parameters *### read in parameters *## read in for initialization of variables enttax0 enterprise tax revenue entsav0 enterprise savings exr0 exchange rate e0(i) exports fbor0 net foreign borrowing fsav0 net foreign savings gdtot0 total volume of government consumption gent0 payments from government to enterprises govsav0 government savings hhsav0 household savings hht0 household transfers invest0 total investment m0(i) imports mps0(hh) household marginal propensity to save pd0(i) domestic goods price pe0(i) domestic price of exports pindex0 gnp deflator pm0(i) domestic price of imports remit0 net remittances from abroad sstax0 social security tax revenue tothhtax0 household tax revenue xd0(i) domestic output, volumne *# read in table for initialization of variables (need not be declared) * table fctres1(i,f) factor demand by sector * table fctry(i,f) factor income by sector *## read in parameters as rates, shares, elasticities depr(i) depreciation rates dstr(i) ratio of inventory investment to gross output esr enterprise savings rate etr enterprise tax rate gles(i) government consumption shares htax(hh) household tax rate itax(i) indirect tax rates kish(i) shares of investment by sector of destination rhsh(hh) household remittance share rhoc(i) armington function exponent rhoe(i) export demand price elasticity rhot(i) cet function exponent sstr social security tax rate te(i) export subsidy rates tm(i) tariff rates on imports thsh(hh) household shares of government transfers *# read in table of parameters (need not be declared) * table cles(i,hh) household consumption shares * table imat(i,j) capital composition matrix * table io(i,j) input-output coefficients * table sintyh(hh,ins) household distribution of institutional income *### computed parameters from read in data (calibration) *## computed parameters for initialization of variables deprecia0 total depreciation expenditure fd0(f) factor demand, aggregate fs0(f) factor supply, aggregate int0(i) intermediate input demand netsub0 export duty revenue p0(i) price of composite good pk0(i) capital goods price by sector of destination pva0(i) value added price by sector pwm(i) world market price of imports (in dollars) pwe0(i) world price of exports pwse(i) world price of export substitutes px0(i) average output price var0(i) value added rate by sector wfdist(i,f) factor price sectoral proportionality constants wf0(f) factor price, aggregate average xxd0(i) domestic sales, volumne x0(i) composite good supply, volumne yfctr0(f) factor income summed over sector yfland0(i) factor income for land as fraction of capital income yfsect0(i) factor income by sector yh0(hh) household income yinst0(ins) institutional income *## computed parameters as rates, shares ac(i) armington function shift parameter ad(i) production function shift parameter alpha(i,f) factor share parameter-production function at(i) cet function shift parameter delta(i) armington function share parameter econst(i) export demand constant gamma(i) cet function share parameter pwts(i) price index weights qd(i) dummy variable for computing ad(i) rmd(i) ratio of imports to domestic sales sumsh sum of share correction parameter sumhhsh(hh) sum of share for hh cles sumimsh(i) sum of share for imat tereal(i) real export subsidy rate in 1982 dollars tmreal(i) real tariff rate in 1982 dollars ; *## tables used for loading variable results * table scalres(*) aggregate results * table sectres(*,i) sectoral price and quantity results * table fctres1(i,f) factor demand results * table fctres2(*,f) factor wage, supply and income results * table insres(*,ins) institutional income results * table hhres(*,hh) household savings and income results *######################### parameter assignment ###################### table io(i,j) input-output coefficients lvstk expcrp othcrp agproc aginp lvstk 0.168150 0.028372 0.008224 0.136023 0.000958 expcrp 0.271862 0.063924 0.003564 0.042413 0.010264 othcrp 0.001403 0.001924 0.034676 0.029118 0.000696 agproc 0.027162 0.001427 0.003346 0.219018 0.016157 aginp 0.215859 0.194453 0.141894 0.008308 0.127179 intmnf 0.007833 0.023602 0.042830 0.096847 0.488054 fdmnf 0.013962 0.014380 0.015201 0.037832 0.026911 trdtrn 0.064683 0.066275 0.057563 0.078776 0.086941 service 0.061396 0.076441 0.063132 0.068066 0.086447 resta 0.022761 0.101945 0.042404 0.003908 0.004418 + intmnf fdmnf trdtrn service resta lvstk 0.000265 0.000059 0.000069 0.000575 0.000000 expcrp 0.000124 0.000037 0.000086 0.000355 0.000005 othcrp 0.001697 0.000165 0.000072 0.000630 0.000078 agproc 0.005055 0.011437 0.001673 0.020583 0.000037 aginp 0.032723 0.012603 0.045185 0.020652 0.005944 intmnf 0.283883 0.167023 0.011284 0.069580 0.001440 fdmnf 0.048351 0.233953 0.031024 0.043826 0.008954 trdtrn 0.069999 0.070436 0.074135 0.040961 0.004047 service 0.106268 0.100089 0.156346 0.156056 0.091112 resta 0.023195 0.009930 0.026575 0.022218 0.070271 ; table imat(i,j) capital composition matrix lvstk expcrp othcrp agproc aginp lvstk 0.000000 0.000000 0.000000 0.000000 0.000000 expcrp 0.000000 0.000000 0.000000 0.000000 0.000000 othcrp 0.000000 0.000000 0.000000 0.000000 0.000000 agproc 0.000024 0.000000 0.000000 0.000128 0.000048 aginp 0.107920 0.572183 0.572183 0.000449 0.045514 intmnf 0.021095 0.012547 0.012547 0.038457 0.054939 fdmnf 0.358399 0.109671 0.109671 0.852829 0.746376 trdtrn 0.000000 0.000000 0.000000 0.000000 0.000000 service 0.512562 0.305599 0.305599 0.108137 0.153123 resta 0.000000 0.000000 0.000000 0.000000 0.000000 + intmnf fdmnf trdtrn service resta lvstk 0.000000 0.000000 0.000000 0.000000 0.000000 expcrp 0.000000 0.000000 0.000000 0.000000 0.000000 othcrp 0.000000 0.000000 0.000000 0.000000 0.000000 agproc 0.000039 0.000088 0.000326 0.003320 0.003957 aginp 0.001101 0.000340 0.000371 0.008710 0.011875 intmnf 0.043006 0.011048 0.007640 0.018766 0.000125 fdmnf 0.626612 0.886306 0.867568 0.235520 0.055912 trdtrn 0.000000 0.000000 0.000000 0.000000 0.000000 service 0.329243 0.102218 0.124095 0.708126 0.891418 resta 0.000000 0.000000 0.000000 0.025558 0.036713 ; * factors of production * labor in millions of employees * capital in billions of 1982 $ * land in millions of acres table fctres1(i,f) factor demand by sector labor capital land lvstk 0.415354 79.844060 0.000000 expcrp 0.389786 72.290527 342.600000 othcrp 0.495860 27.070413 85.650000 agproc 3.584813 90.828916 0.000000 aginp 0.887448 80.391908 0.000000 intmnf 5.635211 574.659325 0.000000 fdmnf 9.907532 291.267850 0.000000 trdtrn 18.648095 516.104860 0.000000 service 55.605901 3871.778753 0.000000 resta 1.070999 639.835386 0.000000 ; * note, cropland income is read as a fraction of capital income table fctry(i,f) factor income by sector labor capital land lvstk 4.792637 5.014664 0.000000 expcrp 3.323859 26.065318 0.630000 othcrp 4.906739 10.292489 0.630000 agproc 65.741305 32.884451 0.000000 aginp 20.248245 13.974888 0.000000 intmnf 153.872100 115.536383 0.000000 fdmnf 263.093487 49.561461 0.000000 trdtrn 330.332692 107.022255 0.000000 service 1048.780635 493.262171 0.000000 resta 11.908460 146.610508 0.000000 ; *## household parameters table cles(i,hh) household consumption shares hhtrn hhlab hhcap lvstk 0.003931 0.003217 0.002309 expcrp 0.000326 0.000470 0.000494 othcrp 0.006344 0.005539 0.004931 agproc 0.119976 0.114408 0.097157 aginp 0.024630 0.028957 0.022995 intmnf 0.010660 0.011127 0.010686 fdmnf 0.089590 0.108451 0.113151 trdtrn 0.190825 0.188008 0.188198 service 0.516858 0.502351 0.518905 resta 0.036861 0.037470 0.041175 ; * note, mps(hhcap) and htax(hhlab) are recomputed below from value data table hhpar(*,hh) miscellaneous household parameters hhtrn hhlab hhcap thsh 1.000000 0.000000 0.000000 rhsh 0.000000 0.000000 1.000000 htax 0.000000 0.125960 0.350000 mps 0.000000 0.061607 0.174295 ; *## institutional parameters table sintyh(hh,ins) household distribution of income labr ent prop hhtrn 0.000000 0.000000 0.000000 hhlab 1.000000 0.000000 0.000000 hhcap 0.000000 1.000000 1.000000 ; *## production sector parameters table sectres(*,i) sectoral quantities and prices lvstk expcrp othcrp agproc aginp xd 77.115329 71.772915 26.543600 391.145476 265.279751 e 0.211590 17.906935 1.517508 18.226606 19.340732 m 0.653649 0.116664 2.782416 26.562680 23.669242 px 1.000000 1.000000 1.000000 1.000000 1.000000 pe 1.000000 1.000000 1.000000 1.000000 1.000000 pm 1.000000 1.000000 1.000000 1.000000 1.000000 p 1.000000 1.000000 1.000000 1.000000 1.000000 pd 1.000000 1.000000 1.000000 1.000000 1.000000 pk 1.000000 1.000000 1.000000 1.000000 1.000000 + intmnf fdmnf trdtrn service resta xd 691.752575 817.593692 785.067268 2609.047268 230.939170 e 46.868929 108.003057 37.123239 107.252244 5.449350 m 89.196218 151.445719 1.845284 47.928267 0.000000 px 1.000000 1.000000 1.000000 1.000000 1.000000 pe 1.000000 1.000000 1.000000 1.000000 1.000000 pm 1.000000 1.000000 1.000000 1.000000 1.000000 p 1.000000 1.000000 1.000000 1.000000 1.000000 pd 1.000000 1.000000 1.000000 1.000000 1.000000 pk 1.000000 1.000000 1.000000 1.000000 1.000000 ; * note, taxes are magnitudes and rates are computed table taxr(*,i) sectoral taxes lvstk expcrp othcrp agproc aginp itax 1.368870 1.276232 0.386298 10.774114 6.092757 te 0.000000 0.000000 0.000000 0.000000 0.000000 tm 0.008711 0.003304 0.099223 2.746818 0.062378 + intmnf fdmnf trdtrn service resta itax 26.965991 9.696082 75.726551 87.474192 30.415138 te 0.000000 0.000000 0.000000 0.000000 0.000000 tm 1.601493 4.028613 0.049061 0.000400 0.000000 ; table parm(*,i) miscellaneous parameters lvstk expcrp othcrp agproc aginp depr 0.108183 0.108183 0.108183 0.095055 0.084635 dstr 0.000811 -0.006647 -0.004847 -0.006132 -0.008088 gles 0.000671 0.011649 0.001061 0.014240 0.019479 kish 0.012787 0.011577 0.004335 0.014547 0.012875 + intmnf fdmnf trdtrn service resta depr 0.111027 0.094561 0.093504 0.046913 0.042354 dstr -0.006272 -0.010781 -0.003641 -0.001304 0.000000 gles 0.019867 0.152708 0.044819 0.725589 0.009918 kish 0.092033 0.046648 0.082656 0.620072 0.102470 ; parameter scalres(*) / *#### macro totals exr = 1.000000 pindex = 1.000000 gdtot = 641.700000 invest = 447.300122 *#### tax sstax = 269.535402 enttax = 63.079602 tothhtax = 409.335747 *#### transfer remit = -1.250000 gent = 47.530000 hht = 396.249995 fbor = -26.080000 *#### save entsav = 20.030311 hhsav = 153.907922 govsav = -110.833017 fsav = 1.029951 / ; table elasticity(*,i) sectoral elasticities lvstk expcrp othcrp agproc aginp rhoc 4.0 4.0 4.0 2.0 0.75 rhot 0.5 4.0 2.0 2.0 2.0 rhoe 3.0 3.0 3.0 + intmnf fdmnf trdtrn service resta rhoc 0.75 0.9 1.1 0.2 0.5 rhot 2.0 1.5 2.0 0.6 0.6 rhoe ; *################## end parameter assignment ######################### *############ specify parameters from table values ################### *## parameters from scalres(*) entsav0 = scalres("entsav"); enttax0 = scalres("enttax"); exr0 = scalres("exr") ; fbor0 = scalres("fbor") ; fsav0 = scalres("fsav") ; gdtot0 = scalres("gdtot") ; gent0 = scalres("gent"); govsav0 = scalres("govsav") ; hhsav0 = scalres("hhsav") ; hht0 = scalres("hht") ; invest0 = scalres("invest") ; pindex0 = scalres("pindex") ; remit0 = scalres("remit") ; sstax0 = scalres("sstax"); tothhtax0 = scalres("tothhtax") ; *## other table values of parameters e0(i) = sectres("e",i) ; econst(i) = sectres("e",i) ; m0(i) = sectres("m",i) ; px0(i) = sectres("px",i) ; pe0(i) = sectres("pe",i) ; pm0(i) = sectres("pm",i) ; p0(i) = sectres("p",i) ; pd0(i) = sectres("pd",i) ; pk0(i) = sectres("pk",i) ; xd0(i) = sectres("xd",i); htax(hh) = hhpar("htax",hh) ; mps0(hh) = hhpar("mps",hh) ; rhsh(hh) = hhpar("rhsh",hh); thsh(hh) = hhpar("thsh",hh); itax(i) = taxr("itax",i)/(px0(i)*xd0(i)) ; rhoc(i) = (1/elasticity("rhoc",i)) - 1 ; rhoe(i) = elasticity("rhoe",i); rhot(i) = (1/elasticity("rhot",i)) + 1; depr(i) = parm("depr",i) ; dstr(i) = parm("dstr",i) ; gles(i) = parm("gles",i); kish(i) = parm("kish",i) ; *## normalize share parameters to correct for roundoff error * these parameters (cles, imat, kish, and gles) can be read in as values * and coverted to shares here. sumhhsh(hh) = sum(i, cles(i,hh)) ; cles(i,hh) = cles(i,hh)/sumhhsh(hh) ; sumimsh(j) = sum(i, imat(i,j)) ; imat(i,j) = imat(i,j)/sumimsh(j) ; sumsh = sum(i, kish(i)) ; kish(i) = kish(i)/sumsh ; sumsh = sum(i, gles(i)) ; gles(i) = gles(i)/sumsh ; *#### define indexes based on read in data iagn(i) = not iag(i); ie(i) = yes$e0(i); ied(i) = yes$rhoe(i); iedn(i) = not ied(i); ien(i) = not ie(i); im(i) = yes$m0(i); imn(i) = not im(i); *## specify parameters which depend on defined index im and ie tm(imn) = 0.0 ; tm(im) = taxr("tm",im)/(pm0(im)*m0(im) - taxr("tm",im)) ; te(ien) = 0.0 ; te(ie) = taxr("te",ie)/(pe0(ie)*e0(ie) - taxr("te",ie)) ; *## compute from initial data int0(i) = sum(j, io(i,j)*xd0(j)); pva0(i) = px0(i) - sum(j, io(j,i)*p0(j)) - itax(i) ; pwe0(i) = pe0(i)/((1+te(i))*exr0); pwm(i) = pm0(i)/((1+tm(i))*exr0); var0(i) = pva0(i) + itax(i) ; xxd0(i) = xd0(i) - e0(i) ; *## for 1982 tmreal and tereal are derive from tm and te *## for other years read in tmreal and tereal tmreal(i) = tm(i)*pwm(i)*exr0 ; tereal(i) = te(i)*pwe0(i)*exr0 ; netsub0 = sum(i, te(i)*e0(i)*pwe0(i))*exr0 ; *################ calibration of parameters from data ############# *## adjust factor income (capital) for farm land yfland0(i) = fctry(i,"land") ; fctry(i,"land") = fctry(i,"capital")*yfland0(i) ; fctry(i,"capital") = fctry(i,"capital")*(1.0 - yfland0(i)) ; *## factor market parameters fs0(f) = sum(i,fctres1(i,f)) ; yfctr0(f) = sum(i, fctry(i,f)) ; yfsect0(i) = sum(f, fctry(i,f)) ; wf0(f) = yfctr0(f)/fs0(f) ; wfdist(i,f)$fctres1(i,f) = (fctry(i,f)/fctres1(i,f))/wf0(f) ; wfdist(i,f)$(fctres1(i,f) eq 0) = 0.0 ; display wfdist; *## institutional and household income, tax rate, and saving rate deprecia0 = sum(i, depr(i)*pk0(i)*fctres1(i,"capital") ) ; sstr = sstax0/yfctr0("labor") ; etr = enttax0/(yfctr0("capital") + gent0 - deprecia0) ; esr = entsav0/(yfctr0("capital") - enttax0 + gent0 - deprecia0) ; yinst0("labr") = (1.0 - sstr)*yfctr0("labor") ; yinst0("ent") = yfctr0("capital") - entsav0 - enttax0 + gent0 - deprecia0 ; yinst0("prop") = yfctr0("land") ; *## note, household income is from factors (yhva0) and transfers *## where, yhva0(hh) = sum(ins, sintyh(hh,ins)*yinst0(ins)) yh0(hh) = sum(ins, sintyh(hh,ins)*yinst0(ins)) + remit0*rhsh(hh)*exr0 + hht0*thsh(hh) ; *## compute htax(hhlab) given other hh tax rates and tothhtax0 *## where, tothhtax0 = sum(hh, htax(hh)*yh0(hh)) htax("hhlab") = (tothhtax0 - htax("hhtrn")*yh0("hhtrn") - htax("hhcap")*yh0("hhcap"))/yh0("hhlab"); *## compute mps0(hhcap) given other hh savings rates and hhsav0 *## where, hhsav0 = sum(hh, mps0(hh)*yh0(hh)*(1.0 - htax(hh))) mps0("hhcap")=(hhsav0 - mps0("hhtrn")*yh0("hhtrn")*(1.0-htax("hhtrn")) - mps0("hhlab")*yh0("hhlab")*(1.0-htax("hhlab"))) /(yh0("hhcap")*(1.0 - htax("hhcap"))) ; display wfdist, wf0, fs0, yfsect0, yfctr0 ; display yinst0,yh0,mps0,htax,etr,esr,sstr ; *#### calibration of shift and share parameters #### *## for imports-domestic composite *## get delta from costmin, xo from absorption, ac from armington delta(i) = (pm0(i)/pd0(i))*(m0(i)/xxd0(i))**(1+rhoc(i)) ; delta(i) = delta(i)/(1.0+delta(i)) ; x0(i) = (pd0(i)*xxd0(i) + (pm0(i)*m0(i))$im(i))/p0(i) ; rmd(i) = m0(i)/xxd0(i) ; ac(i)$im(i) = x0(i)/(delta(i)*m0(i)**(-rhoc(i)) +(1-delta(i))*xxd0(i)**(-rhoc(i)))**(-1/rhoc(i)) ; ac(i)$imn(i) = 1.0 ; display delta,ac,rmd ; *## for exports *## get gamma from esupply gamma(ie) = 1/(1 + pd0(ie)/pe0(ie)*(e0(ie)/xxd0(ie))**(rhot(ie)-1)); *## get at from cet at(ie) = xd0(ie)/(gamma(ie)*e0(ie)**rhot(ie) + (1-gamma(ie))* xxd0(ie)**rhot(ie))**(1/rhot(ie)) ; display gamma,at ; *## for factor demand *## get alpha from profit max (alpha for each i should sum to 1) alpha(i,f) = (wfdist(i,f)*wf0(f)*fctres1(i,f))/yfsect0(i) ; display alpha ; *## get ad from output and fd0 from profitmax qd(i) = prod(f, fctres1(i,f)**alpha(i,f)) ; ad(i) = xd0(i)/qd(i); fd0(f) = sum(i,(xd0(i)*pva0(i)*alpha(i,f)/(wfdist(i,f)* wf0(f)))$wfdist(i,f)) ; display ad,qd,fd0 ; *## specify weights for producer price index pwts(i) = xd0(i)/sum(j, xd0(j)) ; *#### end of calibration #### display xd0, x0, xxd0 ; display pva0,pd0, pe0, pwe0, pm0, pwm, tm, pwts ; *##################################################################### variables *#################### variable declaration ########################## *## price block exr exchange rate ($ per world $) p(i) price of composite goods pd(i) domestic prices pe(i) domestic price of exports pindex gnp deflator pk(i) price of capital goods by sector of destination pm(i) domestic price of imports pva(i) value added price pwe(i) world price of exports px(i) average output price *## production block e(i) exports (82 bill $) m(i) imports (82 bill $) x(i) composite goods supply (82 bill $) xd(i) domestic output (82 bill $) xxd(i) domestic sales (82 bill $) *## factor block fs(f) factor supply fdsc(i,f) factor demand by sector wf(f) average factor price yfctr(f) factor income (bill $) *## income and expenditure block cd(i) final demand for private consumption (82 bill $) deprecia total depreciation expenditure (bill $) dk(i) volume of investment by sector of destination (82 bill $) dst(i) inventory investment by sector (82 bill $) entsav enterprise savings (bill $) enttax enterprise tax revenue (bill $) fbor net foreign borrowing (bill world $) fsav net foreign savings (bill world $) fxdinv fixed capital investment (bill $) gd(i) final demand for government consumption (82 bill $) gdtot total volume of government consumption (82 bill $) gent payments from govt to ent (bill $) govsav government savings (bill $) gr government revenue (bill $) hhsav total household savings (bill $) hht household transfers (bill $) id(i) final demand for productive investment (82 bill $) indtax indirect tax revenue (bill $) int(i) intermediates uses (82 bill $) invest total investment (bill $) mps(hh) marginal propensity to save by household type netsub export duty revenue (bill $) remit net remittances from abroad (bill world $) savings total savings (bill $) sstax social security tax revenue (bill $) tariff tariff revenue (bill $) tothhtax household tax revenue (bill $) yh(hh) household income (bill $) yinst(ins) institutional income (bill $) *## gnp calculations rgnp real gnp (82 bill $) gnpva value added in market prices gnp (bill $) ; *################## variable initialization ######################### *## use initial values of variables (from parameter specification) exr.l = exr0 ; fbor.l = fbor0 ; fsav.l = fsav0 ; gdtot.l = gdtot0 ; gent.l = gent0 ; govsav.l = govsav0 ; hht.l = hht0 ; invest.l = invest0 ; pindex.l = pindex0 ; remit.l = remit0 ; mps.l(hh) = mps0(hh) ; pd.l(i) = pd0(i) ; p.l(i) = p0(i) ; px.l(i) = px0(i) ; pm.l(i) = pm0(i) ; pe.l(i) = pe0(i) ; xd.l(i) = xd0(i) ; e.l(i) = e0(i) ; m.l(i) = m0(i) ; fdsc.l(i,f) = fctres1(i,f) ; yfctr.l(f) = sum(i, fctry(i,f)) ; *## compute initial values for other variables *## output and price xxd.l(i) = xd.l(i) - e.l(i) ; x.l(i) = (pd.l(i)*xxd.l(i) + (pm.l(i)*m.l(i))$im(i))/p.l(i) ; pk.l(i) = sum(j, p.l(j)*imat(j,i)) ; pwe.l(i) = pe.l(i)/((1.0 + te(i))*exr.l) ; pwse(i) = pwe.l(i) ; pva.l(i) = px.l(i) - sum(j, io(j,i)*p.l(j)) - itax(i) ; *## value added and the flow of factor income fs.l(f) = sum(i, fdsc.l(i,f)) ; wf.l(f) = yfctr.l(f)/fs.l(f) ; netsub.l = sum(ie, te(ie)*e.l(ie)*pwe.l(ie))*exr.l ; tariff.l = sum(im, pwm(im)*m.l(im)*tm(im))*exr.l ; sstax.l = sstr*yfctr.l("labor") ; indtax.l = sum(i, itax(i)*px.l(i)*xd.l(i)) ; deprecia.l = sum(i, depr(i)*pk.l(i)*fdsc.l(i,"capital")) ; enttax.l = etr*(yfctr.l("capital") + gent.l - deprecia.l) ; entsav.l = esr*(yfctr.l("capital") + gent.l - (enttax.l + deprecia.l)) ; yinst.l("labr") = yfctr.l("labor") - sstax.l ; yinst.l("ent") = yfctr.l("capital") + gent.l - (entsav.l + enttax.l + deprecia.l) ; yinst.l("prop") = yfctr.l("land") ; yh.l(hh) = sum(ins, sintyh(hh,ins)*yinst.l(ins)) + remit.l*rhsh(hh)*exr.l + hht.l*thsh(hh) ; tothhtax.l = sum(hh, htax(hh)*yh.l(hh)) ; hhsav.l = sum(hh, mps.l(hh)*yh.l(hh)*(1.0 - htax(hh))) ; *## final demand int.l(i) = sum(j,io(i,j)*xd.l(j)) ; cd.l(i) = sum(hh, cles(i,hh)*(1.0 - mps.l(hh))*yh.l(hh) *(1.0 - htax(hh)))/p.l(i) ; gd.l(i) = gles(i)*gdtot.l ; dst.l(i) = dstr(i)*xd.l(i) ; fxdinv.l = invest.l - sum(i, dst.l(i)*p.l(i)) ; dk.l(i) = (kish(i)*fxdinv.l)/pk.l(i) ; id.l(i) = sum(j, imat(i,j)*dk.l(j)) ; gr.l = tariff.l - netsub.l + indtax.l + tothhtax.l + sstax.l + enttax.l + fbor.l*exr.l ; savings.l = hhsav.l + govsav.l + deprecia.l + fsav.l*exr.l + entsav.l ; *## gnp gnpva.l = sum(i, pva.l(i)*xd.l(i)) + indtax.l + tariff.l - netsub.l ; rgnp.l = sum(i, cd.l(i) + dst.l(i) + id.l(i) + gd.l(i)) + sum(ie, (1.0 - tereal(ie)) * e.l(ie) ) - sum(im, (1.0 - tmreal(im)) * m.l(im) ) ; pindex.l = gnpva.l/rgnp.l ; *## alternatively, set pindex to the producer price index * pindex.l = sum(i, pwts(i)*px(i)) ; display yfctr.l,yinst.l,yh.l,gnpva.l,rgnp.l,pindex.l ; display int.l,cd.l,gd.l,id.l,dst.l,dk.l ; *###################### end variable specification ################### *#### to check for data consistency, display initial sam *###################### social accounting matrix ####################### sam("commdty","activity") = sum(i,(p.l(i)*int.l(i))) ; sam("commdty","households") = sum(i,(p.l(i)*cd.l(i))) ; sam("commdty","kaccount") = sum(i,(p.l(i)*(dst.l(i)+id.l(i)))) ; sam("commdty","govt") = sum(i,(p.l(i)*gd.l(i))) ; sam("activity","world") = sum(i,((exr.l*pwe.l(i))*e.l(i))) ; sam("activity","commdty") = sum(i, (px.l(i)*xd.l(i)) - (pe.l(i)*e.l(i)) ) ; sam("activity","govt") = netsub.l ; sam("valuad","activity") = sum(f, yfctr.l(f)) ; sam("insttns","valuad") = sum(f,yfctr.l(f)) - sstax.l ; sam("insttns","govt") = gent.l ; sam("households","insttns")= sum((ins,hh),sintyh(hh,ins)*yinst.l(ins)); sam("households","govt") = hht.l ; sam("kaccount","insttns") = entsav.l + deprecia.l ; sam("kaccount","households") = hhsav.l ; sam("kaccount","govt") = govsav.l ; sam("govt","commdty") = tariff.l ; sam("govt","activity") = indtax.l ; sam("govt","valuad") = sstax.l ; sam("govt","insttns") = enttax.l ; sam("govt","households") = tothhtax.l ; sam("world","commdty") = sum(i,((pwm(i)*exr.l)*m.l(i))) ; sam("world","households") = - remit.l*exr.l ; sam("world","govt") = - fbor.l*exr.l ; sam("world","kaccount") = - fsav.l*exr.l ; sam("total","commdty") = sum(isam2,sam(isam2,"commdty")) ; sam("total","activity") = sum(isam2,sam(isam2,"activity")) ; sam("total","valuad") = sum(isam2,sam(isam2,"valuad")) ; sam("total","insttns") = sum(isam2,sam(isam2,"insttns")) ; sam("total","households") = sum(isam2,sam(isam2,"households")) ; sam("total","kaccount") = sum(isam2,sam(isam2,"kaccount")) ; sam("total","govt") = sum(isam2,sam(isam2,"govt")) ; sam("total","world") = sum(isam2,sam(isam2,"world")) ; sam(isam3,"total") = sum(isam2,sam(isam3,isam2)) ; option decimals=2 ; display sam ; option decimals=3 ; *##################################################################### equations *#################### equation declaration ########################### *## price block pmdef(i) definition of domestic import prices pedef(i) definition of domestic export prices absorption(i) value of domestic sales sales(i) value of domestic output actp(i) definition of activity prices pkdef(i) definition of capital goods price pindexdef definition of general price level *## production block activity(i) production function profitmax(i,f) first order conditions for profit maximum inteq(i) total intermediate uses cet(i) cet function cet2(i) domestic sales for nontraded sectors esupply(i) export supply edemand(i) export demand functions armington(i) composite good aggregation function armington2(i) composite good agg. for nontraded sectors costmin(i) f.o.c. for cost minimization of composite good *## income block yfctreq(f) factor income labory labor income propy property income enty enterprise income hhy(hh) household income tariffdef tariff revenue indtaxdef indirect taxes on domestic production netsubdef export subsidies taxss social security tax etax enterprise tax hhtaxdef total household taxes collected by govt. depreq depreciation expenditure esave enterprise savings hhsaveq household savings greq government revenue totsav total savings *## expenditure block cdeq(i) private consumption behavior gdeqi(i) govt consumption of commodities gruse government savings dsteq(i) inventory investment fixedinv fixed investment net of inventory prodinv(i) investment by sector of destination ieq(i) investment by sector of origin *## market clearing equil(i) goods market equilibrium fmequil(f) factor market equilibrium caeq current account balance (bill dollars) * walras savings investment equilibrium *## the walras equation is redundant, *## given that the model satisfies walras' law. *## in this case, we drop the savings-investment balance equation. *## gross national product gnpy total value added including indtax gnpr real gnp ; *######################## equation assignment ####################### *## price block pmdef(im).. pm(im) =e= pwm(im)*exr*(1 + tm(im)) ; pedef(ie).. pe(ie) =e= pwe(ie)*(1 + te(ie))*exr ; absorption(i).. p(i)*x(i) =e= pd(i)*xxd(i) + (pm(i)*m(i))$im(i) ; sales(i).. px(i)*xd(i) =e= pd(i)*xxd(i) + (pe(i)*e(i))$ie(i) ; actp(i).. pva(i) =e= px(i)*(1.0-itax(i)) - sum(j,io(j,i)*p(j)) ; pkdef(i).. pk(i) =e= sum(j, p(j)*imat(j,i)) ; pindexdef.. pindex =e= gnpva/rgnp ; *## production block activity(i).. xd(i) =e= ad(i)*prod(f$alpha(i,f), fdsc(i,f)**alpha(i,f)) ; profitmax(i,f)$wfdist(i,f).. wf(f)*wfdist(i,f)*fdsc(i,f) =e= xd(i)*pva(i)*alpha(i,f) ; inteq(i).. int(i) =e= sum(j, io(i,j)*xd(j)); cet(ie).. xd(ie) =e= at(ie)*(gamma(ie)*e(ie)**rhot(ie) + (1-gamma(ie))*xxd(ie)**rhot(ie))**(1/rhot(ie)) ; cet2(ien).. xd(ien) =e= xxd(ien) ; esupply(ie).. e(ie) =e= xxd(ie)*(pe(ie)/pd(ie)*(1 - gamma(ie)) /gamma(ie))**(1/(rhot(ie)-1)) ; edemand(ied).. e(ied) =e= econst(ied)*((pwe(ied)/pwse(ied)) **(-rhoe(ied))) ; armington(im).. x(im) =e= ac(im)*(delta(im)*m(im)**(-rhoc(im)) + (1 - delta(im))*xxd(im)**(-rhoc(im)))**(-1/rhoc(im)) ; armington2(imn).. x(imn) =e= xxd(imn) ; costmin(im).. m(im)/xxd(im) =e= (pd(im)/pm(im)*delta(im)/ (1 - delta(im)))**(1/(1 + rhoc(im))) ; *## income block yfctreq(f).. yfctr(f) =e= sum(i, wf(f)*wfdist(i,f)*fdsc(i,f)); labory.. yinst("labr") =e= yfctr("labor") - sstax ; propy.. yinst("prop") =e= yfctr("land") ; enty.. yinst("ent") =e= yfctr("capital") + gent - (entsav + enttax + deprecia) ; hhy(hh).. yh(hh) =e= sum(ins, sintyh(hh,ins)*yinst(ins)) + remit*rhsh(hh)*exr + hht*thsh(hh) ; tariffdef.. tariff =e= sum(im, tm(im)*m(im)*pwm(im))*exr ; indtaxdef.. indtax =e= sum(i, itax(i)*px(i)*xd(i)) ; netsubdef.. netsub =e= sum(ie, te(ie)*e(ie)*pwe(ie))*exr ; taxss.. sstax =e= sstr*yfctr("labor") ; etax.. enttax =e= etr*(yfctr("capital") - deprecia + gent) ; hhtaxdef.. tothhtax =e= sum(hh, htax(hh)*yh(hh)) ; depreq.. deprecia =e= sum(i, depr(i)*pk(i)*fdsc(i,"capital")) ; esave.. entsav =e= esr*(yfctr("capital")+gent-enttax-deprecia); hhsaveq.. hhsav =e= sum(hh, mps(hh)*yh(hh)*(1 - htax(hh))) ; greq.. gr =e= tariff - netsub + indtax +tothhtax + sstax + enttax + fbor*exr ; totsav.. savings =e= hhsav + govsav + deprecia + fsav*exr + entsav ; *## expenditure block cdeq(i).. p(i)*cd(i) =e= sum(hh, cles(i,hh)*(1-mps(hh))*yh(hh) *(1-htax(hh))) ; gdeqi(i).. gd(i) =e= gles(i)*gdtot ; gruse.. gr =e= sum(i, p(i)*gd(i)) + govsav + gent + hht ; dsteq(i).. dst(i) =e= dstr(i)*xd(i) ; fixedinv.. fxdinv =e= invest - sum(i, dst(i)*p(i)) ; prodinv(i).. pk(i)*dk(i) =e= kish(i)*fxdinv ; ieq(i).. id(i) =e= sum(j, imat(i,j)*dk(j)); *## market clearing equil(i).. x(i) =e= int(i) + cd(i) + gd(i) + id(i) + dst(i) ; fmequil(f).. sum(i, fdsc(i,f)) =e= fs(f) ; caeq.. sum(im, pwm(im)*m(im)) =e= sum(ie, pwe(ie)*e(ie)) + fsav + remit + fbor ; *walras.. savings =e= invest ; *## gross national product gnpy.. gnpva =e= sum(i,pva(i)*xd(i)) + indtax + tariff - netsub ; gnpr.. rgnp =e= sum(i,cd(i) + dst(i) + id(i) + gd(i)) + sum(ie,(1.0 - tereal(ie)) * e(ie) ) - sum(im,(1.0 - tmreal(im)) * m(im) ) ; *#### additional restrictions corresponding to equations *# pmdef, pedef, edemand, esupply, costmin, and profitmax *# for non-traded sectors and sectors with fixed world export prices pm.fx(imn) = pm0(imn) ; pe.fx(ien) = pe0(ien) ; pwe.fx(iedn) = pwe.l(iedn) ; e.fx(ien) = 0; m.fx(imn) = 0; fdsc.fx(i,f)$(wfdist(i,f) eq 0) = 0 ; *#### variable bounds *these are included to improve algorithm performance. they are not *necessary for model specification. *. p.lo(i) = 0.0 ; pd.lo(i) = 0.0 ; pm.lo(im) = 0.0 ; *. pk.lo(i) = 0.0 ; px.lo(i) = 0.0 ; x.lo(i) = 0.0 ; *. xd.lo(i) = 0.0 ; m.lo(im) = 0.0 ; xxd.lo(i) = 0.0 ; *. wf.lo(f) = 0.0 ; int.lo(i) = 0.0 ; e.lo(ie) = 0.0 ; *. fdsc.lo(i,f)$(fdsc.l(i,f) ne 0) = 0.0 ; *. pva.lo(i) = 0.0 ; *########################### model closure ############################# *## foreign exchange market closure * in this version, the balance of trade (current account balance) is * fixed exogenously and the exchange rate is the equilibrating variable. * exr.fx = exr.l ; fsav.fx = fsav.l ; remit.fx = remit.l ; fbor.fx = fbor.l ; *## investment-savings closure * this version specifies neoclassical closure. aggregate investment is * determined by aggregate savings; the model is savings driven. mps.fx(hh) = mps.l(hh) ; * invest.fx = invest.l ; *## exogenous govt expenditure *## and govt closure rule * real government spending (gdtot) is fixed exogenously. the government * deficit (govsav) is determined residually. gdtot.fx = gdtot.l ; gent.fx = gent.l ; hht.fx = hht.l ; * govsav.fx = govsav.l ; *## factor market closure * in this version, all factors, including capital, are mobile. * commented equations allow a version with fixed wage for labor. * the model then solves for aggregate employment. fs.fx(f) = fs.l(f) ; * wf.fx("labor") = wf.l("labor") ; * fs.lo("labor") = -inf ; * fs.up("labor") = +inf ; *## numeraire price index *in this case, the gnp deflator. pindex.fx = pindex.l ; *########################### end of model ############################ options iterlim=1000,limrow=0,limcol=0,solprint=off; * randomize the import prices to make the * solution more challenging: option seed=1203; loop(i, pwm(i) = uniform(0.2,2.0) * pwm(i); ); model us82 /all/ ; solve us82 using mcp; *#################### solution reports and output #################### *#### three report and output blocks *## 1) tables of results for variables in model *## 2) tables of results for display *## 3) tables of results for restart solution ratio tables *## use $ontext and $offtext to turn off reports not wanted. *##################################################################### *#### 1) tables of results for variables in the model *## macro aggregate results scalres("exr") = exr.l ; scalres("pindex") = pindex.l ; scalres("rgnp") = rgnp.l ; scalres("gnpva") = gnpva.l ; scalres("invest") = invest.l ; scalres("fxdinv") = fxdinv.l ; scalres("gdtot") = gdtot.l ; scalres("gr") = gr.l ; scalres("sstax") = sstax.l ; scalres("tariff") = tariff.l ; scalres("indtax") = indtax.l ; scalres("enttax") = enttax.l ; scalres("tothhtax") = tothhtax.l ; scalres("netsub") = netsub.l ; scalres("remit") = remit.l ; scalres("gent") = gent.l ; scalres("hht") = hht.l ; scalres("fbor") = fbor.l ; scalres("savings") = savings.l ; scalres("entsav") = entsav.l ; scalres("deprecia") = deprecia.l ; scalres("hhsav") = hhsav.l ; scalres("govsav") = govsav.l ; scalres("fsav") = fsav.l ; *## factor of production results fctres1(i,f) = fdsc.l(i,f) ; *## table fctres2(*,f) miscellaneous factor variable results ; set ifvar /wf, fs, yfctr/ ; parameter fctres2(ifvar,f) miscellaneous factor variable results ; fctres2("wf",f) = wf.l(f) ; fctres2("fs",f) = fs.l(f) ; fctres2("yfctr",f) = yfctr.l(f) ; *## sectoral price and quantity results sectres("p",i) = p.l(i) ; sectres("pd",i) = pd.l(i) ; sectres("pe",i) = pe.l(i) ; sectres("pk",i) = pk.l(i) ; sectres("pm",i) = pm.l(i) ; sectres("pva",i) = pva.l(i) ; sectres("pwe",i) = pwe.l(i) ; sectres("px",i) = px.l(i) ; sectres("x",i) = x.l(i) ; sectres("xd",i) = xd.l(i) ; sectres("xxd",i) = xxd.l(i) ; sectres("e",i) = e.l(i) ; sectres("m",i) = m.l(i) ; sectres("int",i) = int.l(i) ; sectres("cd",i) = cd.l(i) ; sectres("gd",i) = gd.l(i) ; sectres("id",i) = id.l(i) ; sectres("dst",i) = dst.l(i) ; sectres("dk",i) = dk.l(i) ; *## institutional results *## table insres(*,ins) institutional income results set insvar /yinst/ ; parameter insres(insvar,ins) institutional income results ; insres("yinst",ins) = yinst.l(ins) ; *## household results *## table hhres(*,hh) miscellaneous household results set hhvar /mps, yh/ ; parameter hhres(hhvar,hh) miscellaneous household results ; hhres("mps",hh) = mps.l(hh) ; hhres("yh",hh) = yh.l(hh) ; option decimals = 6 ; display scalres, fctres1, fctres2, sectres, insres, hhres ; option decimals = 3 ; *##################################################################### *#### 2) tables of results for display *## define sets for solution report tables #### * for gnp tabulations set ignp rows /consmpt,investment,inventory,government, exports,imports,gnp / ignp1(ignp) /gnp/ ignp2(ignp) jgnp columns /nominal real nomshare realshare deflator / ; ignp2(ignp) = not ignp1(ignp) ; parameter gnptab(ignp,jgnp) gnp accounts ; parameter gnptab2(i,jgnp) sectoral value added ; parameter sumgnp(jgnp) aggregate gnp; parameter gnpratio gnp value added correction factor ; * for absorb set rar rows / ag,non-ag,total / rac columns / gnp,c,i,g,e,m,nete-m,t-g,absorb / parameter absorb(rar,rac) absorption table (real) ; * for factors set rf / yf,yfcap,profit,rental,rdist,wdcap, yflabor,wdlabor,yfland,wdland,pint,intinp / parameter factors(i,rf) factor returns distributive parameters ; * for coeffs (shift and share coefficients) set rc / alphal,alphac,alphap,rmd,delta,ad / parameter coeffs(i,rc) shift,share and distributive parameters ; *## define extra parameters for solution report tables #### parameters agtotfd agricultural terms of trade agtotva ag terms of trade value added agtote ag terms of trade world export price agtotm ag terms of trade world import price avgprofit average profit rate avgwf average factor price current weights bot nominal balance of trade botr real balance of trade colind cost of living index esum real exports exrind real exchange rate index hold1 holds value for end calculation indhold holds value for end calculation intinp(i) intermediate input demand by sector i intinpn(i) nominal intermediate input demand by sector i msum real imports ncdtot nominal cdtot nex nominal exports nim nominal imports ngdtot nominal govt demand ngnp nominal gnp pnagind nonag price index pagind ag price index pmind domestic import price index peind domestic export price index pweind world export price index pwmind world import price index psav private savings pxind producer price index pdind domestic supply price index pind composite good price index pint(i) cost per unit of intermediate inputs profit(i) profit rate rdist(i) capital rental proportionality factor rental(i) rental rate of capital shconsump consumption share of nominal gnp shinvest investment share of nominal gnp shex export share of nominal gnp shim import share of nominal gnp shgdtot govt consumption share of nominal gnp shbot balance of trade share of nominal gnp shfsav foreign saving share of investment shgsav government saving share of investment shpsav private saving share of investment valadd(i) value added at market price sectory(i) value added at factor cost wtd(i) base year wt domestic in total domestic sales wtm(i) base year wt of imports in total trade wtx(i) base year wt of exports in total trade yf(i,f) factor income ; *#### specify extra parameters for solution report tables #### *## ag terms of trade ## pagind = sum(iag,px.l(iag)*xd.l(iag))/sum(iag,xd.l(iag)); pnagind = sum(iagn,px.l(iagn)*xd.l(iagn))/sum(iagn,xd.l(iagn)); agtotfd = 100*pagind/pnagind; pagind = sum(iag,pva.l(iag)*xd.l(iag))/sum(iag,xd.l(iag)); pnagind = sum(iagn,pva.l(iagn)*xd.l(iagn))/sum(iagn,xd.l(iagn)); agtotva = 100*pagind/pnagind; pagind = sum(iag,pwe.l(iag)*e.l(iag))/sum(iag,e.l(iag)); pnagind = sum(iagn,pwe.l(iagn)*e.l(iagn))/sum(iagn,e.l(iagn)); agtote = 100*pagind/pnagind; pagind = sum(iag,pwm(iag)*m.l(iag))/sum(iag,m.l(iag)); pnagind = sum(iagn,pwm(iagn)*m.l(iagn))/sum(iagn,m.l(iagn)); agtotm = 100*pagind/pnagind; display agtotfd, agtotva, agtotm, agtote ; *## macro balances ## ncdtot = sum(i,cd.l(i)*p.l(i)); ngdtot = sum(i,gd.l(i)*p.l(i)); ngnp = sum(i,p.l(i)*(cd.l(i) + dst.l(i) + id.l(i) + gd.l(i)) + pe.l(i)*e.l(i) - pwm(i)*exr.l*m.l(i)); nex = sum(ie,e.l(ie)*exr.l*pwe.l(ie)); nim = sum(im,m.l(im)*exr.l*pwm(im)); bot = nex-nim; botr = sum(i,e.l(i)) - sum(i,m.l(i)); esum = sum(i,e.l(i)); msum = sum(i,m.l(i)); psav = invest.l - fsav.l - govsav.l; shbot = 100*bot/gnpva.l; shconsump = 100*ncdtot/gnpva.l; shex = 100*nex/gnpva.l; shfsav = 100*fsav.l/invest.l; shim = 100*nim/gnpva.l; shinvest = 100*invest.l/gnpva.l; shgdtot = 100*ngdtot/gnpva.l; shgsav = 100*govsav.l/invest.l; shpsav = 100*psav/invest.l; display bot,botr,nex,esum,nim,msum,shconsump,shinvest, shgdtot,shex,shim,shbot,shfsav,shgsav,shpsav; *## indexes ## * note that cost of living index (colind) is the simple average over * households. card(hh) is the "cardinal" function which counts number * of entries in the set. colind = sum(i,p.l(i)*(sum(hh,cles(i,hh))))*100/card(hh); wtd(i) = xxd0(i)/sum(j,xxd0(j)) ; wtm(i) = m0(i)/sum(j,(m0(j)+e0(j))) ; wtx(i) = e0(i)/sum(j,(m0(j)+e0(j))) ; exrind = sum(i,wtd(i)*pd.l(i)) /sum(i,(wtm(i)*pm.l(i))+(wtx(i)*pe.l(i)))*100 ; pdind = sum(i,xxd0(i)*pd.l(i))/sum(j,xxd0(j))*100; peind = sum(i,e0(i)*pe.l(i))/sum(j,e0(j))*100; pind = sum(i,x0(i)*p.l(i))/sum(j,x0(j))*100; pmind = sum(i,m0(i)*pm.l(i))/sum(j,m0(j))*100; pweind = sum(i,e0(i)*pwe.l(i))/sum(i,e0(i))*100; pwmind = sum(i,m0(i)*pwm(i))/sum(i,m0(i))*100; pxind = sum(i,pwts(i)*px.l(i))*100 ; display colind,exrind,ngnp,pdind,pind,peind,pmind,pweind,pwmind,pxind; *#### specify solution report tables #### *## gnp tables ## * note treatment of tariffs. * in u.s. nipa, tariffs are included in the service sector. * in the u.n. sna, tariffs are treated separately. * treatment below follows u.s. nipa practice. * note that real gnp from expenditure side provides the control total, * and sectoral real value addeds are adjusted * to match total using gnpratio. gnptab("consmpt","nominal") = sum(i,p.l(i)*cd.l(i)) ; gnptab("consmpt","real") = sum(i,cd.l(i)); gnptab("investment","nominal") = sum(i,p.l(i)*id.l(i)); gnptab("investment","real") = sum(i,id.l(i)) ; gnptab("inventory","nominal") = sum(i,p.l(i)*dst.l(i)) ; gnptab("inventory","real") = sum(i,dst.l(i)) ; gnptab("government","nominal") = sum(i,p.l(i)*gd.l(i)) ; gnptab("government","real") = sum(i,gd.l(i)) ; gnptab("exports","nominal") = sum(i,pwe.l(i)*e.l(i))*exr.l ; gnptab("exports","real") = sum(i,(1.0 - tereal(i))*e.l(i)) ; gnptab("imports","nominal") = -sum(i,pwm(i)*m.l(i))*exr.l ; gnptab("imports","real") = -sum(i,(1.0 - tmreal(i))*m.l(i)) ; gnptab("gnp","nominal") = sum(ignp2,gnptab(ignp2,"nominal")) ; gnptab("gnp","real") = sum(ignp2,gnptab(ignp2,"real")) ; gnptab(ignp,"nomshare") = 100.*gnptab(ignp,"nominal") /gnptab("gnp","nominal") ; gnptab(ignp,"realshare") = 100.*gnptab(ignp,"real") /gnptab("gnp","real") ; gnptab(ignp,"deflator") = 100.*gnptab(ignp,"nominal") /gnptab(ignp,"real") ; gnptab2(i,"nominal") = pva.l(i)*xd.l(i) + itax(i)*px.l(i)*xd.l(i) - te(i)*pwe.l(i)*e.l(i)*exr.l ; gnptab2("service","nominal") = gnptab2("service","nominal") + tariff.l; gnptab2(i,"real") = var0(i)*xd.l(i) ; gnptab2("service","real") = gnptab2("service","real") + sum(i,tmreal(i)*m.l(i)); sumgnp("nominal") = sum(i,gnptab2(i,"nominal")) ; sumgnp("real") = sum(i,gnptab2(i,"real")) ; gnpratio = gnptab("gnp","real")/sumgnp("real") ; gnptab2(i,"real") = gnpratio*gnptab2(i,"real") ; sumgnp("real") = sum(i,gnptab2(i,"real")) ; gnptab2(i,"nomshare") = 100*gnptab2(i,"nominal")/sumgnp("nominal") ; gnptab2(i,"realshare") = 100*gnptab2(i,"real")/sumgnp("real") ; sumgnp("nomshare") = sum(i,gnptab2(i,"nomshare")) ; sumgnp("realshare") = sum(i,gnptab2(i,"realshare")) ; gnptab2(i,"deflator") = 100.*gnptab2(i,"nominal")/gnptab2(i,"real"); display gnptab, gnptab2, sumgnp, gnpratio ; *## report absorption ## absorb("ag","c") = sum(iag,cd.l(iag)) ; absorb("non-ag","c") = sum(iagn,cd.l(iagn)) ; absorb("total","c") = sum(i,cd.l(i)) ; absorb("ag","i") = sum(iag,id.l(iag)) ; absorb("non-ag","i") = sum(iagn,id.l(iagn)) ; absorb("total","i") = sum(i,id.l(i)) ; absorb("ag","g") = sum(iag,gd.l(iag)) ; absorb("non-ag","g") = sum(iagn,gd.l(iagn)) ; absorb("total","g") = sum(i,gd.l(i)) ; absorb("ag","e") = sum(iag,e.l(iag)) ; absorb("non-ag","e") = sum(iagn,e.l(iagn)) ; absorb("total","e") = sum(i,e.l(i)) ; absorb("ag","m") = sum(iag,m.l(iag)) ; absorb("non-ag","m") = sum(iagn,m.l(iagn)) ; absorb("total","m") = sum(i,m.l(i)) ; absorb("ag","nete-m") = sum(iag,e.l(iag))-sum(iag,m.l(iag)) ; absorb("non-ag","nete-m") = sum(iagn,e.l(iagn))-sum(iagn,m.l(iagn)) ; absorb("total","nete-m") = esum - msum ; absorb("total","t-g") = govsav.l ; absorb("ag","gnp") = sum(iag,cd.l(iag)+dst.l(iag)+id.l(iag) +gd.l(iag)+e.l(iag)-m.l(iag)) ; absorb("non-ag","gnp") = rgnp.l - absorb("ag","gnp") ; absorb("total","gnp") = rgnp.l ; absorb("ag","absorb") = sum(iag,cd.l(iag)+id.l(iag)+gd.l(iag)) ; absorb("non-ag","absorb") = sum(iagn,cd.l(iagn)+id.l(iagn)+gd.l(iagn)); absorb("total","absorb") = sum(i,cd.l(i)+id.l(i)+gd.l(i)) ; display absorb ; *### calculate and report selected parameters and coefficients ######### intinp(j) = sum(i, io(i,j)*xd.l(j)) ; intinpn(j) = sum(i, p.l(i)*io(i,j)*xd.l(j)) ; pint(i) = sum(j, io(j,i)*p.l(j)) ; yf(i,f) = wfdist(i,f)*wf.l(f)*fdsc.l(i,f) ; profit(i) = (wfdist(i,"capital")*wf.l("capital")*fdsc.l(i,"capital")) /(fdsc.l(i,"capital")*pk.l(i)) ; avgprofit = sum(i, wfdist(i,"capital")*wf.l("capital") *fdsc.l(i,"capital"))/sum(i, fdsc.l(i,"capital")*pk.l(i)); avgwf(f) = yfctr.l(f)/fs.l(f) ; rental(i) = (wfdist(i,"capital")*wf.l("capital")*fdsc.l(i,"capital")) /fdsc.l(i,"capital") ; rdist(i) = rental(i)/avgwf("capital") ; valadd(i) = (pva.l(i)+(itax(i)*px.l(i)))*xd.l(i); sectory(i) = (pva.l(i))*xd.l(i); rmd(i) = m.l(i)/xxd.l(i) ; display avgwf,avgprofit,valadd,sectory ; factors(i,"yf") = sum(f,yf(i,f)) ; factors(i,"yfcap") = yf(i,"capital") ; factors(i,"profit") = profit(i) ; factors(i,"rental") = rental(i) ; factors(i,"rdist") = rdist(i) ; factors(i,"wdcap") = wfdist(i,"capital") ; factors(i,"yflabor") = yf(i,"labor") ; factors(i,"wdlabor") = wfdist(i,"labor") ; factors(i,"yfland") = yf(i,"land") ; factors(i,"wdland") = wfdist(i,"land") ; factors(i,"pint") = pint(i) ; factors(i,"intinp") = intinp(i) ; coeffs(i,"alphal") = alpha(i,"labor") ; coeffs(i,"alphap") = alpha(i,"land") ; coeffs(i,"alphac") = alpha(i,"capital") ; coeffs(i,"rmd") = rmd(i) ; coeffs(i,"delta") = delta(i) ; coeffs(i,"ad") = ad(i) ; display factors, coeffs ; *##################################################################### *#### 3) tables of results for restart solution ratio tables *#### define sets for restart solution ratio tables #### * for scalres1,scalres2,rscale set sc / exr, pindex, rgnp, gnpva, invest, fxdinv, gdtot, gr, sstax, tariff, indtax, enttax, tothhtax, netsub, remit, gent, hht, fbor, savings, entsav, deprecia, hhsav, govsav, fsav / ; parameter scalres1(sc) aggregate variables ; parameter scalres2(sc) restart scalar results ; parameter rscale(sc) percent change from base scalars ; * for pricres set rp / px, pva, pe, pwe, pm, pwm, pd, p, profit, rental, pint / ; parameter pricres1(i,rp) price results by sector ; parameter pricres2(i,rp) restart price results ; parameter rprice(i,rp) percent change from base price results ; * for quantres set rq / xd, valadd, sectory, e, m, labor, capital, land, x, xxd / ; parameter quantres1(i,rq) quantity results by sector ; parameter quantres2(i,rq) restart quantity results ; parameter rquant(i,rq) percent change from base quantity results ; *#### specify tables for restart ratio solution reports #### pricres1(i,"px") = px.l(i) ; pricres1(i,"pva") = pva.l(i) ; pricres1(i,"pe") = pe.l(i) ; pricres1(i,"pwe") = pwe.l(i) ; pricres1(i,"pm") = pm.l(i) ; pricres1(i,"pwm") = pwm(i) ; pricres1(i,"pd") = pd.l(i) ; pricres1(i,"p") = p.l(i) ; pricres1(i,"profit") = profit(i) ; pricres1(i,"rental") = rental(i) ; pricres1(i,"pint") = pint(i) ; quantres1(i,"xd") = xd.l(i) ; quantres1(i,"valadd") = valadd(i) ; quantres1(i,"sectory") = sectory(i) ; quantres1(i,"e") = e.l(i) ; quantres1(i,"m") = m.l(i) ; quantres1(i,"labor") = fdsc.l(i,"labor") ; quantres1(i,"capital") = fdsc.l(i,"capital") ; quantres1(i,"land") = fdsc.l(i,"land") ; quantres1(i,"x") = x.l(i) ; quantres1(i,"xxd") = xxd.l(i) ; *## macro aggregate results scalres1("exr") = exr.l ; scalres1("pindex") = pindex.l ; scalres1("rgnp") = rgnp.l ; scalres1("gnpva") = gnpva.l ; scalres1("invest") = invest.l ; scalres1("fxdinv") = fxdinv.l ; scalres1("gdtot") = gdtot.l ; scalres1("gr") = gr.l ; scalres1("sstax") = sstax.l ; scalres1("tariff") = tariff.l ; scalres1("indtax") = indtax.l ; scalres1("enttax") = enttax.l ; scalres1("tothhtax") = tothhtax.l ; scalres1("netsub") = netsub.l ; scalres1("remit") = remit.l ; scalres1("gent") = gent.l ; scalres1("hht") = hht.l ; scalres1("fbor") = fbor.l ; scalres1("savings") = savings.l ; scalres1("entsav") = entsav.l ; scalres1("deprecia") = deprecia.l ; scalres1("hhsav") = hhsav.l ; scalres1("govsav") = govsav.l ; scalres1("fsav") = fsav.l ; display pricres1, quantres1, scalres1 ; *####################### social accounting matrix ###################### sam("commdty","activity") = sum(i,(p.l(i)*int.l(i))) ; sam("commdty","households") = sum(i,(p.l(i)*cd.l(i))) ; sam("commdty","kaccount") = sum(i,(p.l(i)*(dst.l(i)+id.l(i)))) ; sam("commdty","govt") = sum(i,(p.l(i)*gd.l(i))) ; sam("activity","world") = sum(i,((exr.l*pwe.l(i))*e.l(i))) ; sam("activity","commdty") = sum(i, (px.l(i)*xd.l(i)) - (pe.l(i)*e.l(i)) ) ; sam("activity","govt") = netsub.l ; sam("valuad","activity") = sum(f, yfctr.l(f)) ; sam("insttns","valuad") = sum(f,yfctr.l(f)) - sstax.l ; sam("insttns","govt") = gent.l ; sam("households","insttns")= sum((ins,hh),sintyh(hh,ins)*yinst.l(ins)); sam("households","govt") = hht.l ; sam("kaccount","insttns") = entsav.l + deprecia.l ; sam("kaccount","households") = hhsav.l ; sam("kaccount","govt") = govsav.l ; sam("govt","commdty") = tariff.l ; sam("govt","activity") = indtax.l ; sam("govt","valuad") = sstax.l ; sam("govt","insttns") = enttax.l ; sam("govt","households") = tothhtax.l ; sam("world","commdty") = sum(i,((pwm(i)*exr.l)*m.l(i))) ; sam("world","households") = - remit.l*exr.l ; sam("world","govt") = - fbor.l*exr.l ; sam("world","kaccount") = - fsav.l*exr.l ; sam("total","commdty") = sum(isam2,sam(isam2,"commdty")) ; sam("total","activity") = sum(isam2,sam(isam2,"activity")) ; sam("total","valuad") = sum(isam2,sam(isam2,"valuad")) ; sam("total","insttns") = sum(isam2,sam(isam2,"insttns")) ; sam("total","households") = sum(isam2,sam(isam2,"households")) ; sam("total","kaccount") = sum(isam2,sam(isam2,"kaccount")) ; sam("total","govt") = sum(isam2,sam(isam2,"govt")) ; sam("total","world") = sum(isam2,sam(isam2,"world")) ; sam(isam3,"total") = sum(isam2,sam(isam3,isam2)) ; option decimals=3 ; display sam; *############################ the end ################################