two3emp.gms : EMP Formulation of Simple 2 x 2 x 2 General Equilibrium Model

Description

This is the TWO3MCP model formulated using GAMS/EMP.

Reference:  Shoven and Whalley: "Applied G.E. Models"
            Journal of Economic Literature, XXII (1984)


Small Model of Type : EQUIL


Category : GAMS EMP library


Main file : two3emp.gms

$title EMP Formulation of Simple 2 x 2 x 2 General Equilibrium Model (TWO3EMP,SEQ=68)

$onText
This is the TWO3MCP model formulated using GAMS/EMP.

Reference:  Shoven and Whalley: "Applied G.E. Models"
            Journal of Economic Literature, XXII (1984)
$offText

sets
        f  factors    /labor, capital/
        s  sectors    /mfrs,  nonmfrs/
        h  households /rich,  poor/;

*
*       demand function parameters.
*
parameter sigmac(h)
       / rich    1.5 ,  poor    0.75/;

parameter rhoc(h)       primal elasticity parameter;
rhoc(h) = (sigmac(h)-1)/sigmac(h);

table alpha(s,h)
                rich    poor
        mfrs    0.5     0.3
        nonmfrs 0.5     0.7;

table e(f,h)
                rich    poor
        labor             60
        capital   25
*
*       production function parameters.
*
parameter phi(s)
        / mfrs 1.5,  nonmfrs 2.0 /;

table delta(f,s)        factor share coefficients
                        mfrs    nonmfrs
        labor           0.6     0.7
        capital         0.4     0.3;

parameter sigma(s)      elasticities of factor substitution
      /  mfrs 2.0,   nonmfrs 0.5/;

parameter       tshr(h) share of tax revenue,
                t(f,s)  ad-valorem tax rates;

tshr(h) = 0;
t(f,s) = 0;

parameter rho(s)        primal form elasticity parameter;
rho(s) = (sigma(s)-1)/sigma(s);

positive
variables
        W(f)    factor price,
        P(s)    commodity price,
        Y(s)    production level,
        C(s)    Marginal cost of production,
        X(f,s)  Conditional factor demands,
        D(s,h)  Final demands for goods
variables
        I(h)    income;

equations
        fmkt(f)         factor market,
        cmkt(s)         commodity market,
        profit(s)       zero profit,
        income(h)       income equation;

*       Factor supply (endowments) equals factor demand:

fmkt(f)..       sum(h, e(f,h)) =g= sum(s, Y(s) * X(f,s));

*       Commodity output equals commodity demand:

cmkt(s)..       Y(s) =g= sum(h, D(s,h));

*       Unit cost equals market price:

profit(s)..     C(s) =g= P(s);

*       Income equals factor earnings plus redistributed tax revenue:

income(h)..     I(h) =e= sum(f, E(f,h)*w(f)) + TSHR(h)*sum((s,f), t(f,s) * W(f) * Y(s) * X(f,s));


*       The following define conditional factor demands and final demand
*       based on a primal representation of individual optimization problems:

equations       DEFCOST(s)      Defines unit cost of production,
                DEFUTIL(h)      Defines household utility
                ISOQUANT(s)     Requires that factor demands are feasible
                BUDGET(h)       Defines budgetary consistency;

variables       COST(s)         Unit cost function
                UTILITY(h)      Household utility;

defcost(s)..    COST(s) =e= sum(f, (1 + t(f,s)) * W(f) * X(f,s));

defutil(h)..    UTILITY(h) =e= sum(s, alpha(s,h)**(1/sigmac(h)) * D(s,h)**rhoc(h))**(1/rhoc(h));

isoquant(s)..   phi(s) * sum(f, delta(f,s) * X(f,s)**rho(s))**(1/rho(s)) =g= 1;

budget(h)..     sum(s, P(s) * D(s,h)) =l= I(h);

model jel / defcost, defutil, isoquant, budget, fmkt, cmkt, profit, income/;

*       compute solution for this dimension problem:

W.lo(f) = 0.0001;
P.lo(s) = 0.0001;
X.lo(f,s) = 0.0001;
D.lo(s,h) = 0.0001;

W.l(f) = 1;
P.l(s) = 1;
Y.l(s) = 10;
I.l(h) = sum(f, W.L(f) * e(f,h));
X.l(f,s) = 1;
D.l(s,h) = 1;

*       Fix a numeraire - we really need this to solve

W.fx("labor") = 1;

file myinfo / '%emp.info%' /;
put myinfo '* Shoven & Whalley 1984';
put / 'equilibrium' /;
loop(s,
  put 'min' COST(s) /;
  loop(f, put X(f,s));
  put / DEFCOST(s) ISOQUANT(s) /;
);
loop(h,
  put 'max' UTILITY(h) /;
  loop(s, put D(s,h));
  put / DEFUTIL(h) BUDGET(h) /;
);
put / 'vi INCOME I'/;
put 'vi CMKT P'/;
put 'vi PROFIT Y'/;
put 'vi FMKT W'/;
put 'dualvar C ISOQUANT'/;
putclose;

* Find a good starting point by fixing incomes
I.fx(h) = sum(f, E(f,h)*w.l(f));
solve jel using emp;

* Now solve real problem
I.lo(h) = -inf; I.up(h) = inf;
solve jel using emp;

*       apply tax in test problem:
tshr("rich") = 0.4;
tshr("poor") = 1 - tshr("rich");
t("capital","mfrs") = 0.5;
solve jel using emp;