HDVassets.gms (9.88 KB)
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:
- Is using a numeraire good appropriate with this small type of model?
- Did I mess up with the CES production function or is it an income equation problem, or something else?
- 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:
* 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 /;