Capitulo2 (RBC) 8
Capitulo2 (RBC) 8
Fundamentos de Dynare*
Hamilton Galindo
Arizona State University (ASU)
[Link]@[Link]
Alexis Montecinos
Massachusetts Institute of Technology (MIT)
[Link]@[Link]
Índice
1. Introducción 3
2. ¿Qué es Dynare? 3
1
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
5. Códigos 43
2
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
1. Introducción
Los modelos DSGE se pueden resumir en un conjunto de ecuaciones en diferencias
con no linealidades. La naturaleza de este sistema exige aplicar métodos numéricos para
aproximarse a la solución. Realizar este trabajo sin un software es muy tedioso y hasta
quizá ineficiente.
En lı́nea con lo anterior, el objetivo de este capı́tulo es entender los principales coman-
dos de Dynare que son utilizados para realizar cada uno de los pasos en la construcción y
simulación de un modelo DSGE. Para ello este capı́tulo está dividido en tres partes.
En la primera parte se describe cada uno de los comandos necesarios para trasladar el
modelo DSGE al ambiente de Dynare; además, se menciona los comandos necesarios para
resolver y simular el modelo.
2. ¿Qué es Dynare?
Dynare es un pre-procesador y colección de rutinas de Matlab. Es decir, Dynare es una
colección de códigos de matlab que actua como un toolbox. El objetivo prncipal de Dynare
es resolver, simular y estimar diferentes modelos no lineales con variables forward looking,
entre los cuales se encuentran los modelos DSGE y OLG (generaciones traslapadas).
3
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Dynare ejecutará las tareas de cálculo al ejecutar el archivo “filename.m”. Entre los
resultados de Dynare se encuentra 3 principales variables (se muestran en el workspace de
Matlab):
Dynare guarda estas tres variables en la carpeta de trabajo actual (current folder) con
el nombre: “filename [Link]”. En la figura [1] se muestra cómo Dynare trabaja
con Matlab.
4
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
M_
ejemplo.m
________ options_
________ ejemplo_dynamic.m oo_
________
ejemplo_static.m otros
Archivo
[Link]
Pre-procesador Rutinas de Resultados
Dynare Matlab
Es importante mencionar que además de estos seis bloques se pueden agregar otros
comandos dependiendo de las tareas que se requiera; por ejemplo, si se desea hacer análisis
de sensibilidad de los parámetros se puede agregar comandos que realicen esta tarea. Los
seis bloques antes mencionados son las partes fundamentales que todo archivo .mod debe
de tener.
3.1. El preámbulo
En el preámbulo se especifica las variables (endógenas y exógenas) y los parámetros (y
sus valores). Tres comandos le indicarán a Dynare qué variables son del modelo y cuales
son los parámetros: variables (var y varexo) y parámetros (parameters).
El comando var declara las variables endógenas y tiene tres componentes: el primero se re-
fiere al nombre de la variable que será utilizado en todo el archivo .mod (variable name1);
el segundo indica el nombre que esta variable tomará en el archivo LATEX ($latex name1$);
y el tercero es una opción (la cual tiene que estar entre paréntesis) que permite escribir el
nombre largo de la variable (long name= ‘nombre’). El cuadro [3] ilustra la utilización de
este código.
5
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Preámbulo
Se define las variables endógenas y exógenas;
además, se lista los parámetros y sus valores
iniciales.
Modelo
Se escribe las ecuaciones del modelo no lineal o
lineal. El número de variables endógenas debe ser
igual al número de ecuaciones.
Valores iniciales y
Estado estacionario
Se define los valores iniciales de las variables
(estado estacionario) y se le pide a Dynare que
calcule el estado estacionario de las variables.
Choques
Se define la varianza del choque
Simulación/Cálculo
Se pide a Dynare que calcule los IRFs, momentos,
etc.
El comando varexo declara las variables exógenas (choques) y, de la misma forma que las
variables endógenas, tiene tres componentes: el primero se refiere al nombre de la variable
que será utilizado en todo el archivo .mod (variable name1); el segundo indica el nombre
que esta variable tomará en el archivo LATEX ($latex name1$); y el tercero es una opción
(la cual tiene que estar entre paréntesis) que permite escribir el nombre largo de la variable
(long name= ‘nombre’).
at+1 = ρat + t
6
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Donde t es el componente estocástico, con una distribución normal con media cero y
varianza constate. Para Dynare, at es una variable endógena y debido a que t es un ruido
blanco, esta es considerada como una variable exógena. Por tanto, bajo los comandos
declarados en el código 2, esta variable exógena se podrı́a escribir en Dynare de tres
formas (ver cuadro [4]).
Código 3. Parámetros
parameters parametro name1 $latex name1$ (long name= ‘nombre1’)
parametro name2 $latex name2$ (long name= ‘nombre2’);
El comando parameters declara los parámetros que se usarán en el modelo. No solo los
parámetos de las ecuaciones (funciones) de comportamiento de los agentes (por ejemplo la
función de utilidad); sino también, los valores iniciales, que usualmente son los valores de
estado estacionario, y los parámetros asociados a los choques. Además, en este segmento
se debe de asignar los valores que corresponden a cada parámetro (calibración). El cuadro
[5] describe tres ejemplos de la declaración de los parámetros y de la asignación de sus
valores.
3.2. El modelo
El modelo (sistema de ecuaciones no lineales) es declarado en Dynare por medio del
bloque model;...end;.
Este bloque detalla las ecuaciones principales del modelo. Se puede escribir el modelo (no-
lineal) en Dynare tal como se tiene en el papel, para ello se introduce las ecuaciones en el
ambiente model;− − − end;
7
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Código
model;
ecuación1;
ecuación2;
...
ecuaciónN;
end;
Se tiene que tener en cuenta que el número de ecuaciones debe ser igual al número de va-
riables endógenas. Si el modelo que se escribe en Dynare está linealizado (sea con variables
en niveles o variables en logarı́tmo), entonces se escribe: model(linear).
Variables endógenas
Variables Ley de
exógenas Parámetros movimiento
del capital
MODELO
Ecuación de
Euler
Ejemplo 2: modelo lineal
Modelo
lineal
MODELO
8
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Los valores iniciales son los que Dynare utilizará en el “filename [Link]” para
calcular el estado estacionario. Dynare necesita un punto de partida para dicho cálculo
debido a que el método de solución es de apróximaciones sucesivas (método de Newton).
f (x) = 0
La técnica empieza con un punto inicial x0 y aproxima el siguiente valor de “x” por medio:
Esto aplicado al cálculo de estado estacionario del modelo se tiene, por ejemplo, para la
función de producción:
yt = at ktα h1−α
t
El objetivo es encontrar la solución; es decir, el estado estacionario (xt = xt+1 ). Para ver
mayor detalle del método revisar Kelley (2003).
9
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Para que Dynare calcule el estado estacionario por el método de Newton se coloca el
comando steady después del bloque del modelo. Para ello considera como punto inicial
los valores que se indiquen en la sección initval. Dynare aplica el método de Newton
al modelo estático (el modelo del .mod sin rezagos ni adelantos) para encontrar el estado
estacionario.
El estado estacionario calculado por steady se guarda en “oo .steady state”. Cabe
mencionar que el orden en que aparecen los estados estacionarios es el mismo en cómo han
sido declaradas las variables endógenas en la sección var.
Este código escribe cada ecuación del modelo en formato LATEX y lo guarda en un
archivo “.tex” dependiendo del nombre del archivo “.mod”. Por ejemplo, si el archivo mod
tiene el nombre de “[Link]”, el archivo en LATEX será “campbell [Link]”, el
cual contiene la lista de todas las ecuaciones dinámicas. Cabe mencionar que si en los
parámetros y en las variables se han declarado nombres en versión LATEX, el archivo “.tex”
los usuará.
10
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Cabe mencionar que estos códigos (ecuaciones dinámicas o estáticas) se escriben des-
pués del bloque model.
Alternativa 1 Alternativa 2
shocks; shocks;
var e = 0.5; var e;
end; stderr 0.51/2 ;
end;
11
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Este comando calcula los eigenvalores y los guarda en la variable global “oo .[Link]”.
Dynare también cuenta con otro comando que brinda varias pruebas de salud del modelo
e imprime un mensaje si es que un problema es detectado: model diagnostics;.
Dentro de las opciones de stoch simul se le puede solicitar a Dynare que realice ope-
raciones especificas como hallar los impulsos respuestas, estimar los parámetros, etc. Por
ejemplo:
stoch simul(order=1;irf=30)
12
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
El código “stoch simul” brinda las funciones de polı́tica y de estado (conocidas también
como reglas de decisión), cuyos coeficientes se guardan en “oo .dr” ( dr es un diminuti-
vo para decision rules). Cabe mencionar que la función de polı́tica, en Dynare, tiene la
siguiente estructura:
oo .[Link]: guarda los estados estacionarios yss , cuyo orden es similar a como han
sido declaradas las variable en el bloque var.
oo .[Link]: guarda la matriz “A”. Las filas corresponden a toda las endógenas
(en orden como están listadas en “oo .[Link] var”); mientras que las columnas
corresponden a las variables de estado.
oo .[Link]: guarda la matriz “B”. Las filas corresponden a toda las endógenas
(en orden como están listadas en “oo .[Link] var”); mientras que las columnas
corresponden a las variables exógenas.
13
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Para realizar esta simulación en Dynare se usa dos comandos en “stoch simul”: periods
y simul replic. Ambas están descritas en el cuadro [9]. De otro lado si se desea que
Dynare grafique alguna variable simulada se puede escribir, después de “stoch simul” el
código “rplot nombre variable” y Dynare mostrará la gráfica.
14
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
En esta subsección se hace énfasis en los bucles (loops) debido a que estos ayudan a rea-
lizar análisis de sensibilidad. En el cuadro [10] se hace una comparación del macro-lenguaje
de Dynare y el código de Matlab. Ambos producen lo mismo, la principal diferencia entre
ellos es que el vector que contiene los valores del parámetro no aparecerá en el ambiente
de Matlab cuando corremos el macro-lenguaje, mientras que el código de Matlab reempla-
zará sucesivamente los valores del parámetro, mostrando el último valor en el workspace de
Matlab y guardará el vector de valores del parámetro. Cabe mencionar que estos códigos
se escriben después del “stoch simul”.
15
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
En el cuadro [11] se describe los cuatro archivos .mod que reflejan las cuatro formas
distintas de ingresar o escribir un modelo en Dynare. Como se mencionó previamente, los
cuatro archivos contienen el mismo modelo.
16
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Cuadro 13: Sistema de ecuaciones no lineal del modelo (Long y Plosser, 1983)
cuadro [14] muestra las ecuaciones luego de linealizar el modelo considerando las variables
en niveles, donde para el caso del consumo se tiene: ect = ct − css .
De otro lado, el cuadro [15] muestra las ecuaciones linealizadas considerando las va-
riables en logarı́tmo. En este enfoque el cambio de variable, por ejemplo para el consumo,
ct = lnct − lncss .
sigue la siguiente forma: b
Cuadro 14: Sistema de ecuaciones lineal del modelo (Long y Plosser, 1983)
Equilibrio yet = e
ct + eit Equilibrio mercado de bienes
Choque at = φe
e at−1 + t Choque de productividad
En el cuadro [16] se muestra los valores que toman los parámetros del modelo, la
cual está basada en King y Rebelo (2000). Cabe mencionar que estos parámetros se han
obtenido considerando que los datos son trimestrales. Por tanto, cada periodo en el mode-
lo sea en la simulación como en la función impulso-respuesta se entiende como un trimestre.
En el cuadro [17] se menciona el estado estacionario de cada variable. Para calcular este
equilibrio de largo plazo se asume que la variable es la misma independientemente de la
temporalidad; es decir, xt = xt+1 . En ese sentido, todos los rezagos y adelantos presentes
en el sistema de ecuaciones que reflejan el modelo desaparece. Es en este escenario donde
se calcula el estado estacionario para cada variable, el cual finalmente depende de los
17
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Cuadro 15: Sistema de ecuaciones log-lineal del modelo (Long y Plosser, 1983)
Ecuaciones log-lineal Descripción
[1] ct = Et b
b ct+1 − rbt+1 Ecuación de Euler
[2] kt+1 = bit
b Ley de movimiento del capital
hss b
[3] 1−hss ht = w bt − b ct Oferta de trabajo
[4] ybt = bat + (1 − α)b kt + αb
ht Función de producción
[5] rbt = ybt − b kt Demanda de capital
[6] wbt = ybt − b ht Demanda de trabajo
css
[7] ybt = yss bct + yiss
ss
bit Equilibrio en el mercado de bienes
[8] at = φb
b at−1 + t Choque de productividad
Nota: Para obtener directamente la solución del modelo con Dynare se puede
utilizar el archivo “Long Plosser Dynare nolineal [Link]”
4.2. Preambulo
Definición de variables endógenas: en el cuadro [18] se describe la declaración de las
variables endógenas en cada uno de los archivos .mod. De este cuadro se desprende cuatro
conclusiones. La primera es que en el [mod1] cada variable declarada es la variable que
aparece en el modelo no-lineal. Por ejemplo “c” representa el consumo en periodo “t”.
Además, una cuarta conclusión es que en el [mod4] cada variable declarada representa
la desviación del logarı́tmo de la variable con respecto al logarı́tmo de su estado estacio-
nario. Por ejemplo “ch” es igual al “lnct − lncss ”. De igual forma que en el [mod3], “ch” es
18
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
19
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Luego de definir los parámetros es necesario indicarle a Dynare los valores de cada
parámetro (calibración) incluyendo los valores del estado estacionario. Esto es importante
porque en el modelo lineal usualmente aparece de forma multiplicativa o aditiva el valor
del estado estacionar io de algunas variables y además porque estos estados estacionarios
se colocan en el bloque de valores iniciales. En el cuadro [20] se describe la forma de in-
troducir los valores de los parámetros en Dynare. Estos códigos se escriben después del
bloque de parámetros y antes del bloque del modelo.
Variable asociada al nombre del modelo: “fname” es una variable la cual con-
tiene el nombre del archivo .mod.
20
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Figura 4: Estructura M
Nota: Esta estructura M se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
21
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Cabe mencionar que para extraer alguna variable que se encuentra dentro de la estruc-
tura M basta escribir en el Command Window de Matlab: “M .NombreVariable”. Por
ejemplo si se desea extraer el nombre del archivo .mod se escribe lo siguiente:
>> M .fname
Esto mostrará:
ans =
Long Plosser Dynare nolineal log
Quiza se requiera extraer la versión larga de los nombres de las variables endógenas,
entonces se escribe en el Command Window de Matlab lo siguiente:
Esto mostrará:
ans =
Ln Consumo
Ln Inversión
Ln Producto
Ln Capital
Ln Trabajo
Ln Tasa de interés real
Ln Salario real
Ln Productividad
Es importante mencionar que una de las variables que tiene la estructura M es Sig-
ma e. Esta es una variable especial de Dynare y no se puede usar este nombre para definir
otra variable en el archivo .mod (por ejemplo la desviación estándar del choque). Sigma e
es la matriz de varianza-covarianza del choque estocástico y se escribe como una matriz
triangular superior o inferior. Por ejemplo para el modelo no-lineal con variable en lo-
garı́tmo (mod2), Sigma e = 0.00005184. Lo cual corresponde a la varianza del choque.
Cómo en el archivo .mod se ha definido que la desviación estándar del choque es sigma ee
= 0.0072, entonces la varianza es 0.00005184, lo cual Dynare calcula y guarda en Sigma e
(variable de la estructura M ).
4.3. Modelo
En el cuadro [21] se menciona la forma de escribir en Dynare el modelo no-lineal
considerando las variables en niveles o variables en logarı́tmo. De este cuadro se desprende
algunos comentarios generales que son transversales para cualquier modelo:
22
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Variables de control: Dynare considera que las variable de control están escritas
en “t” y que las variables acompañadas por (+1) son forward looking. En este ca-
so no es necesario escribir las expectativas porque Dynare entiende que cualquier
variable escrita en (+1) siempre lleva acompañado el operador de expectativas Et .
Por ejemplo, la ecuación de Euler descrita en el cuadro [21] no lleva el operador
expectativas.
23
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Pero se sabe que “xx = ln x”, entonces “exp(ln x)” se convierte en “exp(xx)”. Esta
última expresión es lo que se escribe en Dynare para cada variable. Cuando a Dynare
se le pida que realice la linealización creará la variable xx = xx − xxss = lnx − lnxss .
Con respecto a la versión lineal del modelo, el cuadro [22] muestra las dos alternativas
de linealizar el modelo: en niveles (mod3) o en logarı́tmo (mod4). Cabe mencionar que
esta linealización la realiza previamente el usuario y luego escribre el modelo linealizado
en Dynare; en este caso Dynare ya no aplicará la apróximación de primer orden de Taylor
sobre el modelo. Esto es diferente a los dos modelos previos donde el usuario escribı́a el
modelo no-linal y solo cambiada la naturaleza de la variable (lineal o logarı́tmica). Del
cuadro [22] se desprende algunas consideraciones:
24
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Modelo lineal con variables en niveles: dado que la variable definida es “xt =
x − xss ”, entonces en el bloque de valores iniciales se coloca: xt = xss − xss , entonces
xt = 0.
Resid: este comando, que se coloca después del bloque de valores iniciales, calcula el re-
siduo en cada ecuación cuando se reemplaza cada variable por su valor inicial; es decir,
coloca los valores iniciales en cada ecuación y calcula el residuo entre la expresión de la
derecha menos la expresión de la izquierda; por ejemplo para la función de producción:
F = yt − at kt1−α hαt
En estado estacionario:
F = y − ak 1−α hα
Lo que hace Dynare es colocar los valores iniciales en esta ecuación y calcular el resi-
duo (F). Si este residuo es cero significa que los valores inciales que se ha introducido son
exactamente los correctos; es decir, hemos calculado correctamente el estado estacionario.
25
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Puede ser que el residuo sea diferente de cero, lo cual indica que nos hemos equivocado
en el cálculo del estado estacionario, y aún ası́ Dynare encuentre el verdadero valor del
estado estacionario. Esto se debe a que Dynare necesita un punto de partida cercano al
verdadero valor del estado estacionario y con ello empezar a iterar. Luego de calcular el
estado estacionario, Dynare mostrará dichos valores en el prompt de Matlab, el cual se
encuentra en cuadro [24].
Además, el cuadro [24], que corresponde al modelo no-lineal con variables en logarı́tmo,
indica que los valores iniciales (estado estacionario calculado) que se ha considerado son
exactamente los estados estacionarios correctos del modelo; por ello, el residuo de cada
ecuación es igual a cero. Si no hemos colocado bien los valores iniciales Dynare mostrará
que el residuo es diferente de cero en algunas ecuaciones, lo cual nos brinda información
para detectar en qué variable no hemos calculado el estado estacionario correctamente. Si
el residuo es muy grande significa que los valores iniciales son muy ditintos o muy lejanos
del estado estacionario y Dynare podrı́a parar el proceso debido a que no logrará encontrar
el estado estacionario desde el punto inicial dado.
26
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Figura 5: Estructura oo
Nota: Esta estructura oo se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
En particular, la variable que contiene los estados estacionarios calculados por Dynare
es “oo .steady state” (ver la figura [6]).
27
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Nota: Esta variable oo .steady state se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
28
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
La figura [8] muestra la variable oo .[Link], la cual contiene el vector de los eigen-
valores.
4.8. Solución
En el cuadro [28] se muestra la solución del modelo (función de polı́tica y de estado)
para los cuatro archivos .mod. Cabe mencionar que el código utilizado para obtener la
solución es:
29
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Nota: Esta estructura oo .dr se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
Figura 8: oo .[Link]
Nota: Este vector oo .[Link] se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
30
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
ct = 0.683e
e kt + 0.077e
at
31
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
ct = 0.333b
b kt + b
at (3)
Modelo lineal: con respecto al modelo lineal, se puede observar que tiene los mis-
mos coeficientes que en el modelo no-lineal, el cual fue linealizado por Dynare. La
principal diferencia es que cuando introducimos un modelo lineal en Dynare el esta-
do estacionario es cero, por ello no aparece ningún intercepto en las ecuaciones del
modelo lineal (mod3 y mod4).
32
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
[1] Orden de las variables: el orden inicial de las variables tal como se escribió en el
archivo .mod es el siguiente: c, i, y, k, h, r, w, a. Entonces el consumo tiene el primer lugar,
mientras que la inversión el segundo lugar y ası́ sucesivamente para las demás variables. Sin
embargo, cuando Dynare resuelve el sistema reordena estas variables, guardando el nuevo
orden en “oo .[Link] var”. Esta variable muestra un vector de números que contiene la
nueva posición de las variables: 2, 3, 5, 7, 4, 8, 1, 6. Esto significa que la variable que estaba
en la posición inicial 2 (que es la inversión) ahora está en el primer lugar. Por ejemplo, el
consumo estaba inicialmente en la primera posición pero ahora aparece en la posición 7.
Esto es importante porque los coeficientes de la solución corresponden a este nuevo orden.
Entonces el vector de variable reordenado es:
33
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
i iss ηik ηia ηiu
y yss ηyk ηya ηyu
h hss ηhk ηha
ηhu
w wss ηwk ηwa k(−1) ηwu
k kss ηkk ηka ∗ a(−1) + ηku ∗ e
= +
a ass ηak ηaa ηau
c css ηck ηca ηcu
r rss ηrk ηra ηru
Por ejemplo, la ecuación de polı́tica de la inversión es:
−2.563
0.333 0.979 1
−3.282 0.333 0.979 1
−2.166 3.09E − 15 1.03E − 14 2.54E − 14
−3.282 0.333 0.979 1
oo .[Link] =
−1.609
oo .[Link] =
0.333
oo .[Link] =
0.979
1
0.016 0 0.979 1
−0.962 0.333 0.979 1
0 −0.667 0.979 1
Dynare también grafica cada una de las variables que se encuentran en la estructura
“oo .irfs”; sin embargo, la gráfica es esencialmente básica en el sentido que no se modifican
las lı́neas y además no considera los nombres de las variables en su versión extendida. Esto
se observa en la figura [11].
La figura [11] se podrı́a mejorar si se construye un código en Matlab que se alimente del
archivo .mod y que grafique con los nombres extendidos de las variables y modificaciones
34
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
Nota: Esta función impulso-respuesta se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
Nota: Esta función impulso-respuesta se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
estéticas en el gráfico. Esto se realiza en el código “irfs nolineal log.m” y se puede ver en
el gráfico [12] el resultado.
Descripción del código: Primero se corre el archivo .mod (lı́nea 1 del código):
dynare Long Plosser Dynare nolineal [Link];
Luego se define una matriz que contenga todas las funciones impulso-respuesta (IRF),
lı́nea 2 del código. En tercer lugar se define un vector de celda que contenga los nombres
de las variables (names). Finalmente, se construye un bucle para graficar cada impulso-
respuesta con el nombre de la variable apropiada y el tamaño de linea apropiado (lı́nea 4 al
9 del código). Los dos últimas comandos de este segmento de código coloca la hoja, donde
35
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
0 0 0
10 20 30 40 10 20 30 40 10 20 30 40
−3
kk x 10 rr ww
0.015 10 0.015
0.01 5 0.01
0.005 0 0.005
0 −5 0
10 20 30 40 10 20 30 40 10 20 30 40
aa
0.01
0.005
0
10 20 30 40
Nota: Esta gráfica impulso-respuesta se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
36
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
10 10 10 10
9 9 9 9
8 8 8 8
7 7 7 7
6 6 6 6
5 5 5 5
4 4 4 4
0 20 40 0 20 40 0 20 40 0 20 40
−16 Trabajo −3 −3 −3
x 10 x 10 Tasa de interés x 10 Salario real x 10 Productividad
3 8 11 7.5
7 7
2.5 10
6 6.5
9
2 5 6
4 8 5.5
1.5
3 7 5
1 2 4.5
6
1 4
0.5 5
0 3.5
0 −1 4 3
0 20 40 0 20 40 0 20 40 0 20 40
Nota: Esta gráfica impulso-respuesta se obtiene del archivo “ifrs nolineal log.m”
17 grid;
18 end;
19 legend('\rho=0.5', '\rho=0.7', '\rho=0.9');
20 orient landscape
21 saveas(gcf,'analisis sensibilidad','pdf');
Descripción del código: este código tiene dos partes. La primera es guardar la si-
mulación del modelo ante cada valor de la persistencia de la productividad. Para ello se
define un vector de valores de la persistencia (lı́nea 2), y luego se aplica stoch simul para
los tres valores y se guarda cada resultado (oo ) en un vector de celda (oo sen).
La segunda parte del código es graficar la función impulso-respuesta bajo los tres va-
lores del parámetro. Para obtener esta gráfica en primer lugar se define el nombre de las
variables, cuyo orden es el que se describe al inicio del archivo .mod. En segundo lugar se
extrae (como vector de celda) los nombres de la estructura “oo sen{1}.irfs” (lı́nea 9), la uti-
lidad de esto es que servirá para hacer bucles con estructuras. En tercer lugar se construye
un bucle para graficar el impulso-respuesta de cada variable ante los tres valores de la per-
sistencia. La lı́nea 13 es de especial importancia: el código “oo sen{1}.irfs.(field name{j})”
para j=1 es “oo sen{1}.[Link] e”. Para j=2 es “oo sen{1}.[Link] e” y ası́ sucesivamente. En
ello se puede ver la utilidad que tiene el “campo” de una variable estructura. Finalmente,
el código orient indica la orientación de la hoja en la que se guardará el gráfico y el
37
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
código saveas indica el nombre y la extensión con que se guardará el gráfico (usualmente
se guarda en pdf o eps por su utilidad en LATEX).
8 8 8 8
7 7 7 7
6 6 6 6
5 5 5 5
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1
0 0 0 0
0 20 40 0 20 40 0 20 40 0 20 40
−16 Trabajo −3 −3 −3
x 10 x 10Tasa de interés real x 10 Salario x 10 Productividad
3 8 9 8
ρ=0.5
8 7 ρ=0.7
2.5 6
7 ρ=0.9
6
2 4 6
5
5
1.5 2 4
4
3
1 0 3
2
2
0.5 −2
1 1
0 −4 0 0
0 20 40 0 20 40 0 20 40 0 20 40
Nota: Esta gráfica impulso-respuesta se obtiene del archivo “Long Plosser Dynare nolineal [Link]”
kt+1 = 0.333b
b kt + b
at
(1 − 0.333L)b
kt+1 = b
at (4)
38
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
aat = φaat−1 + t
(1 − φL)aat = t
t
aat =
1 − φL
Sabiendo : ass = 1
t
lnat − lnass =
1 − φL
t
at = (5)
1 − φL
b
(1 − 0.333L)b
kt+1 = b
at
t
(1 − 0.333L)b
kt+1 =
1 − φL
t
kt+1 =
b (6)
(1 − 0.333L)(1 − φL)
Dado que se tiene la expresión de series de tiempo de cada variable, Dynare podrı́a si-
mular el comportamiento de cada variable asumiendo un comportamiento aleatorio N (0, σe2 )
para el error . Para que Dynare realice esta tarea es suficiente indicarle en el stoch simul
el número de periodos (periods) que deseamos que la variable tenga. Por ejemplo:
Tres resultados podemos enfatizar sobre este código: en primer lugar, las variables
simuladas son guardadas en la estructura oo , en particular en las variables “exo simul”
y “endo simul” (ver figura [14]). La primera variable contiene la simulación de la variable
exógena; es decir, el error t que se distribuye como una normal con media cero y varianza
constante σe2 (ver figura [15]). La segunda variable (endo simul) contiene la simulación de
todas las variables endógenas (en este caso son ocho). Cada fila representa la simulación de
una variable, el número de columnas es el número de periodos que se definio en stoch simul
(ver figura [16]).
Lo anterior muestra una simulación para cada una de las variables endógenas. Sin
embargo, si se desea realizar por ejemplo 300 simulaciones para cada variable considerando
150 periodos es necesario no solo utilizar periods = 150, sino también simul replic =
300. El resultado de estas opciones de stoch simul es un archivo binario con el siguiente
nombre: “NombreMod simul”. Una desventaja de este archivo es que no se puede abrir
directamente en Matlab o algún otro programa. Para leer este archivo se usará una función
creada por Johannes Pfeifer3 , el cual se puede descargar de la web. A continuación se
describe los pasos para aplicar esta función:
En primer lugar la función “get simul replications.m” tiene que estar presente en el
directorio donde se encuentre el archivo .mod.
3
[Link] mod/blob/master/Hansen 1985/get simul replications.m
39
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
En el archivo mod, después del comando stoch simul se debe de colocar lo siguiente:
[sim_array]=get_simul_replications(M_,options_);
y_sim=squeeze(sim_array(strmatch(’y’,M_.endo_names,’exact’),:,:));
k_sim=squeeze(sim_array(strmatch(’k’,M_.endo_names,’exact’),:,:));
La primera lı́nea llama a la función “get simul replications.m” para convertir el ar-
chivo binario en una variable matricial de Matlab llamada “sim array”, la cual se
guarda en el workspace. La segunda lı́nea crea la variable “y sim”, la cual contie-
ne la simulación del producto; es decir, contiene las 300 simulaciones (filas) de 100
periodos (columnas). Esta misma lı́nea de código se puede aplicar a cada variable.
El resultado de ello es una matriz, por variable, de 300 filas con 100 columnas. La
tercera lı́nea el código es la misma que la segunda solo que para el capital.
En la figura [17] se observa seis simulaciones del conjunto de 300 para el capital y el
producto.
40
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
4.13. Filtro HP
El cuadro [29] muestra los momentos de las variables endógenas, más no muestra los
momentos de su componente cı́clico, el cual es necesario para compararlo con los hechos
estilizados y evaluar el poder explicativo del modelo. Para obtener el componente cı́clico
es necesario aplicar un filtro; es decir, una técnica que descomponga la variable en sus dos
componentes: tendencia y ciclo. Para realizar esta tarea usualmente se aplica el filtro HP,
el cual Dynare tiene habilitado como una opción de stoch simul. El código para usar el
filtro HP es el siguiente:
Donde “lambda” es igual a 1600 para datos trimestrales (para mayor detalle ver el
cuadro [9]). Este código brinda los momentos del componente cı́clico en el command window
41
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
−3.1 −2
−3.15 −2.05
−3.2 −2.1
−3.25 −2.15
−3.3 −2.2
−3.35 −2.25
−3.4 −2.3
−3.45 −2.35
0 50 100 150 0 50 100 150
Nota: Esta estructura se obtiene de “Long Plosser Dynare nolineal [Link]”y del código “simula-
cion filtrohp.m”
de Matlab, los cuales se muestran en el cuadro [30]. Cabe mencionar que Dynare no muestra
el componente cı́clico como una serie de tiempo.
Ante la desventaja que Dynare no calcula el componente cı́clico de las series, Matlab
dispone de una función llamada “hpfilter.m”, la cual brinda el componente tendencial y
cı́clico de la serie. El uso de esta función se aprecia a continuación:
[trend_k,ciclo_k] =hpfilter(kk_sim(:,1),1600);
42
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
5. Códigos
En el cuadro [31] se indica los códigos utilizados en este capı́tulo.
43
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
0.02
−3.15
0.01
−3.2
−3.25
−0.01
−3.3
−0.02
−3.35
−0.03
−3.4 −0.04
0 50 100 150 0 50 100 150
Nota: Esta estructura se obtiene de “Long Plosser Dynare nolineal [Link]”y del código “simula-
cion filtrohp.m”
44
Macrodinamica (Tomo I) Modelos de ciclos económicos reales
45