Help needed understanding and creating small CGE model

Problems with modeling
Post Reply
MikkelKromann
User
User
Posts: 1
Joined: 2 years ago

Help needed understanding and creating small CGE model

Post by MikkelKromann »

HDVassets.gms
(9.88 KiB) Downloaded 158 times
Hi GAMS people.

I've been using a couple of days of my summer holiday to brush off the CGE stuff I was taught in university 20 years ago.
Besides understanding, another goal is to learn nested CES production functions well enough to be able to use it for a partial equilibrium problem I want to investigate.

WHAT I DID:
I started with the GAMS model library no. 275 "A simple CGE model".
I changed the variable naming to make it better reflect Tom Rutherford's 2002 lecture note on CES which I tried to rely on.
(D indicates demand, S supply, P price, X is consumer good, F is factor, t is tax. Variables are capitalised, parameters and sets small letters, zeroes indicate base year data)
I revised it to also include CES both in consumption and production.
I've made the model run as NLP, CNS and MCP.
I added a value tax on consumption and one on factor use.
The equations are pasted in below, see attached gms file for full details.

WHAT WORKS:
The baseline replicates both with Cobb Douglas and CES in both production and consumption - nice!
The CES part in consumption seems to give reasonable results, i.e. with sigma close to 1 the CES results are very close to the Cobb-Douglas case - good!

WHAT DOES NOT WORK:
* I have difficulties understanding / remembering how to handle the numeraire.
Including and excluding a numeraire gives slightly different real results for CES consumption, which certainly does not decrease my confusion.
* When I test the CES production function the Cobb-Douglass and CES with sigma close to 1 gives somewhat different results (2% real consumption difference).
Setting a numeraire, neither NLP, CNS nor MCP is able to arrive at a solution.
Without numeraire all three models types solve for CES in production and with a factor tax, but the results confuses me somewhat.
A 10% value tax on labour seems to have no effect on consumption pattern, even thought the two goods produced have different L/K shares.
On the other hand, I could be convinced that the L-tax just inflates the K-price, since I have no government sector to use the tax revenue.
I've hammered my code for two days, but I'm out of ideas. The CES stuff looks right, but possibly I have a deeper problem in the income equation?

MY QUESTIONS:
1) Is using a numeraire good appropriate with this small type of model?
2) Did I mess up with the CES production function or is it an income equation problem, or something else?
3) In the original model no. 275 "SPLCGE", both an objective function (utility) and a first order goods demand function is included.
I recall that the NLP approach calls for utility function + budget constraints, while CNS/MCP is first order conditions plus income equation.
Do I remember that incorrectly?


thanks + cheers, Mikkel

EQUATION PART OF MODEL:

Code: Select all

* Utility function (NLP optimisation only)
obj..
    UU      =e= ( prod(x, DX(x)**thetaX(x))                                             )$(sigmaX eq 1)
               +( u0*(sum(x, thetaX(x)*DX(x)**rhoX) )**(1/rhoX)                         )$(sigmaX ne 1)
;
* Budget constraint: expenditure on goods may not exceed income (NLP optimisation only)
eqB..
    M       =e= sum(x, dx0(x)*DX(x)*PX(x)*(1+tx(x)))
;
* Income definition, consumers: Factor income and taxes - associates to income
INC_M..
    M       =e= sum(f, PF(f)*(1+tf(f))*sf0(f)) + sum(x, tx(x)*PX(x)*DX(x)*dx0(x))
;
* Cost index definition, aggregate good - associates to goods cost index
DEF_CX..
    CX      =e= ( sum(x, thetaX(x)*(PX(x)*(1+tx(x))))                                   )$(sigmaX eq 1)
               +( sum(x, thetaX(x)*(PX(x)*(1+tx(x)))**(1-sigmaX))**(1/(1-sigmaX))       )$(sigmaX ne 1)
;
* Cost index definition, aggregate factor - associates to factor cost index
DEF_CF(x)..
    CF(x)   =e= ( sum(f, thetaF(f,x)*(PF(f)*(1+tf(f))))                                 )$(sigmaF eq 1)
               +( sum(f, thetaF(f,x)*(PF(f)*(1+tf(f)))**(1-sigmaF))**(1/(1-sigmaF))     )$(sigmaF ne 1)
;
* Zero profit condition goods markets - gives good demands as first order conditions - associates to goods demand
ZPC_DX(x)..
    DX(x)   =e= ( thetaX(x)*M/(dx0(x)   ) *( 1/(PX(x)*(1+tx(x))))                       )$(sigmaX eq 1)
               +( thetaX(x)*M/(dx0(x)*CX) *(CX/(PX(x)*(1+tx(x))))**sigmaX               )$(sigmaX ne 1)  
;
* Zero profit condition goods markets - gives factor demands as first order conditions - associates to factor demand
ZPC_DF(f,x)..
    DF(f,x) =e= ( DX(x) *  PX(x)/(PF(f)*(1+tf(f)))                                      )$(sigmaF eq 1)
               +( DX(x) * (CF(x)/(PF(f)*(1+tf(f))))**sigmaF                             )$(sigmaF ne 1)
;
* Goods market equilibrium - associates to goods prices
EQM_PX(x)..
    DX(x)   =e= ( prod(f, DF(f,x)**thetaF(f,x))                                         )$(sigmaF eq 1)
               +( sum(f, thetaF(f,x)*DF(f,x)**rhoF )**(1/rhoF)                          )$(sigmaF ne 1)
;
* Factor market equilibrium - associates to factor prices
EQM_PF(f)$(not numeraire(f))..
    sf0(f)  =e= sum(x,df0(f,x)*DF(f,x))
;
PF.fx(f)$numeraire(f) = 1;

model splcgeNLP / obj, eqB, INC_M,   DEF_CX,    DEF_CF,    ZPC_DX,    ZPC_DF,    EQM_PX,    EQM_PF /;
model splcgeCNS /           INC_M,   DEF_CX,    DEF_CF,    ZPC_DX,    ZPC_DF,    EQM_PX,    EQM_PF /;
model splcgeMCP /           INC_M.M, DEF_CX.CX, DEF_CF.CF, ZPC_DX.DX, ZPC_DF.DF, EQM_PX.PX, EQM_PF.PF /;

Economist, consultant
Rational Resource Economics
www.rationalresourceeconomics.dk
Post Reply