two3mac.gms : Simple 2 x 2 x 2 General Equilibrium Model Using Macros
This is the TWO3MCP model written using macros. The documentaion
of GAMS-F uses this model as example 7.
Reference: Shoven and Whalley: "Applied G.E. Models"
Journal of Economic Literature, XXII (1984)
Reference:
- Shoven, J, and Whalley, J, Applied G.E. Models. Journal of Economic Literature 22 (1984).
Small Model of Type: MCP
$stitle Simple 2 x 2 x 2 General Equilibrium Model Using Macros (TWO3MAC,SEQ=341)
* This is the TWO3MCP model written using macros. The documentaion
* of GAMS-F uses this model as example 7.
* Reference: Shoven and Whalley: "Applied G.E. Models"
* Journal of Economic Literature, XXII (1984)
sets
f factors /labor, capital/
s sectors /mfrs, nonmfrs/
h households /rich, poor/;
alias (h,k), (s,ss), (f,ff);
*
* demand function parameters.
*
parameter sigmac(h)
/ rich 1.5 , poor 0.75/;
table alpha(s,h)
rich poor
mfrs 0.5 0.3
nonmfrs 0.5 0.7;
table e(f,h) endowment
rich poor
labor 60
capital 25
*
* production function parameters.
*
parameter phi(s)
/ mfrs 1.5, nonmfrs 2.0 /;
table delta(f,s)
mfrs nonmfrs
labor 0.6 0.7
capital 0.4 0.3;
parameter sigma(s)
/ mfrs 2.0, nonmfrs 0.5/;
parameter tshr(h) share of tax revenue /rich 0.4, poor 0.6/,
t(f,s) ad-valorem tax rates;
$macro PF(f,s) (W[f]*(1+t[f,s]))
$macro COST(s) sum{f.local, delta[f,s]**sigma[s]*PF(f,s)**(1-sigma[s])}**(1/(1-sigma[s]))/phi[s]
$macro FD(f,s) (delta[f,s]*COST(s)/PF(f,s))**sigma[s]
$macro TAX(s) sum{f.local, t[f,s]*W[f]*Y[s]*FD(f,s)}
$macro INCOME(h) (sum{f, e[f,h]*W[f]} + tshr[h]*sum{s.local, TAX(s)})
$macro D(s,h) INCOME(h)*alpha[s,h]*sum{s.local, alpha[s,h]*P[s]**(sigmac[h]-1)}*P[s]**(-sigmac[h])
positive
variables
w(f) factor price,
p(s) commodity price,
y(s) production level;
equations
fmkt(f) factor market,
cmkt(s) commodity market,
profit(s) zero profit;
fmkt(f).. sum(h, e(f,h)) =g= sum(s, FD(f,s)*Y(s));
cmkt(s).. Y(s) =g= sum(h, D(s,h));
profit(s).. COST(s) =g= P(s);
parameter DL(s,h);
model jel / fmkt.w, cmkt.p, profit.y/;
* compute solution for this dimension problem:
w.lo(f) = 0.0001;
p.lo(s) = 0.0001;
w.l(f) = 1;
p.l(s) = 1;
y.l(s) = 1;
* Use labor as numeraire:
w.fx("labor") = 1;
t(f,s) = 0;
* solve the reference case:
solve jel using mcp;
$onDotL
dl(s,h) = d(s,h); display dl;
* apply tax in test problem:
t("capital","mfrs") = 0.5;
solve jel using mcp;
dl(s,h) = d(s,h); display dl;