I GOODS / A AGRICULTURAL GOOD
N INDUSTRIAL GOOD /
TP TIME PERIODS /0*50/
T(TP) CURRENT TIME PERIOD
;
*##PARAMETER DEFINITIONS
PARAMETER
AD(I) SHIFT PARAMETER IN PROD FUNC
ALFA(I) CES FUNCTION SHARE PARAMETER
CLES(I,HH) SECTORAL CONSUMPTION DEMAND BY HOUSEHOLDS
PW(I) WORLD PRICES
RHO(I) PRODUCTION EXPONENTIAL PARAMETER
SIGP(I) PRODUCTION FUNCTION ELASTICITY OF SUBSTITUTION
*DUMMIES TO HOLD INITIAL DATA
IG0(HH) HOUSEHOLD WEIGHTS IN THE SOCIAL WELFARE FUNCTION
K0(I) CAPITAL DEMAND IN SECTOR I
KSTAR(HH) HOUSEHOLD CAPITAL ENDOWMENT
LD0(I) SECTORAL LABOR DEMANDS
LSTAR(HH) HOUSEHOLD LABOR ENDOWMENT
P0(I) DOMESTIC PRICES
QS0(I) COMMODITY SUPPLIES
RP0(I) SECTORAL PROFITS
RK0(I) SECTORAL PROFIT RATE
V0(HH) HOUSEHOLD INDIRECT UTILITIES
WL0(I) SECTORAL WAGES
Y0(HH) HOUSEHOLD INCOME
;
SCALAR
W0 NOMINAL WAGE RATE
QX0 EXPORTS
QM0 IMPORTS
ER0 EXCHANGE RATE /1.0/
;
*TABLES TO DISPLAY RESULTS
PARAMETER
HOUSE(*,HH,TP) HOUSEHOLD RESULTS
PRODUCT(*,I,TP) PRODUCT MARKET RESULTS
SCALRES(*,TP) SCALAR RESULTS
RK(I)
PROFIT RATE AT PERIOD T
QDT(I,HH,TP) HOUSEHOLD DEMAND
TABLE
;
*##INITIAL DATA FROM SAM TABLE
TABLE MATBAL(*,I) MATERIAL BALANCES
A
N
PW 1
1
WL0 0.98600675
1.90298535
QS0 2.20599375
5.72100625
LD0 3.41297837
6.58702163
SIGP 0.8
0.4
;
TABLE HHINC(*,HH) HOUSEHOLD PARAMETERS
WHH
KHH
Y0 2.88899210 5.03800790
LSTAR 10.0
IG0 1.0
1.0
;
TABLE QD0(I,HH) HOUSEHOLD CONSUMPTION
WHH
KHH
A 2.16699407 2.51900395
N 0.72199803 2.51900395
;
*##MODEL CALIBRATION
PW(I) = MATBAL("PW",I);
P0(I) = ER0*PW(I);
LD0(I) = MATBAL("LD0",I) ;
*K0(I) = MATBAL("K0",I) ;
QS0(I) = MATBAL("QS0",I) ;
WL0(I) = MATBAL("WL0",I) ;
LSTAR(HH) = HHINC("LSTAR",HH) ;
*KSTAR(HH) = HHINC("KSTAR",HH) ;
*FIRST CALCULATE THE WAGE RATE
W0 = SUM(I, WL0(I) ) / SUM(HH, LSTAR(HH)) ;
*WE CALCULATE SECTORAL PROFITS BY DEDUCTING THE WAGE PAYMENTS
*FROM SECTORAL VALUE ADDED USING EULER'S LAW (OBSERVE THAT THE
*PRODUCTION FUNCTION IS CRTS).
RP0(I) = P0(I)*QS0(I) - WL0(I) ;
*THEN WE CALCULATE THE PROFIT RATE
K0(I) = RP0(I) ;
RK0(I) = RP0(I)/K0(I) ;
*##CALIBRATE THE PRODUCTION FUNCTION: CES(K,L)
SIGP(I) = MATBAL("SIGP",I);
RHO(I) = (1/SIGP(I))-1;
ALFA(I) = (K0(I)/LD0(I))**(-1-RHO(I))*(W0/RK0(I)) ;
ALFA(I) = 1/(1+ALFA(I)) ;
AD(I) = QS0(I) / ((ALFA(I)*K0(I)**(-RHO(I)) + (1-ALFA(I))*LD0(I)
**(-RHO(I)))**(-1/RHO(I)))
;
DISPLAY AD, ALFA, RHO;
*##CALCULATE HOUSEHOLD CONSUMPTION PARAMETERS
Y0(HH) = HHINC("Y0",HH) ;
CLES(I,HH) = P0(I)*QD0(I,HH) / Y0(HH) ;
DISPLAY CLES ;
*##(INDIRECT) UTILITY LEVELS
IG0(HH) = HHINC("IG0",HH);
V0(HH) = PROD(I, QD0(I,HH)**CLES(I,HH) ) ;
*##EXPORTS AND IMPORTS
QX0 = QS0("N") - SUM(HH, QD0("N",HH)) ;
QM0 = SUM(HH, QD0("A",HH)) - QS0("A") ;
*##VARIABLE DEFINITIONS
POSITIVE VARIABLE
PINDEX PRICE INDEX
ER NOMINAL EXCHANGE RATE
(CONVERSION FACTOR)
P(I) DOMESTIC PRICES
RP(I) SECTORAL PROFITS
QS(I) REAL OUTPUT SUPPLIES
LD(I) SECTORAL LABOR DEMANDS
K(I) SECTORAL CAPITAL DEMANDS
W NOMINAL WAGE RATE
Y(HH) HOUSEHOLD INCOME
V(HH) INDIRECT HOUSEHOLD UTILITY
IG(HH) HOUSEHOLD WEIGHTS ON THE SOCIAL WELFARE FUNCTION
QD(I,HH) REAL HOUSEHOLD DEMAND
;
VARIABLE
OMEGA SOCIAL WELFARE FUNCTION VALUE
QX REAL EXPORTS (EXCESS SUPPLY)
QM REAL IMPORTS (EXCESS DEMAND)
;
*##VARIABLE INITIALIZATIONS
P.L(I) = P0(I);
PINDEX.L= SUM(I, 0.5*P.L(I)) ;
QS.L(I) = QS0(I) ;
K.L(I) = K0(I) ;
LD.L(I) = LD0(I) ;
Y.L(HH) = Y0(HH) ;
QD.L(I,HH) = QD0(I,HH);
V.L(HH) = V0(HH);
IG.L(HH) = IG0(HH) ;
ER.L = ER0;
W.L = W0;
QX.L = QX0;
QM.L = QM0 ;
OMEGA.L = SUM(HH, IG.L(HH)*V.L(HH) ) ;
*##DISPLAY SAM VALUES (This will check our calibration method as well)
*SOLUTION VALUES AT TIME 0
T(TP) = NO;
T("0") = YES ;
RK(I) = (P.L(I)*QS.L(I)-W.L*LD.L(I)) / K.L(I) ;
SCALRES("WAGERATE",T) = W.L ;
SCALRES("EXPORTS",T) = QX.L;
SCALRES("IMPORTS",T) = QM.L;
SCALRES("SOCWELFARE",T) = OMEGA.L;
SCALRES("RELATIVEPR",T) = P.L("A")/P.L("N") ;
SCALRES("EXCRATE",T) = ER.L ;
PRODUCT("DOMPRICE",I,T) = P.L(I);
PRODUCT("WRLDPRICE",I,T)= PW(I) ;
PRODUCT("LABDEMAND",I,T) = LD.L(I);
PRODUCT("CAPITAL",I,T) = K.L(I);
PRODUCT("OUTPUT",I,T) = QS.L(I);
PRODUCT("KLRATIO",I,T) = K.L(I)/LD.L(I) ;
PRODUCT("PROFITS",I,T) = P.L(I)*QS.L(I)-W.L*LD.L(I) ;
PRODUCT("PROFITRATE",I,T) = RK(I);
HOUSE("INCOME",HH,T) = Y.L(HH);
HOUSE("UTILITY",HH,T) = V.L(HH);
HOUSE("WLFREWGHTS",HH,T) = IG.L(HH) ;
QDT(I,HH,T) = QD.L(I,HH);
*##EQUATION DEFINITIONS
EQUATION
INDEX PRICE NORMALIZATION RULE
PRICE DOMESTIC PRICES
PRODUCTION SUPPLY OF GOODS
LABOR DEMAND FOR LABOR
LMEQL LABOR MARKET EQUILIBRIUM
WINC WORKER HOUSEHOLD INCOME
KINC CAPITALIST HOUSEHOLD INCOME
UTILW WORKER-HOUSEHOLD INDIRECT UTILITY FUNCTION
UTILK CAPITALIST-HOUSEHOLD INDIRECT UTILITY
FUNCTION
DEMANDA HOUSEHOLD DEMAND FOR A GOOD
DEMANDN HOUSEHOLD DEMAND FOR N GOOD
EXPORT EXCESS SUPPLY
IMPORT EXCESS DEMAND
* TRDBAL TRADE BALANCE (omitted!!!,
by way of Walras'Law)
OBJ OBJECTIVE FUNCTION (TOTAL SOCIAL WELFARE)
;
*##EQUATION SPECIFICATIONS
INDEX.. SUM(I, P(I)*0.5) =E= PINDEX;
PRICE(I).. P(I) =E= PW(I)*ER ;
PRODUCTION(I).. QS(I) =E= AD(I) * ( ALFA(I)*K(I)**(-RHO(I))
+ (1-ALFA(I))*LD(I)**(-RHO(I)) )**(-1/RHO(I)) ;
LABOR(I).. LD(I) =E= ( (P(I)/W)*(1-ALFA(I))*AD(I)**(-RHO(I)) )
**SIGP(I)*QS(I) ;
LMEQL.. SUM(I, LD(I) ) =E= SUM(HH, LSTAR(HH)) ;
WINC.. Y("WHH") =E= SUM(I, W*LD(I));
KINC.. Y("KHH") =E= SUM(I, P(I)*QS(I)-W*LD(I) ) ;
UTILW.. V("WHH") =E= PROD(I, QD(I,"WHH")**CLES(I,"WHH")) ;
UTILK.. V("KHH") =E= PROD(I, QD(I,"KHH")**CLES(I,"KHH")) ;
DEMANDA(HH).. P("A")*QD("A",HH) =E= CLES("A",HH)*Y(HH) ;
DEMANDN(HH).. P("N")*QD("N",HH) =E= CLES("N",HH)*Y(HH) ;
EXPORT.. QX =E= QS("N") - SUM(HH, QD("N",HH) ) ;
IMPORT.. QM =E= SUM(HH, QD("A",HH) ) - QS("A") ;
*TRDBAL.. PW("N")*QX =E= PW("A")*QM ;
OBJ.. OMEGA =E= SUM(HH,IG(HH)*V(HH) ) ;
*##VARIABLE BOUNDS TO IMPROVE SOLUTION ALGORITHM
W.LO = 0.001;
P.LO(I) = 0.001;
*##MODEL RESTRICTIONS
*CAPITAL IS SECTOR SPECIFIC
K.FX(I) = K.L(I) ;
*HOUSEHOLDS HAVE NO CONTROL OVER SOCIAL WELFARE WEIGHTS
IG.FX(HH) = IG.L(HH) ;
*##PRICE NORMALIZATION
*CHOOSE ONE OF THE FOLLOWING AS NUMERAIRE
* PINDEX.FX = PINDEX.L;
ER.FX = ER.L ;
* P.FX("N")= P.L("N") ;
*##MODEL DEFINITION
MODEL GENEQM OPEN ECONOMY GENERAL EQUILIBRIUM MODEL /ALL/ ;
OPTIONS ITERLIM =1000, LIMROW = 0, LIMCOL = 0, SOLPRINT = OFF;
geneqm.holdfixed = 1;
geneqm.optfile = 1;
SOLVE GENEQM MAXIMIZING OMEGA USING NLP;
* SOLVE GENEQM USING MCP ;
*SOLUTION VALUES AT TIME 1
T(TP) = NO;
T("1") = YES ;
RK(I) = (P.L(I)*QS.L(I)-W.L*LD.L(I)) / K.L(I) ;
SCALRES("WAGERATE",T) = W.L ;
SCALRES("EXPORTS",T) = QX.L;
SCALRES("IMPORTS",T) = QM.L;
SCALRES("SOCWELFARE",T) = OMEGA.L;
SCALRES("RELATIVEPR",T) = P.L("A")/P.L("N") ;
SCALRES("EXCRATE",T) = ER.L ;
PRODUCT("DOMPRICE",I,T) = P.L(I);
PRODUCT("WRLDPRICE",I,T)= PW(I) ;
PRODUCT("LABDEMAND",I,T) = LD.L(I);
PRODUCT("CAPITAL",I,T) = K.L(I);
PRODUCT("OUTPUT",I,T) = QS.L(I);
PRODUCT("KLRATIO",I,T) = K.L(I)/LD.L(I) ;
PRODUCT("PROFITS",I,T) = P.L(I)*QS.L(I)-W.L*LD.L(I) ;
PRODUCT("PROFITRATE",I,T) = RK(I);
HOUSE("INCOME",HH,T) = Y.L(HH);
HOUSE("UTILITY",HH,T) = V.L(HH);
HOUSE("WLFREWGHTS",HH,T) = IG.L(HH) ;
QDT(I,HH,T) = QD.L(I,HH);
DISPLAY SCALRES, PRODUCT, HOUSE, QDT ;
*##*##*##**END OF PROGRAM*##*##*##*##**