nsmge.gms : North-South trade and capital flows
North-South Trade and Capital Flows
Reference:
- Manne, A S, and Preckel, P V, North-South Trade, Capital Flows and Economic Growth: An Almost Neoclassical Model. In Syrquin, M, Ed, Economic Structure and Performance: Essays in Honor of Hollis B. Chenery. Academic Press, 1984.
Large Model of Types: MPSGE mcp
$TITLE North-South Trade and Capital Flows (NSMGE,SEQ=150)
$Ontext
North-South Trade and Capital Flows
Manne, A S, and Preckel, P V, North-South Trade, Capital Flows and
Economic Growth: An Almost Neoclassical Model. In Syrquin, S, Taylor, L,
and Westphal, L E, Eds, Economic Structure and Performance. Academic
Press, 1984.
$Offtext
SET T TIME PERIODS /T1*T11/;
SET R REGIONS /N,S/,
NORTH(R) CAPITAL EXPORTING REGION,
SOUTH(R) CAPITAL IMPORTING REGION,
IP(T) ENDOGENOUS INVESTMENT PERIOD (ALL BUT FINAL),
TFIRST(T) FIRST PERIOD,
TLAST(T) FINAL PERIOD;
ALIAS (TT,T), (R,RR);
TLAST(T) = YES$(ORD(T) EQ CARD(T));
TFIRST(T) = YES$(ORD(T) EQ 1);
IP(T) = YES$(ORD(T) LT CARD(T));
NORTH("N") = YES;
SOUTH("S") = YES;
PARAMETER
GNP0(R) Benchmark gross output /N 6.142, S 0.914/,
BMROR(R) Benchmark rates of return /N 0.05, S 0.10/,
DELTA(R) Capital depreciation rates /N 0.04, S 0.04/,
GAMMA(R) Potential growth rates /N 0.03, S 0.05/,
THETA(R) One period discount factors /N 0.95, S 0.89/,
KRATIO(R) Capital:GDP ratio /N 3.0, S 3.00/,
X0(R) Benchmark export levels /N 0.138, S 0.095/
M0(R) Benchmark import levels,
DEF(T) Permissible deficit,
LS(R,T) Labor supply,
QREF(R,T)
PREF(R,T) Reference price (for scaling);
* ONE REGION'S EXPORTS IS THE OTHER REGION'S IMPORTS:
M0(R) = X0(R++1);
PARAMETER
PKBAR(R) Base year gross rate of return
K1(R) Base year capital stock
L1(R) Base year labor supply
SRVSHR(R) One period capital survival share;
PKBAR(R) = BMROR(R) + DELTA(R);
K1(R) = KRATIO(R) * (GNP0(R)-X0(R));
L1(R) = GNP0(R) - X0(R++1) - K1(R) * PKBAR(R);
* ONE PERIOD CAPITAL SURVIVAL SHARE:
SRVSHR(R) = 1 - 3 * DELTA(R);
PREF(R,T) = THETA(R)**(ORD(T)-1);
PREF(R,TLAST) = PREF(R,TLAST) / (1-THETA(R));
QREF(R,T) = (1+3*GAMMA(R))**(ORD(T)-1);
LS(R,T) = L1(R)*(1+3*GAMMA(R))**(ORD(T)-1)
$ONTEXT
$MODEL:NS
$COMMODITIES:
PU(R) ! Utility price index
PL(R,T) ! Wage index
PO(R,T) ! Output price index
PM(R,T) ! Import price index
PK(R,T) ! Capital price index
RK(R,T) ! Return to capital
$SECTORS:
U(R) ! Utility index
Y(R,T) ! Output index
X(R,T) ! Export index
K(R,T) ! Capital stock
I(R,T)$IP(T) ! Investment
$AUXILIARY:
TAU(T)$IP(T) ! Balance of payments premium
TAUL
$CONSUMERS:
RA(R) ! Representative agent
* MACRO PRODUCTION FUNCTIONS.
$PROD:Y(R,T) s:1
O:PO(R,T) Q:GNP0(R)
I:RK(R,T) Q:K1(R) P:PKBAR(R)
I:PL(R,T) Q:L1(R)
I:PM(R,T) Q:M0(R)
$PROD:X(R,T)
O:PM(RR,T)$(ORD(RR) NE ORD(R)) Q:X0(R)
I:PO(R,T) Q:X0(R) A:RA("S")
+ N:TAU(T)$IP(T) M:(-1$SOUTH(R)+1$NORTH(R))$IP(T)
+ N:TAUL M:(+1$SOUTH(R)-1$NORTH(R))
$PROD:K(R,T)
I:PK(R,T)
I:PO(R,T)$TLAST(T) Q:(GAMMA(R)+DELTA(R))
O:RK(R,T)
O:PK(R,T+1) Q:SRVSHR(R)
$PROD:I(R,T)$IP(T)
I:PO(R,T)
O:PK(R,T+1) Q:3
* UTILITY:
$PROD:U(R) s:1
O:PU(R) Q:(GNP0(R)*SUM(T,PREF(R,T)))
I:PO(R,T) Q:GNP0(R) P:PREF(R,T)
* ENDOWMENTS:
$DEMAND:RA(R)
E:PK(R,TFIRST) Q:K1(R)
E:PL(R,T) Q:LS(R,T)
D:PU(R)
* BALANCE OF PAYMENTS CONSTRAINT:
$CONSTRAINT:TAU(T)$IP(T)
X0("S") * X("S",T) * PO("S",T)
- X0("N") * X("N",T) * PO("N",T) =G= DEF(T)*PO("N",T);
* OVERALL TRADE BALANCE CONSTRAINT:
$CONSTRAINT:TAUL
SUM(T, X0("N") * X("N",T) * PO("N",T)) =G=
SUM(T, X0("S") * X("S",T) * PO("S",T));
$OFFTEXT
$SYSINCLUDE mpsgeset NS
* SPECIFY INITIAL ESTIMATES FOR PRICES AND OUTPUT LEVELS.
* BASED ON BALANCED GROWTH.
PO.L(R,T) = PREF(R,T);
PL.L(R,T) = PREF(R,T);
PK.L(R,T) = PREF(R,T);
RK.L(R,T) = PKBAR(R) * PREF(R,T);
Y.L(R,T) = QREF(R,T);
K.L(R,T) = K1(R) * QREF(R,T);
I.L(R,T) = (GAMMA(R)+DELTA(R)) * K.L(R,T);
* INITIAL GUESS AT RELATIVE INCOMES:
RA.L(R) = GNP0(R) * SUM(T, PREF(R,T));
* SPECIFY THE PERMISSIBLE DEFICIT:
DEF(T) = 0.043;
$ONTEXT
* OPTION "PRE-SOLVE" TO HELP OUT THE SOLUTION ALGORITHM.
* DYNAMIC MODELS CAN BE DIFFICULT TO SOLVE. ONE
* STRATEGY IS TO DO A "PRESOLVE" USING THE FIXED-INCOME
* RELAXATION. FOR THIS MODEL, WE DO THIS AS FOLLOWS:
RA.FX(R) = RA.L(R);
$INCLUDE NS.GEN
SOLVE NS USING MCP;
RA.UP(R) = +INF;
RA.LO(R) = 0;
$OFFTEXT
$INCLUDE NS.GEN
SOLVE NS USING MCP;
PARAMETER REPORT(T,*);
REPORT(T,"YEAR") = 3 * (ORD(T)-1);
REPORT(T,"PI_N") = PO.L("N",T) / PO.L("N","T1");
REPORT(T,"PI_S") = PM.L("N",T) / PO.L("N","T1");
REPORT(T,"PREM") = TAU.L(T)$IP(T) - TAUL.L;
DISPLAY REPORT;