kormcp.gms : General Equilibrium Model for Korea - MCP
This mini equilibrium model of Korea for the year 1963 is used to
illustrate the basic use of cge models. This version follows closely
chapter 11 of the reference.
This version of 'KORCGE' uses nonlinear complementarity solvers
instead of nonlinear solvers to get solutions to the system of
equations.
Reference:
- Lewis, J, and Robinson, S, Chapter 11. In Chenery, H B, Robinson, S, and Syrquin, M, Eds, Industrialization and Growth: A Comparative Study. Oxford University Press, London, 1986.
Small Model of Type: MCP
$title General Equilibrium Model for Korea as MCP (KORMCP,SEQ=130)
$Ontext
This mini equilibrium model of Korea for the year 1963 is used to
illustrate the basic use of cge models. This version follows closely
chapter 11 of the reference.
This version of 'KORCGE' uses nonlinear complementarity solvers
instead of nonlinear solvers to get solutions to the system of
equations.
Lewis, J, and Robinson, S, Chapter 11. In Chenery, H B, Robinson, S,
and Syrquin, S, Eds, Industrialization and Growth: A Comparative Study.
Oxford University Press, London, 1986.
$Offtext
sets i sectors /agricult agriculture
industry industrial sectors
services infra. & services /
hh household type /lab-hh labor households
cap-hh capitalist household/
lc labor categories /labor1 agricultural labor
labor2 industrial labor
labor3 service labor /
it(i) traded sectors
in(i) nontraded sectors
alias (i,j);
parameters delta(i) armington function share parameter
ac(i) armington function shift parameter
rhoc(i) armington function exponent
rhot(i) cet function exponent
at(i) cet function shift parameter
gamma(i) cet function share parameter
ad(i) production function shift parameter
gles(i) government consumption shares
depr(i) depreciation rates
dstr(i) ratio of inventory investment to gross output
kio(i) shares of investment by sector of destination
te(i) export duty rates
itax(i) indirect tax rates
htax(hh) income tax rate by household type
pwm(i) world market price of imports (in dollars)
pwe(i) world market price of exports (in dollars)
tm(i) tariff rates on imports
pwts(i) cpi weights ;
htax("lab-hh ") = 0.08910;
htax("cap-hh ") = 0.08910;
table alphl(i,lc) labor share parameter in production function
labor1 labor2 labor3
agricult 0.38258 0.06740 0.00000
industry 0.00000 0.53476 0.00000
services 0.00000 0.16234 0.42326
table io(i,j) input-output coefficients
agricult industry services
agricult 0.12591 0.19834 0.01407
industry 0.10353 0.35524 0.18954
services 0.02358 0.11608 0.08390
table imat(i,j) capital composition matrix
agricult industry services
agricult 0.00000 0.00000 0.00000
industry 0.93076 0.93774 0.93080
services 0.06924 0.06226 0.06920
table wdist(i,lc) wage proportionality factors
labor1 labor2 labor3
agricult 1.00000 0.52780 0.00000
industry 0.00000 1.21879 0.00000
services 0.00000 1.11541 1.00000
table cles(i,hh) private consumption shares
lab-hh cap-hh
agricult 0.47000 0.47000
industry 0.31999 0.31999
services 0.21001 0.21001
table zz(*,i) miscellaneous parameters
agricult industry services
depr 0.00000 0.00000 0.00000
itax 0.01000 0.03920 0.05000
gles 0.02000 0.07000 0.91000
kio 0.13000 0.29000 0.58000
dstr 0.00000 0.00000 0.00000
te 0.00000 0.00000 0.00000
tm 0.10000 0.22751 0.08084
ad 0.61447 1.60111 0.52019
pwts 0.33263 0.43486 0.23251
pwm 0.90909 0.81466 0.92521
pwe 1.00000 1.00000 1.00000
sigc 2.00000 0.66000 0.40000
delta 0.24820 0.05111 0.00001
ac 1.59539 1.34652 1.01839
sigt 2.00000 2.00000 2.00000
gamma 0.86628 0.84602 0.82436
at 3.85424 3.51886 3.23592 ;
depr(i) = zz("depr",i);
itax(i) = zz("itax",i);
gles(i) = zz("gles",i);
kio(i) = zz("kio",i);
dstr(i) = zz("dstr",i);
te(i) = zz("te",i);
tm(i) = zz("tm",i);
ad(i) = zz("ad",i);
pwts(i) = zz("pwts",i);
pwm(i) = zz("pwm",i);
pwe(i) = zz("pwe",i);
rhoc(i) = (1/zz("sigc",i)) - 1 ;
delta(i) = zz("delta",i);
ac(i) = zz("ac",i);
rhot(i) = (1/zz("sigt",i)) + 1;
gamma(i) = zz("gamma",i);
at(i) = zz("at",i);
$stitle model definition
variables
*prices block
er real exchange rate (won per dollar)
pd(i) domestic prices
pm(i) domestic price of imports
pe(i) domestic price of exports
pk(i) rate of capital rent by sector
px(i) average output price by sector
p(i) price of composite goods
pva(i) value added price by sector
pr import premium
pindex general price level
*production block
x(i) composite goods supply ('68 bill won)
xd(i) domestic output by sector ('68 bill won)
xxd(i) domestic sales ('68 bill won)
e(i) exports by sector ('68 bill won)
m(i) imports ('68 bill won)
* factors block
k(i) capital stock by sector ('68 bill won)
wa(lc) average wage rate by labor category (mill won pr person)
ls(lc) labor supply by labor category (1000 persons)
l(i,lc) employment by sector and labor category (1000 persons)
*demand block
int(i) intermediates uses ('68 bill won)
cd(i) final demand for private consumption ('68 bill won)
gd(i) final demand for government consumption ('68 bill won)
id(i) final demand for productive investment ('68 bill won)
dst(i) inventory investment by sector ('68 bill won)
y private gdp (bill won)
gr government revenue (bill won)
tariff tariff revenue (bill won)
indtax indirect tax revenue (bill won)
netsub export duty revenue (bill won)
gdtot total volume of government consumption ('68 bill won)
hhsav total household savings (bill won)
govsav government savings (bill won)
deprecia total depreciation expenditure (bill won)
invest total investment (bill won)
savings total savings (bill won)
mps(hh) marginal propensity to save by household type
fsav foreign savings (bill dollars)
dk(i) volume of investment by sector of destination ('68 bill won)
ypr total premium income accruing to capitalists (bill won)
remit net remittances from abroad (bill dollars)
fbor net flow of foreign borrowing (bill dollars)
yh(hh) total income by household type (bill won)
tothhtax household tax revenue (bill won)
*welfare indicator for objective function
omega objective function variable ('68 bill won);
er.l = 1.0000 ;
pr.l = 0.0000 ;
pindex.l = 1.0000 ;
gr.l = 194.0449 ;
tariff.l = 28.6572 ;
indtax.l = 65.2754 ;
netsub.l = 0.0000 ;
gdtot.l = 141.1519 ;
hhsav.l = 61.4089 ;
govsav.l = 52.8930 ;
deprecia.l = 0.0000 ;
savings.l = 159.1419 ;
invest.l = 159.1419 ;
fsav.l = 39.1744 ;
fbor.l = 58.7590 ;
remit.l = 0.0000 ;
tothhtax.l = 100.1122 ;
y.l = 1123.5941 ;
table labres1(i,lc) summary matrix with sectoral employment results
labor1 labor2 labor3
agricult 2515.900 442.643 0.000
industry 0.000 767.776 0.000
services 0.000 355.568 948.100
table labres2(*,lc) summary matrix with aggregate employment results
labor1 labor2 labor3
wa 0.074 0.140 0.152
ls 2515.900 1565.987 948.100
table hhres(*,hh) summary matrix with household results
lab-hh cap-hh
yh 548.7478 574.8463
mps 0.0600 0.0600
;
l.l(i,lc) = labres1(i,lc);
ls.l(lc) = labres2("ls",lc);
wa.l(lc) = labres2("wa",lc);
mps.l(hh) = hhres("mps",hh) ;
yh.l(hh) = hhres("yh",hh) ;
table sectres(*,i) summary matrix with sectoral results
agricult industry services
pd 1.0000 1.0000 1.0000
pk 1.0000 1.0000 1.0000
pva 0.7370 0.2911 0.6625
x 711.6443 930.3509 497.4428
xd 657.3677 840.0500 515.4296
xxd 641.7037 812.2222 492.0307
e 15.6639 27.8278 23.3988
m 69.9406 118.1287 5.4120
k 657.5754 338.7076 1548.5192
int 256.6450 464.1656 156.2598
cd 452.1765 307.8561 202.0416
gd 2.8230 9.8806 128.4482
id 0.0000 148.4488 10.6931
dst 0.0000 0.0000 0.0000
dk 20.6884 46.1511 92.3023
pm 1.0000 1.0000 1.0000
pe 1.0000 1.0000 1.0000
px 1.0000 1.0000 1.0000
p 1.0000 1.0000 1.0000
;
pd.l(i) = sectres("pd",i) ;
pm.l(i) = sectres("pm",i) ;
pe.l(i) = sectres("pe",i) ;
pk.l(i) = sectres("pk",i) ;
px.l(i) = sectres("px",i) ;
p.l(i) = sectres("p",i) ;
pva.l(i) = sectres("pva",i) ;
x.l(i) = sectres("x",i) ;
xd.l(i) = sectres("xd",i) ;
xxd.l(i) = sectres("xxd",i) ;
e.l(i) = sectres("e",i) ;
m.l(i) = sectres("m",i) ;
k.l(i) = sectres("k",i) ;
int.l(i) = sectres("int",i) ;
cd.l(i) = sectres("cd",i) ;
gd.l(i) = sectres("gd",i) ;
id.l(i) = sectres("id",i) ;
dst.l(i) = sectres("dst",i) ;
dk.l(i) = sectres("dk",i) ;
it(i) = yes$( e.l(i) or m.l(i) ) ;
in(i) = not it(i) ;
k.fx(i) = k.l(i) ;
m.fx(in) = 0; e.fx(in) = 0;
l.fx(i,lc)$( l.l(i,lc) eq 0 ) = 0 ;
* for mcp version, need to avoid lower bounds:
*. p.lo(i) = .01 ; pd.lo(i) = .01 ; pm.lo(it) = .01 ;
*. pk.lo(i) = .01 ; px.lo(i) = .01 ; x.lo(i) = .01 ;
*. xd.lo(i) = .01 ; m.lo(it) = .01 ; xxd.lo(it) = .01 ; wa.lo(lc) = .01 ;
*. int.lo(i) = .01 ; y.lo = .01 ; e.lo(it) = .01 ;
*. l.lo(i,lc)$( l.l(i,lc) ne 0 ) = .01 ;
$stitle equation definitions
equations
*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
*output block
activity(i) production function
profitmax(i,lc) first order condition for profit maximum
lmequil(lc) labor market equilibrium
cet(i) cet function
esupply(i) export supply
armington(i) composite good aggregation function
costmin(i) f.o.c. for cost minimization of composite good
xxdsn(i) domestic sales for nontraded sectors
xsn(i) composite good agg. for nontraded sectors
*demand block
inteq(i) total intermediate uses
cdeq(i) private consumption behavior
dsteq(i) inventory investment
gdp private gdp
labory total income accruing to labor
capitaly total income accruing to capital
hhtaxdef total household taxes collected by govt.
gdeq government consumption shares
greq government revenue
tariffdef tariff revenue
premium total import premium income
indtaxdef indirect taxes on domestic production
netsubdef export duties
*savings-investment block
hhsaveq household savings
gruse government savings
depreq depreciation expenditure
totsav total savings
prodinv(i) investment by sector of destination
ieq(i) investment by sector of origin
*balance of payments
caeq current account balance (bill dollars)
*market clearing
equil(i) goods market equilibrium
*objective function
obj objective function ;
*price block
pmdef(it).. pm(it) =e= pwm(it)*er*(1 + tm(it) + pr) ;
pedef(it).. pe(it) =e= pwe(it)*(1 + te(it))*er ;
absorption(i).. p(i)*x(i) =e= pd(i)*xxd(i) + (pm(i)*m(i))$it(i) ;
sales(i).. px(i)*xd(i) =e= pd(i)*xxd(i) + (pe(i)*e(i))$it(i) ;
actp(i).. px(i)*(1-itax(i)) =e= pva(i) + sum(j, io(j,i)*p(j) ) ;
pkdef(i).. pk(i) =e= sum(j, p(j)*imat(j,i) );
pindexdef.. pindex =e= sum(i, pwts(i)*p(i) ) ;
*output and factors of production block
activity(i).. xd(i) =e= ad(i) * prod(lc$wdist(i,lc), l(i,lc)**alphl(i,lc) )
*k(i)**(1 - sum(lc, alphl(i,lc)) ) ;
profitmax(i,lc)$wdist(i,lc).. wa(lc)*wdist(i,lc)*l(i,lc) =e=
xd(i)*pva(i)*alphl(i,lc) ;
lmequil(lc).. sum(i, l(i,lc)) =e= ls(lc) ;
cet(it).. xd(it) =e= at(it)*( gamma(it)*e(it)**rhot(it) +
( 1-gamma(it) )*xxd(it)**rhot(it) )**(1/rhot(it)) ;
esupply(it).. e(it)/xxd(it) =e= ( pe(it)/pd(it)*(1 - gamma(it))/gamma(it) )
**(1/(rhot(it)-1) ) ;
armington(it).. x(it) =e= ac(it)*(delta(it)*m(it)**(-rhoc(it)) +
(1-delta(it))*xxd(it)**(-rhoc(it)))**(-1/rhoc(it)) ;
costmin(it).. m(it)/xxd(it) =e= ( pd(it)/pm(it)*delta(it)/(1-delta(it)) )**
(1/(1 + rhoc(it))) ;
xxdsn(in).. xxd(in) =e= xd(in) ;
xsn(in).. x(in) =e= xxd(in) ;
*demand block
inteq(i).. int(i) =e= sum(j, io(i,j)*xd(j) );
dsteq(i).. dst(i) =e= dstr(i)*xd(i) ;
cdeq(i).. p(i)*cd(i) =e= sum(hh, cles(i,hh)*(1-mps(hh))*yh(hh)
*(1-htax(hh)) ) ;
gdp.. y =e= sum(hh, yh(hh) ) ;
labory.. yh("lab-hh") =e= sum(lc, wa(lc)*ls(lc) ) + remit*er ;
capitaly.. yh("cap-hh") =e= sum(i, pva(i)*xd(i) ) - deprecia -
sum(lc, wa(lc)*ls(lc) ) + fbor*er + ypr ;
hhsaveq.. hhsav =e= sum(hh, mps(hh)*yh(hh)*(1 - htax(hh))) ;
greq.. gr =e= tariff - netsub + indtax +tothhtax ;
gruse.. gr =e= sum(i, p(i)*gd(i)) + govsav ;
gdeq(i).. gd(i) =e= gles(i)*gdtot ;
tariffdef.. tariff =e= sum(it, tm(it)*m(it)*pwm(it) )*er ;
indtaxdef.. indtax =e= sum(i, itax(i)*px(i)*xd(i) );
netsubdef.. netsub =e= sum(it, te(it)*e(it)*pwe(it) )*er ;
premium.. ypr =e= sum(it, pwm(it)*m(it) )*er*pr ;
hhtaxdef.. tothhtax =e= sum(hh, htax(hh)*yh(hh) ) ;
depreq.. deprecia =e= sum(i, depr(i)*pk(i)*k(i) ) ;
totsav.. savings =e= hhsav + govsav + deprecia + fsav*er ;
prodinv(i).. pk(i)*dk(i) =e= kio(i)*invest - kio(i)*sum(j, dst(j)*p(j)) ;
ieq(i).. id(i) =e= sum(j, imat(i,j)*dk(j));
*balance of payments
caeq.. sum(it, pwm(it)*m(it)) =e= sum(it, pwe(it)*e(it))
+ fsav + remit + fbor ;
*market clearing
equil(i).. x(i) =e= int(i) + cd(i) + gd(i) + id(i) + dst(i) ;
*objective function
obj.. omega =e= prod(i$cles(i,"lab-hh"),
cd(i)**cles(i,"lab-hh")) ;
er.fx = er.l ;
fsav.fx = fsav.l ;
remit.fx = remit.l ;
fbor.fx = fbor.l ;
pindex.fx = pindex.l ;
mps.fx(hh) = mps.l(hh) ;
gdtot.fx = gdtot.l ;
ls.fx(lc) = ls.l(lc) ;
model model1 square base model / all / ;
solve model1 using mcp;