-
Notifications
You must be signed in to change notification settings - Fork 0
/
melitz.gms
124 lines (102 loc) · 4.21 KB
/
melitz.gms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
$Title Melitz Trade Equilibrium with Iceberg Costs
*Edward J. Balistreri, Colorado School of Mines ([email protected])
*Thomas F. Rutherford, ETH Z\"{u}rich ([email protected]).
*March 2011
*Warning: This partial equilibrium illustrative model does not
* include a logical constraint to ensure M > N.
Set
r countries or regions /R1,R2,R3/
h goods /G1/;
Alias (r,s);
Parameters
sig elasticity of substitution /3.8/,
eta demand elasticity /2/,
mu supply elasticity /0.5/,
a Pareto shape parameter /4.6/,
b Pareto lower support /0.5/,
Q0(h,r) benchmark aggregate quantity,
P0(h,r) benchmark price index,
M0(h,r) benchmark number of entered firms,
N0(h,r,s) benchmark number of operating firms,
qf0(h,r,s) benchmark avg firm-level quantity,
pf0(h,r,s) benchmark avg firm-level pricing (gross),
phi0(h,r,s) benchmark avg productivity
c0(h,r) benchmark input cost,
Y0(h,r) benchmark input supply,
fc(h,r,s) bilateral fixed costs,
delt_fs(h,r) annualized sunk cost,
tau(h,r,s) iceberg transport cost factor,
vx0(h,r,s) arbitrary benchmark export values
;
c0(h,r) = 1;
vx0(h,r,s) = 1;
vx0(h,r,r) = 3;
Y0(h,r) = sum(s, vx0(h,r,s))/c0(h,r);
M0(h,r) = 10;
N0(h,r,r) = 9;
N0(h,r,s) = (vx0(h,r,s)/vx0(h,r,r))**2 * N0(h,r,r);
* Calibrate the sunk cost based on free entry
delt_fs(h,r)= Y0(h,r)/M0(h,r) * (sig-1)/(a*sig);
* Calibrate the fixed cost based on zero cutoff profit
fc(h,r,s) = vx0(h,r,s)/(N0(h,r,s)*c0(h,r)) * (a + 1 - sig)/(a*sig);
P0(h,r) = 1;
Q0(h,r) = sum(s, vx0(h,s,r))/P0(h,r);
pf0(h,r,s) = (vx0(h,r,s)/(N0(h,r,s)*Q0(h,s)))**(1/(1-sig));
qf0(h,r,s) = Q0(h,s)*pf0(h,r,s)**(-sig);
phi0(h,r,s)= b * (a/(a+1-sig))**(1/(sig-1)) *
(N0(h,r,s)/M0(h,r))**(-1/a);
tau(h,r,s) = (1-1/sig)*pf0(h,r,s)*phi0(h,r,s)/c0(h,r);
display N0,tau;
Positive Variables
Q(h,r) Composite Quantity,
P(h,r) Composite price index,
M(h,r) Number of Entered firms
N(h,r,s) Number of Operating firms (varieties)
QF(h,r,s) Avg Firm output in s-market
PF(h,r,s) Avg Firm (gross) pricing in s-market
PHI(h,r,s) Avg Firm productivity
c(h,r) Composite input price (marginal cost),
Y(h,r) Composite input supply (output);
Equations
DEM(h,r) Aggregate demand,
DS(h,r) Dixit-Stiglitz price index,
FE(h,r) Free entry,
ZCP(h,r,s) Zero cutoff profits
DEMF(h,r,s) Firm demand,
MKUP(h,r,s) Optimal firm pricing,
PAR(h,r,s) Pareto Productivity
MKT(h,r) Input market clearance,
SUP(h,r) Input supply (output);
DEM(h,r).. Q(h,r) - Q0(h,r)*(P0(h,r)/P(h,r))**eta =g= 0;
DS(h,s).. sum(r,N(h,r,s)*PF(h,r,s)**(1-sig))**(1/(1-sig)) -
P(h,s) =g= 0;
DEMF(h,r,s).. QF(h,r,s) - Q(h,s)*(P(h,s)/PF(h,r,s))**sig =g= 0;
MKUP(h,r,s).. tau(h,r,s)*c(h,r)/PHI(h,r,s) -
(1 - 1/sig)*PF(h,r,s) =g= 0;
FE(h,r).. c(h,r)*delt_fs(h,r) -
sum(s,(N(h,r,s)/M(h,r))*PF(h,r,s)*QF(h,r,s)*(sig-1)/(a*sig))
=g= 0;
ZCP(h,r,s).. c(h,r)*fc(h,r,s) -
(PF(h,r,s)*QF(h,r,s)*(a+1-sig))/(a*sig) =g= 0;
PAR(h,r,s).. PHI(h,r,s) -
b * (a/(a+1-sig))**(1/(sig-1)) * (N(h,r,s)/M(h,r))**(-1/a)
=g= 0;
MKT(h,r).. Y(h,r) - (
delt_fs(h,r)*M(h,r) +
sum(s,N(h,r,s)*(fc(h,r,s) + tau(h,r,s)*QF(h,r,s)/PHI(h,r,s)))
) =g= 0;
SUP(h,r).. Y0(h,r)*(c(h,r)/c0(h,r))**mu - Y(h,r) =g= 0;
model A_3 /DEM.P,DS.Q,FE.M,ZCP.N,DEMF.PF,MKUP.QF,PAR.PHI,MKT.c,SUP.Y/;
*Set the level values and check for benchmark consistency
Q.l(h,r) =Q0(h,r) ;
P.l(h,r) =P0(h,r) ;
M.l(h,r) =M0(h,r) ;
N.l(h,r,s) =N0(h,r,s) ;
QF.l(h,r,s)=QF0(h,r,s);
PF.l(h,r,s)=PF0(h,r,s);
PHI.l(h,r,s)=PHI0(h,r,s);
c.l(h,r) =c0(h,r) ;
Y.l(h,r) =Y0(h,r) ;
A_3.iterlim = 0;
Solve A_3 using MCP;
Abort$(A_3.objval > 1e-6) "Benchmark Replication Failed";