moncge.gms : A Monopoly CGE Model


No description.


  • Hosoe, N, Gasawa, K, and Hashimoto, H, Handbook of Computible General Equilibrium Modeling. University of Tokyo Press, Tokyo, Japan, 2004.

Small Model of Type : NLP

Category : GAMS Model library

Main file : moncge.gms

$ Title A Monopoly CGE Model in Ch. 10.4 (MONCGE,SEQ=279)

No description.

Hosoe, N, Gasawa, K, and Hashimoto, H
Handbook of Computible General Equilibrium Modeling
University of Tokyo Press, Tokyo, Japan, 2004

* Definition of sets for suffix ---------------------------------------
Set     u       SAM entry     /BRD, MLK, CAP, LAB, IDT, TRF, HOH, GOV,
                               INV, EXT/
        i(u)    goods         /BRD, MLK/
        h(u)    factor        /CAP, LAB/;
Alias (u,v), (i,j), (h,k);
* ---------------------------------------------------------------------

* Loading data --------------------------------------------------------
Table   SAM(u,v)        social accounting matrix
        BRD     MLK     CAP     LAB     HOH
BRD     21      8                       20
MLK     17      9                       30
CAP     20      30
LAB     15      25
HOH                     50      40
GOV                                     23
INV                                     17
IDT     5       4
TRF     1       2
EXT     13      11

+       GOV     INV     IDT     TRF     EXT
BRD     19      16                      8
MLK     14      15                      4
GOV                     9       3
INV     2                               12
* Loading the initial values ------------------------------------------
Parameter       sigma(i)        elasticity of substitution
                psi(i)          elasticity of transformation
                eta(i)          substitution elasticity parameter
                phi(i)          transformation elasticity parameter
psi(i)  =2;
eta(i)  =(sigma(i)-1)/sigma(i);
phi(i)  =(psi(i)+1)/psi(i);

Parameter       Y0(j)           composite factor
                F0(h,j)         the h-th factor input by the j-th firm
                X0(i,j)         intermediate input
                Z0(j)           output of the j-th good
                Xp0(i)          household consumption of the i-th good
                Xg0(i)          government consumption
                Xv0(i)          investment demand
                E0(i)           exports
                M0(i)           imports
                Q0(i)           Armington's composite good
                D0(i)           domestic good
                Sp0             private saving
                Sg0             government saving
                Td0             direct tax
                Tz0(j)          production tax
                Tm0(j)          import tariff
                RT0(j)          monopoly rent

                FF(h)           factor endowment of the h-th factor
                Sf              foreign saving in US dollars
                pWe(i)          export price in US dollars
                pWm(i)          import price in US dollars
                tauz(i)         production tax rate
                taum(i)         import tariff rate
Td0     =SAM("GOV","HOH");
Tz0(j)  =SAM("IDT",j);
Tm0(j)  =SAM("TRF",J);
X0(i,j) =SAM(i,j);
M0(i)   =SAM("EXT",i);
Xp0(i)  =SAM(i,"HOH");
Xg0(i)  =SAM(i,"GOV");
Xv0(i)  =SAM(i,"INV");
E0(i)   =SAM(i,"EXT");
taum(j) =Tm0(j)/M0(j);
Q0(i)   =Xp0(i)+Xg0(i)+Xv0(i)+sum(j, X0(i,j));
D0(i)   =(Q0(i)-(1+taum(i))*M0(i))/(1/eta(i));
RT0(j)  =(1-eta(j))/eta(j)*D0(j);
F0(h,j) =SAM(h,j)-SAM(h,j)/sum(k, SAM(k,j))*RT0(j);
FF(h)   =sum(j, F0(h,j));
Y0(j)   =sum(h, F0(h,j));
Z0(j)   =Y0(j) +sum(i,X0(i,j));
tauz(j) =Tz0(j)/Z0(j);
Sp0     =SAM("INV","HOH");
Sg0     =SAM("INV","GOV");
Sf      =SAM("INV","EXT");

pWe(i)  =1;
pWm(i)  =1;

Display Y0,F0,X0,Z0,Xp0,Xg0,Xv0,E0,M0,Q0,D0,Sp0,Sg0,Td0,Tz0,Tm0,RT0,
* Calibration ---------------------------------------------------------

Parameter       alpha(i)        share parameter in utility func.
                beta(h,j)       share parameter in production func.
                b(j)            scale parameter in production func.
                ax(i,j)         intermediate input requirement coeff.
                ay(j)           composite fact. input req. coeff.
                mu(i)           government consumption share
                lambda(i)       investment demand share
                deltam(i)       share parameter in Armington func.
                deltad(i)       share parameter in Armington func.
                gamma(i)        scale parameter in Armington func.
                xid(i)          share parameter in transformation func.
                xie(i)          share parameter in transformation func.
                theta(i)        scale parameter in transformation func.
                ssp             average propensity for private saving
                ssg             average propensity for government saving
                taud            direct tax rate

alpha(i)=Xp0(i)/sum(j, Xp0(j));
beta(h,j)=F0(h,j)/sum(k, F0(k,j));
b(j)    =Y0(j)/prod(h, F0(h,j)**beta(h,j));

ax(i,j) =X0(i,j)/Z0(j);
ay(j)   =Y0(j)/Z0(j);
mu(i)   =Xg0(i)/sum(j, Xg0(j));



ssp     =Sp0/(sum(h, FF(h))+sum(j, RT0(j)));
ssg     =Sg0/(Td0+sum(j, Tz0(j))+sum(j, Tm0(j)));
taud    =Td0/(sum(h, FF(h))+sum(j, RT0(j)));

Display alpha,beta,b,ax,ay,mu,lambda,deltam,deltad,gamma,xie,
* ---------------------------------------------------------------------

* Defining model system -----------------------------------------------
Variable        Y(j)            composite factor
                F(h,j)          the h-th factor input by the j-th firm
                X(i,j)          intermediate input
                Z(j)            output of the j-th good
                Xp(i)           household consumption of the i-th good
                Xg(i)           government consumption
                Xv(i)           investment demand
                E(i)            exports
                M(i)            imports
                Q(i)            Armington's composite good
                D(i)            domestic good

                pf(h)           the h-th factor price
                py(j)           composite factor price
                pz(j)           supply price of the i-th good
                pq(i)           Armington's composite good price
                pe(i)           export price in local currency
                pm(i)           import price in local currency
                pd(i)           the i-th domestic good price
                epsilon         exchange rate

                Sp              private saving
                Sg              government saving
                Td              direct tax
                Tz(j)           production tax
                Tm(i)           import tariff
                RT(j)           monopoly rent

                UU              utility [fictitious]
Equation        eqpy(j)         composite factor aggregation func.
                eqX(i,j)        intermediate demand function
                eqY(j)          composite factor demand function
                eqF(h,j)        factor demand function
                eqpzs(j)        unit cost function

                eqTd            direct tax revenue function
                eqTz(j)         production tax revenue function
                eqTm(i)         import tariff revenue function
                eqXg(i)         government demand function

                eqXv(i)         investment demand function
                eqSp            private saving function
                eqSg            government saving function

                eqXp(i)         household demand function
                eqRT(j)         monopoly rent function

                eqpe(i)         world export price equation
                eqpm(i)         world import price equation
                eqepsilon       balance of payments

                eqpqs(i)        Armington function
                eqM(i)          import demand function
                eqD(i)          domestic good demand function

                eqpzd(i)        transformation function
                eqDs(i)         domestic good supply function
                eqE(i)          export supply function

                eqpqd(i)        market clearing cond. for comp. good
                eqpf(h)         factor market clearing condition

                obj             utility function [fictitious]
*[domestic production] ----
eqpy(j)..       Y(j)    =e= b(j)*prod(h, F(h,j)**beta(h,j));
eqX(i,j)..      X(i,j)  =e= ax(i,j)*Z(j);
eqY(j)..        Y(j)    =e= ay(j)*Z(j);
eqF(h,j)..      F(h,j)  =e= beta(h,j)*py(j)*Y(j)/pf(h);
eqpzs(j)..      pz(j)   =e= ay(j)*py(j) +sum(i, ax(i,j)*pq(i));

*[government behavior] ----
eqTd..          Td      =e= taud*(sum(h, pf(h)*FF(h))+sum(j, RT(j)));
eqTz(j)..       Tz(j)   =e= tauz(j)*pz(j)*Z(j);
eqTm(i)..       Tm(i)   =e= taum(i)*pm(i)*M(i);
eqXg(i)..       Xg(i)   =e= mu(i)*(Td +sum(j, Tz(j)) +sum(j, Tm(j))

*[investment behavior] ----
eqXv(i)..       Xv(i)   =e= lambda(i)*(Sp +Sg +epsilon*Sf)/pq(i);

*[savings] ----------------
eqSp..          Sp      =e= ssp*(sum(h, pf(h)*FF(h))+sum(j, RT(j)));
eqSg..          Sg      =e= ssg*(Td +sum(j, Tz(j))+sum(j, Tm(j)));

*[household consumption] --
eqXp(i)..       Xp(i)   =e= alpha(i)*(sum(h, pf(h)*FF(h)) -Sp -Td
                            +sum(j, RT(j)))/pq(i);
eqRT(j)..       RT(j)   =e= (1-eta(j))/eta(j)*pd(j)*D(j);

*[international trade] ----
eqpe(i)..       pe(i)   =e= epsilon*pWe(i);
eqpm(i)..       pm(i)   =e= epsilon*pWm(i);
eqepsilon..     sum(i, pWe(i)*E(i)) +Sf
                        =e= sum(i, pWm(i)*M(i));

*[Armington function] -----
eqpqs(i)..      Q(i)    =e= gamma(i)*(deltam(i)*M(i)**eta(i)
eqM(i)..        M(i)    =e= (gamma(i)**eta(i)*deltam(i)*pq(i)
eqD(i)..        D(i)    =e= (gamma(i)**eta(i)*deltad(i)*pq(i)

*[transformation function] -----
eqpzd(i)..      Z(i)    =e= theta(i)*(xie(i)*E(i)**phi(i)+xid(i)
eqE(i)..        E(i)    =e= (theta(i)**phi(i)*xie(i)*(1+tauz(i))*pz(i)
eqDs(i)..       D(i)    =e= (theta(i)**phi(i)*xid(i)*(1+tauz(i))*pz(i)

*[market clearing condition]
eqpqd(i)..      Q(i)    =e= Xp(i) +Xg(i) +Xv(i) +sum(j, X(i,j));
eqpf(h)..       sum(j, F(h,j)) =e= FF(h);

*[fictitious objective function]
obj..           UU      =e= prod(i, Xp(i)**alpha(i));
* ---------------------------------------------------------------------

* Initializing variables ----------------------------------------------
Y.l(j)  =Y0(j);
Z.l(j)  =Z0(j);
Xp.l(i) =Xp0(i);
Xg.l(i) =Xg0(i);
Xv.l(i) =Xv0(i);
E.l(i)  =E0(i);
M.l(i)  =M0(i);
Q.l(i)  =Q0(i);
D.l(i)  =D0(i);
pf.l(h) =1;
py.l(j) =1;
pz.l(j) =1;
pq.l(i) =1;
pe.l(i) =1;
pm.l(i) =1;
pd.l(i) =1;
Sp.l    =Sp0;
Sg.l    =Sg0;
Td.l    =Td0;
Tz.l(j) =Tz0(j);
Tm.l(i) =Tm0(i);
RT.l(j) =RT0(j);
* ---------------------------------------------------------------------

* Setting lower bounds to avoid division by zero ----------------------
Y.lo(j) =0.00001;
Z.lo(j) =0.00001;
E.lo(i) =0.00001;
M.lo(i) =0.00001;
Q.lo(i) =0.00001;
D.lo(i) =0.00001;
pf.lo(h) =0.00001;
Sp.lo   =0.00001;
Sg.lo   =0.00001;
Td.lo   =0.00001;
* ---------------------------------------------------------------------
* numeraire ---
* ---------------------------------------------------------------------
* Defining and solving the model --------------------------------------
Model moncge /all/;
Solve moncge maximizing UU using nlp;

* ---------------------------------------------------------------------
* Simulation Runs: Abolition of Import Tariffs
taum(i)=0; option bratio=1;
Solve moncge maximizing UU using nlp;
* ---------------------------------------------------------------------

* Display of changes --------------------------------------------------

dY(j)  =(Y.l(j)  /Y0(j)  -1)*100;
dZ(j)  =(Z.l(j)  /Z0(j)  -1)*100;
dXp(i) =(Xp.l(i) /Xp0(i) -1)*100;
dXg(i) =(Xg.l(i) /Xg0(i) -1)*100;
dXv(i) =(Xv.l(i) /Xv0(i) -1)*100;
dE(i)  =(E.l(i)  /E0(i)  -1)*100;
dM(i)  =(M.l(i)  /M0(i)  -1)*100;
dQ(i)  =(Q.l(i)  /Q0(i)  -1)*100;
dD(i)  =(D.l(i)  /D0(i)  -1)*100;
dpf(h) =(pf.l(h) /1 -1)*100;
dpy(j) =(py.l(j) /1 -1)*100;
dpz(j) =(pz.l(j) /1 -1)*100;
dpq(i) =(pq.l(i) /1 -1)*100;
dpe(i) =(pe.l(i) /1 -1)*100;
dpm(i) =(pm.l(i) /1 -1)*100;
dpd(i) =(pd.l(i) /1 -1)*100;
depsilon=(epsilon.l/1 -1)*100;
dTd    =(Td.l    /Td0    -1)*100;
dTz(j) =(Tz.l(j) /Tz0(j) -1)*100;
dTm(i) =(Tm.l(i) /Tm0(i) -1)*100;
dSp    =(Sp.l    /Sp0    -1)*100;
dSg    =(Sg.l    /Sg0    -1)*100;


* Welfare measure: Hicksian equivalent variations ---------------------
Parameter       UU0             utility level in the Base Run Eq.
                ep0             expenditure func. in the Base Run Eq.
                ep1             expenditure func. in the C-f Eq.
                EV      Hicksian equivalent variations
UU0     =prod(i, Xp0(i)**alpha(i));
ep0     =UU0 /prod(i,(alpha(i)/1)**alpha(i));
ep1     =UU.l/prod(i, (alpha(i)/1)**alpha(i));
EV      =ep1-ep0;

Display EV;
* ---------------------------------------------------------------------
* end of model --------------------------------------------------------
* ---------------------------------------------------------------------