WiNDC Core Model
Introduction
The canonical WiNDC model complements the constructed set of regional economic parameters in the core WiNDC database. The model is a calibrated multi-regional, multi-sector computable general equilibrium model that provides a foundational structure for specific empirical applications. The model was introduced in the WiNDC paper.
First the data from the WiNDC core database is loaded, then a single year of data is chosen for calibration; the year index will be subsequently suppressed. The CGE model verifies the consistency of the data for the chosen year: all markets are cleared, excess profit is zero and incomes are balanced. This framework can subsequently be used for counterfactual economic experiments.
Downloads
- WiNDC Model (written in GAMS and specified in MPSGE).
- Precompiled core WiNDC database.
- Buildstream for the core WiNDC database.
Details
-
Declare the sets and parameters that we will load from the WiNDC database.
Lists are given in the paper,
Table 2 (sets) and Table 4 (parameters).
set yr Years of IO data,
...
m Margins (trade or transport);
alias(s,g);
parameter
ys0_(yr,r,g,s) Sectoral supply,
...
nd0_(yr,r,g) Regional demand from national market; -
Load data from the WiNDC core database:
$gdxin 'WiNDCdatabase.gdx'
$loaddc yr r s m gm
...
$loaddc md0_ nm0_ dm0_ -
Choose data for one year:
$if not set year $set year 2016
parameter
ys0(r,g,s) Sectoral supply,
...
nd0(r,g) Regional demand from national market;
ys0(r,g,s) = ys0_('%year%',r,g,s);
...
hhadj(r) = hhadj_('%year%',r); -
Define additional parameters:
parameter
y_(r,s) Sectors and regions with positive production,
x_(r,g) Disposition by region,
a_(r,g) Absorption by region;
y_(r,s)$(sum(g, ys0(r,s,g))>0) = 1;
x_(r,g)$s0(r,g) = 1;
a_(r,g)$(a0(r,g) + rx0(r,g)) = 1; -
Formulate the CGE model in MPSGE:
-
Indicate the beginning of a GAMS comment block containing an MPSGE model.
$ontext
-
Define the model name. This name is subsequently used to form the file
WINDCMODEL.GEN
.$model:windcmodel
-
Define the model variables (see also Table 5 in the
paper).
Activity levels are associated with constant returns to scale production sectors in the economy:$sectors:
Y(r,s)$y_(r,s) ! Production
X(r,g)$x_(r,g) ! Disposition
A(r,g)$a_(r,g) ! Absorption
C(r) ! Aggregate final demand
MS(r,m) ! Margin supply$commodities:
PA(r,g)$a0(r,g) ! Regional market (input)
PY(r,g)$s0(r,g) ! Regional market (output)
PD(r,g)$xd0(r,g) ! Local market price
PN(g) ! National market
PL(r) ! Wage rate
PK(r,s)$kd0(r,s) ! Rental rate of capital
PM(r,m) ! Margin price
PC(r) ! Consumer price index
PFX ! Foreign exchange$consumer:
RA(r) ! Representative agent
-
For each activity level (sector), define a nested CES production function
that characterizes technology.
The production function is expressed as a production block (
$prod
), where inputs and outputs are reference prices and reference quantities are parameters from the WiNDC database:$prod:Y(r,s)$y_(r,s) s:0 va:1
o:PY(r,g) q:ys0(r,s,g) a:RA(r) t:ty0(r,s) p:(1-ty0(r,s))
i:PA(r,g) q:id0(r,g,s)
i:PL(r) q:ld0(r,s) va:
i:PK(r,s) q:kd0(r,s) va:
...
$prod:C(r) s:1
o:PC(r) q:c0(r)
i:PA(r,g) q:cd0(r,g) -
For each agent, define a nested CES demand function that characterizes
preferences. The demand function is expressed
as a demand block (
$demand
), where endowments and demands are reference prices and reference quantities are parameters from the WiNDC database:$demand:RA(r)
d:PC(r) q:c0(r)
e:PY(r,g) q:yh0(r,g)
e:PFX q:(bopdef0(r) + hhadj(r))
e:PA(r,g) q:(-g0(r,g) - i0(r,g))
e:PL(r) q:(sum(s,ld0(r,s)))
e:PK(r,s) q:kd0(r,s)
-
Indicate the end of the MPSGE model specifictaion and direct the compiler
to instruct the preprocessor to compile the model structure to an external file called
WINDCMODEL.GEN
:$offtext
$sysinclude mpsgeset windcmodel
-
Indicate the beginning of a GAMS comment block containing an MPSGE model.
-
First set the GAMS option
iterlim
to zero, so that the level values are passed to the solver unaltered. This has the effect of replicating the benchmark. Then load the external fileWINDCMODEL.GEN
and solve the model with an MCP solver.windcmodel.iterlim = 0;
$include windcmodel.gen
solve windcmodel using mcp; -
Reset the iteration limit to 1000 (the default value) for subsequent counter-factual computations.
windcmodel.iterlim = 1000;