0% encontró este documento útil (0 votos)
113 vistas45 páginas

Capitulo2 (RBC) 8

Uso de Dynare en Macroeconomía Avanzada

Cargado por

cgarcia62
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
113 vistas45 páginas

Capitulo2 (RBC) 8

Uso de Dynare en Macroeconomía Avanzada

Cargado por

cgarcia62
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Capitulo 2

Fundamentos de Dynare*
Hamilton Galindo
Arizona State University (ASU)
[Link]@[Link]
Alexis Montecinos
Massachusetts Institute of Technology (MIT)
[Link]@[Link]

Borrador: 8 de julio de 2017

Índice
1. Introducción 3

2. ¿Qué es Dynare? 3

3. Estructura del archivo .mod 5


3.1. El preámbulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. El modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Valores iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4. Estado estacionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5. Dynare y LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.6. Definición de los choques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.7. Evaluación del modelo: condiciones de Blanchard y Kahn . . . . . . . . . . 11
3.8. Cálculo de la solución estocástica . . . . . . . . . . . . . . . . . . . . . . . . 12
3.9. Simulación y filtro HP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.10. Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.11. Formas de escribir el modelo en Dynare . . . . . . . . . . . . . . . . . . . . 15

4. Modelo de Long y Plosser (1983): aplicación en Dynare 16


4.1. Modelo de Long y Plosser (1983) . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2. Preambulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4. Valores iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.5. Estado estacionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.6. Definición del choque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

© Todos los derechos reservados.


*
Disclaimer: cualquier error u omisión es responsabilidad de los autores.

1
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

4.7. Evaluación del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28


4.8. Solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.9. Función Impulso Respuesta (IRF) . . . . . . . . . . . . . . . . . . . . . . . 34
4.10. Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.11. Simulación de las variables endógenas . . . . . . . . . . . . . . . . . . . . . 38
4.12. Cálculo de los momentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.13. Filtro HP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

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.

Matlab es un software que tiene implementado las herramientas de optimización y


solución de ecuaciones en diferencias nolineales; además, trabaja bajo un enfoque matri-
cial. Estas caracterı́sticas convierten a este software en un candidato importante para la
solución y simulación de los modelos DSGE. Sin embargo, contextualizar el modelo al
lenguaje de Matlab requiere que el usuario tenga un nivel avanzado de programación en
dicho lenguaje, lo cual complica la utilización de este software.

En este escenario diversos grupos de economistas, con formación en matemática e in-


formática, han tratado de construir programas basados en Matlab que faciliten la solución
de los modelos DSGE. En estos esfuerzos surge Dynare como un preprocesador que per-
mite traducir el modelo en lenguaje de Matlab1 .

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.

En la segunda parte se ilustra los códigos antes mencionados al aplicarlos en un mo-


delo RBC básico (modelo de Long y Plosser, 1983). Finalmente, en la última sección se
menciona los códigos utilizados en este capı́tulo.

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).

El principal insumo de este toolbox es un archivo con extensión “.mod”, donde se


escribe el modelo y las sentencias que se desea que Dynare ejecute (resolver, estimar, etc).
Para crear este archivo se abre un block de notas y se guarda con extensión mod. En este
contexto, ¿Cómo se invoca Dynare?: luego de crear el archivo .mod “[Link]”, en el
prompt de Matlab se coloca lo siguiente:

>> dynare ejemplo


1
Este capı́tulo está basado en el manual de Dynare disponible en su página web “[Link]”.
Asimismo, en esta página se encuentra este toolbox listo para descargarlo y diferentes ejemplos ilustrativos.

3
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

El comando dynare pone en marcha el pre-procesador (Dynare) sobre el archivo .mod


y ejecuta las instrucciones incluidas en este archivo (“[Link]”). Considerando un
nombre genérico para el archivo .mod “[Link]”, el pre-procesador crea 3 archivos
intermedios:

Cuadro 1: Archivos creados por Dynare


3 archivos intermedios creados por Dynare
filename.m filename dynamic.m filename static.m
Contiene [1]declaración de Contiene las ecuaciones del Contiene las ecuaciones del
variables y [2]tareas de modelo dinámico; es decir, modelo estático de largo
cálculo. considera los adelantos y plazo; es decir, considera
rezagos de las variables. la ecuaciones sin tempora-
lidad.

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):

Cuadro 2: Variables creadas por Dynare


3 principales variables (estructura) creados por Dynare
M options oo
Contiene información Contiene los valores de va- Contiene varios resultados
variada del modelo. Por rias opciones usadas por del cálculo. Por ejemplo: la
ejemplo: el nombre del Dynare durante el cálculo función impulso-respuesta
archivo mod y nombres de y las simulaciones.
las variables.

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

Figura 1: Dynare como pre-procesador de Matlab


Ambiente de Matlab

M_
ejemplo.m
________ options_
________ ejemplo_dynamic.m oo_
________
ejemplo_static.m otros

Archivo
[Link]
Pre-procesador Rutinas de Resultados
Dynare Matlab

3. Estructura del archivo .mod


El archivo que contiene el modelo (.mod), el cual será utilizado por Dynare, tiene una
estructura de seis bloques principales (figura [2]). El primer bloque es el preambulo, en
el cual se especifica las variables endógeneas y exógenas, y los parámetros del modelo. El
segundo bloque es el modelo propiamente dicho. Es este bloque se escribe las ecuaciones
en sus versión no lineal o lineal (o log-lineal). El tercer bloque es la especificación de los
valores iniciales, los cuales definen el punto de partida para que Dynare calcule el estado
estacionario del sistema. El cuarto bloque es el cálculo del estado estacionario. El quinto
bloque corresponde a la definición de la varianza o desviación estándar de los choques;
finalmente, el sexto bloque contiene el cálculo de la solución del modelo, las simulaciones,
el cálculo de los momentos y la construcción de las funciones impulso-respuesta.

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).

Código 1. Declaración de variables endógenas


var variable name1 $latex name1$ (long name= ‘nombre’);

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

Figura 2: Estructura del archivo .mod

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.

Cuadro 3: Ejemplos de declaración de variables endógenas


Ejemplo 1 Ejemplo 2 Ejemplo 3
var var var
y y $y t$ y $y t$ (long name = ‘Producto’)
c c $c t$ c $c t$ (long name = ‘Consumo’)
k; k $k t$; k $k t$ (long name = ‘Capital’);

Código 2. Declaración de variables exógenas


varexo variable name1 $latex name1$ (long name= ‘nombre’);

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’).

Cabe mencionar que en un modelo estocástico usualmente la productividad (at ) tiene


un comportamiento autorregresivo de la siguiente forma:

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]).

Cuadro 4: Ejemplos de declaración de variables enxógenas

Ejemplo 1 Ejemplo 2 Ejemplo 3


varexo e varexo e $e t$ varexo e $e t$ (long name = ‘Choque de productividad’)

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.

Cuadro 5: Ejemplos de declaración de parámetros


Ejemplo 1 Ejemplo 2 Ejemplo 3
parameters parameters parameters
beta beta $ \ beta$ beta $ \ beta$ (long name = ‘Elasticidad de Frisch’)
delta; delta $ \ delta$; delta $ \ delta$ (long name = ‘Depreciación’);
beta=0.99; beta=0.99; beta=0.99;
delta=0.22; delta=0.99; delta=0.99;

3.2. El modelo
El modelo (sistema de ecuaciones no lineales) es declarado en Dynare por medio del
bloque model;...end;.

Código 4. Declaración del modelo


model(opciones); ecuación1; ecuación2;...;ecuaciónN; 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).

Figura 3: Modelo nolineal y lineal


Ejemplo 1: modelo RBC elemental (no-lineal)
PREÁMBULO

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

3.3. Valores iniciales


Dentro de este bloque se coloca los valores inciales de cada una de las variables endóge-
nas, los cuales generalmente son los valores de estado estacionario calculados por el usuario.
Estos valores son utilizados por Dynare como punto de partida para el cálculo del estado
estacionario. Es importante mencionar que cuando el modelo está en forma log-lineal, los
valores de estado estacionario de las variables (en log-desviaciones) son iguales a cero; por
tanto, los valores iniciales son iguales a cero.

Código 5. Declaración de los valores iniciales


initval; variable name1 = valor1; variable name2 = valor2;...;variable nameN
= valorN; end;

El cuadro [6] describe dos ejemplos de valores iniciales.

8
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 6: Valores iniciales (modelo no-lineal y lineal)


Código Ejemplo (no-lineal) Ejemplo (log-lineal)
initval; initval; initval;
variable name1 = valor1; c = 0.5; ch = 0
variable name2 = valo2; k = 0.1; kh = 0
... ... ...
variable nameN = valorN; y = 0.8; yh = 0
end; end; end;

Es preciso mencionar que la variable ch es igual a “lnct − lncss ”; es decir, es la des-


viación de la variable en logarı́tmo con respecto a su estado estacionario. La cual, por
construcción, en estado estacionario es igual a cero.

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).

3.4. Estado estacionario


Dynare tiene dos formas de considerar el estado estacionario del modelo. La primera
es que Dynare mismo calcule el estado estacionario. Para ello Dynare utiliza el método de
Newton para resolver ecuaciones no lineales. La segunda es brindarle a Dynare un archivo
de Matlab (m-file) que contenga el estado estacionario.

El método de Newton o conocido también como el método de Newton − Raphson es


una técnica orientada a resolver ecuaciones no lineales. Esta técnica encuentra la solución
por medio de iteraciones sucesivas desde un punto inicial. El objetivo de esta técnica
consiste en encontrar los valores de la variable “x” que hacen que la función (o ecuación)
sea cero; es decir, busca las raices de la función:

f (x) = 0
La técnica empieza con un punto inicial x0 y aproxima el siguiente valor de “x” por medio:

f (x0 ) Generalizando f (xn )


x1 = x0 − −−−−−−−−→ xn+1 = xn − 0
f 0 (x0 ) f (xn )

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

Definimos f (x), donde x = [yt , at , kt , ht ]

f (x) = yt − at ktα h1−α


t =0

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

Código 6. (Método 1) Usando el método de Newton


steady;

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.

Código 7. Guardando el estado estacionario


oo .steady state;

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.

Código 8. (Método 2) Usando un archivo que contenga el estado estacionario


En este segundo método existen dos opciones:

Bloque de “estado estacionario” en el .mod: en este caso se define cada varia-


ble en función de los parámetros profundos. El código es:
steady state model; r = 1/beta; k = delta*beta;...;end;

El m-file en que guardará Dynare los estados estacionario es “NombreMod steadystate2.m”.


Donde “NombreMod” es el nombre del archivo“ .mod”. Cabe mencionar que este
bloque se coloca después del bloque de parámetros.

m-file que contenga el “estado estacionario”: en este caso se puede construir


una función en Matlab que calcule los estados estacionarios. Esto requiere hacer un
poco más de programación en un m-file.

3.5. Dynare y LATEX


En dynare existe la posibilidad de trasladar las ecuaciones del modelo al formato de
LATEX. Para ello se usa dos códigos dependiendo de qué tipo de modelo se desea traducir
en lenguaje LATEX:

Código 9. Modelo dinámico en LATEX


write latex dynamic model;

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

Código 10. Modelo estático en LATEX


write latex static model;
Este código permite guardar las ecuaciones del modelo, en su versión estática, en un
archivo “.tex”. La versión estática significa que en las ecuaciones se han eliminado los
rezagos y atrasos. De la misma manera que el código para el modelo dinámico, la versión
estática se guarda en “campbell [Link]” (cuando el modelo en Dynare se llama “camp-
[Link]”).

Cabe mencionar que estos códigos (ecuaciones dinámicas o estáticas) se escriben des-
pués del bloque model.

3.6. Definición de los choques


En este bloque se define los choques temporales del modelo (choque de productividad,
de gasto público, etc.). En Dynare las variables exógenas (choque) toma valores aleatorios
que siguen una distribución normal con media cero y varianza constante. En el archivo
.mod se debe de especificar la varianza.
Código 11. Definición de choques
Para definir la varianza o desviación estándar el choque existe dos formas:
Alternativa 1 Alternativa 2
shocks; shocks;
var variable name = valor varianza; var variable name;
end; stderr valor desviación estándar;
end;
En el cuadro [7] se describe un ejemplo de la aplicación del código del bloque del
choque.

Cuadro 7: Definición del choque

Alternativa 1 Alternativa 2
shocks; shocks;
var e = 0.5; var e;
end; stderr 0.51/2 ;
end;

3.7. Evaluación del modelo: condiciones de Blanchard y Kahn


Dynare tiene la capacidad de calcular los eigenvalores del modelo linealizado alrededor
de los valores asignados en el bloque de initval, los cuales usualmente son los estados
estacionarios. En particular, si el número de eigenvalores con módulo mayor a uno es igual
al número de variable forward looking, entonces el sistema de ecuaciones linealizadas tiene
solución única. En el capı́tulo 3 se detalla estos criterios y el método de solución de Blan-
chard y Kahn (1980).

11
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Código 12. Evaluación del modelo


check;

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;.

3.8. Cálculo de la solución estocástica


Dynare utiliza el código stoch simul para obtener las funciones de polı́tica y de estado
(transición) del modelo.

Código 13. stoch simul (opciones)


Este comando resuelve el modelo estocástico (o modelo de expectativas racionales) usando
el método de perturbación2 . Cabe mencionar que en el proceso de solución del sistema
de ecuaciones, Dynare utiliza el método de descomposición generalizada de Schur (o des-
composición QZ). Lo que hace este método es descomponer una matriz en tres matrices
multiplicativas: A = QU Q−1 . La descomposición de Schur mantiene el mismo espı́ritu que
la descomposición de Jordan (ver el capı́tulo 3 para mayor detalle).

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)

Esta sentencia indica a Dynare que al sistema de ecuaciones no lineales (escrito en el


bloque model) lo linealice por medio de un apróximación de Taylor de primer orden, la
cual es calculada alrededor del estado estacionario (order=1). Luego, usa esas aproxima-
ciones para calcular la función impuslo-respuesta (IRF por sus siglas en inglés) y diversos
estadı́sticos descriptivos (momentos, descomposición de varianza, coeficientes de correla-
ción y autocorrelación). Además, esta sentencia le indica a Dynare que calcule la función
impulso-respuesta con 30 periodos (irf = 30). El IRF es calculado como la diferencia entre
la trayectoria de la variable ante un choque (en t = 1) y su estado estacionario. Dynare
grafica el IRF solo para 12 variables.
2
Este método construye aproximaciones de series de Taylor para la solución del modelo DSGE alrede-
dor de su estado estacionario determinı́stico. Este método ha sido utilizado en fı́sica y en otras ciencias
naturales; en economı́a fue popularizado por Judd y Guu (1993). Este método ha ganado popularidad en
economı́a en las últimas dos décadas debido a tres razones:
Es adecuado. El método de perturbación encuentra una solución apróximada que es local; es decir,
que es muy adecuada alrededor del punto donde se toma la expansión de Taylor.
El resultado es intuitivo y facilmente interpretable.
Gracias al desarrollo de software como Dynare y Dynare++, el método de perturbación para mayores
grados de expansión son fáciles de calcular y no requiere estar familiarizado con métodos numéricos.

12
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 8: Opciones de stoch simul

[1] Solución del modelo


order = entero Indica el orden de la apróximación de Taylor. Los valores
disponibles son 1, 2 y 3 (default = 2).
Ejemplo: stoch simul(order = 1);
loglinear Transforma todas las variables en log-lineales. Por tanto, nos
tenemos que asegurar que los estados estacionarios son es-
trictamente positivos. Todos los resultados (FIR, momentos,
función de polı́tica, etc) son considerando que las variables
son log-lineal.
Ejemplo: stoch simul(loglinear);
[2] Función impulso respuesta (FIR)
irf = entero Número de periodos para el cálculo de la FIR (default
= 40). Las FIR se guardan en “oo .irfs”. Ejemplo:
stoch simul(order = 1, irf = 30);
irf shocks = (nombre de Calcula la FIR para la variable exógena solicitada. Se usa
la variable exógena) cuando en el modelo existen varios choques.
Ejemplo: stoch simul(order = 1, irf shocks = (e));

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:

yt = yss + Axt + But


Donde: yss es el vector del estado estacionario de las variables.

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.

3.9. Simulación y filtro HP


De la solución del sistema de ecuaciones no lineales se puede obtener el comportamien-
to en series de tiempo de cada una de las variables endógenas; por ejemplo, la función
de estado del capital podrı́a sugerir que el capital se comporta como un AR(2) o de la
función de polı́tica del producto se puede deducir que el producto se comporta como un

13
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

ARMA(2,1). El camino para obtener la serie de tiempo de cada variable se describirá en


detalle en el capı́tulo 3 y 4. Al tener la representación de series de tiempo se puede realizar
una simulación de la variable. Para ello dos insumos son importantes: el número de perio-
dos (meses, trimestres o años) que deseamos simular la variable, y el número de veces de
simulación; por ejemplo, se podrı́a desear simular 30 veces la misma variable.

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.

Cuadro 9: Opciones (continuación) de stoch simul

[3] Simulación de las variables endógenas


periods = entero Indica el número de periodos que se usará en la simulación de
cada variable endógena (solo realiza una simulación). Dicha
simulación es guardada en la matriz global oo .endo simul.
Bajo esta opción los momentos empı́ricos serán calculados
en lugar de los teóricos.
Ejemplo: stoch simul(order = 1, periods = 300);
simul replic = entero Esta opción permite simular las variables el número de
veces que se indica en el “entero”. Esta opción siempre va
acompañada de la opción “periods”.
Ejemplo: stoch simul(order = 1, periods =
300, simul replic = 150);. Este ejemplo indica que se
debe simular 150 veces las variables para 300 periodos
cada una. Cabe mencionar que estas simulaciones no se
consideran para calcular los momentos empı́ricos; además,
se guardan en “NombreMod simul”. El valor por default es
uno.
rplot nombre variable Grafica las variables simuladas, que estan guardadas en
“oo .endo simul”. Este comando se coloca después de
“stoch simul”, en el cual es necesario colocar periods. Ejem-
plo: stoch simul(order = 1, periods=150); rplot c;
[4] Filtro HP
hp filter = entero Usa el filtro HP con λ = entero (mensual:14400 ;trimes-
tral:1600; anual:100) para calcular los momentos.
Ejemplo: stoch simul(order = 1, hp f ilter = 1600);

Asimismo, si se desea evaluar la habilidad del modelo en capturar el comportamiento


del ciclo económico es necesario calcular los momentos teórico del componente cı́clico de
cada variable proveniente del modelo. En ese sentido es necesario aplicar un filtro que per-
mita separar el ciclo de la tendencia. Para esta tarea, Dynare cuenta con el filtro HP, cuyo
código es: hp filter = entero, el cual se coloca dentro de “stoch simul”. El “entero”
refleja el parámetro de suavizamiento, el cual varı́a en valor dependiendo de la frecuen-

14
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

cia (mensual, trimestral o anual). La elección del parámetro radica en la frecuencia en


que los parámetros del modelo han sido calibrados; por ejemplo, si todos los parámetros
del modelo (tasa de depreciación, factor de descuento de la utilidad, etc) han sido cali-
brados trimestralmente, entonces el parámetro de suavizamiento en el filtro HP debe ser
trimestral. El cuadro [9] se describe en mayor detalle lo mencionado lı́neas arriba.

3.10. Análisis de sensibilidad


Es usual realizar análisis de sensibilidad del modelo ante un cambio en el valor de los
parámetros. Por ejemplo, es útil comparar los IRFs del modelo ante dos valores distintos
del parámetro de persistencia del choque. Para realizar este tipo de tareas, Dynare brin-
da una opción por medio de comandos “macro”. Este macro-lenguaje de Dynare provee
un conjunto de macro-comandos, los cuales se pueden insertar en el archivo “.mod”. Las
principales tareas que realiza este macro-lenguaje son: incluir un archivo en el .mod, sus-
titución de expresiones, estructuras condicionales (if) y bucles (for).

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”.

Cuadro 10: Macro-lenguaje vs Matlab para análisis de sensibilidad


Macro-lenguaje Matlab
rhos = [ 0.8, 0.9, 1]; rhos = [ 0.8, 0.9, 1];
@]for i in 1:3 for i = 1:length(rhos)
rho = rhos(@i); rho = rhos(i);
stoch simul(order=1); stoch simul(order=1);
save oo = oo ; save oo = oo ;
@]endfor end

3.11. Formas de escribir el modelo en Dynare


Una ventaja de Dynare es que se puede escribir el mismo modelo en diferentes formas.
En primer lugar se puede escribir el modelo nolineal y esperar que Dynare lo linealice o
se puede escribir directamente el modelo linealizado por el usuario. En segundo lugar, la
variable se puede introducir en niveles o en logarı́tmo. Esto es importante porque cuando
Dynare linealice el sistema o el usuario escriba el sistema linealizado los coeficientes de
la función de polı́tica y de estado se leen como elasticidades. En la siguiente sección se
utilizará el modelo de Long y Plosser (1983) para ilustrar los comandos antes descritos,
para ello se considera cuatro formar de escribir este modelo en Dynare. El objetivo de
esto último es ver las diferencias entre ellos en cuanto a la solución, la función impulso-
respuesta y los momentos.

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.

Cuadro 11: Cuatro formas de escribir un modelo en Dynare


Modelo (.mod) Descripción
Long Plosser Dynare lineal [Link] (mod1) Este .mod contiene las ecuaciones log-
lineales. Cabe resaltar que el valor de esta-
do estacionario de cada variable log-lineal
es igual a cero.
Long Plosser Dynare lineal [Link] (mod2) Este .mod contiene las ecuaciones lineales
pero con las variables en niveles.
Long Plosser Dynare nolineal [Link] (mod3) Este .mod contiene las ecuaciones no-
lineales y con las variables en logarı́tmo.
Long Plosser Dynare nolineal [Link] (mod4) Este .mod contiene las ecuaciones no-
lineales y con las variables en niveles.

4. Modelo de Long y Plosser (1983): aplicación en Dynare


4.1. Modelo de Long y Plosser (1983)
Con el fin de aplicar los códigos de Dynare antes descritos en la solución y simulación
de un modelo de equilibrio general, en esta sección se utilizará el modelo de Long y Plosser
(1983), el cual es descrito en detalle en el capı́tulo 3. Además, es preciso mencionar que este
modelo tiene dos supuestos importantes: el primero es que el capital se deprecia totalmente
en cada periodo, y el segundo es que la utilidad es logarı́tmica en el consumo y el ocio. En
el cuadro [12] se describe el problema de optimización de la familia y de la empresa.

Cuadro 12: Problema de optimización de los agentes


Familias Empresas
P∞ t  
Max E0 t=0 β ln(ct ) + θln(1 − ht ) Max πt = yt − [wt ht +
{ct ,ht ,kt+1 }∞
t=0 {kt ,lt }∞
t=0
ct + it = wt ht + rt kt + πt rt kt ] yt = at kt1−α hαt
kt+1 = it

En cada problema de optimización se obtiene condiciones de primer orden que reflejan


el comportamiento de cada agente. En conjunto estas reglas de comportamiento conforman
un sistema de ecuaciones no lineales estocástica, las cuales se describen en el cuadro [13].
Estas nolinealidades hace difı́cil su solución. El camino usual para reducir la comple-
jidad de este sistema de ecuaciones es obteniendo una apróximación de primer orden por
medio de la expansión de Taylor, la cual es llamada linealización. Como se menciona en
el capı́tulo 3, existe dos formas de linealizar el sistema de ecuaciones. La primera es con-
siderando la variable en niveles y la segunda es considerando la variable en logarı́tmo. El

16
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 13: Sistema de ecuaciones no lineal del modelo (Long y Plosser, 1983)

Agente Ecuaciones Descripción


1
 1 
Familia ct = βEt ct+1 rt+1 Ecuación de Euler
kt+1 = it Ley de movimiento del capital
θ wt
1−ht = ct Oferta de trabajo
Empresa yt = at kt1−α hαt Función de producción
rt = (1 − α) kytt Demanda del capital
wt = α hytt Demanda de trabajo
Equilibrio yt = ct + it Equilibrio mercado de bienes
Choque lnat = φlnat−1 + t Choque de productividad

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)

Agente Ecuaciones Descripción


Familia ct = βEt (rss e
e ct+1 − css ret+1 ) Ecuación de Euler
kt+1 = eit
e Ley de movimiento del capital
wss e θ
wet = (1−h ss )
ht + 1−h ss
ct
e Oferta de trabajo
yss
Empresa yet = ass e at + (1 − α) kss kt + α ayss
yss e
ss
ht
e Función de producción
yss e kss
kss kt 
= yet − 1−α r et  Demanda del capital
α αyss e
wet = hss yet − h2 ht Demanda de trabajo
ss

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]”

parámetros del modelo. El detalle de cómo se llegó a cada expresión se encuentra en el


capı́tulo 3.

Cuadro 16: Calibración


Parámetro Observación
α = 0.667 Proporción de largo plazo del trabajo en el ingreso nacional
θ = 3.968 Calibrado para que el trabajo en estado estacionario sea
igual a 20 %
ρ = 0.979 Persistencia del choque
β = 0.984 Factor de descuento
σe = 0.0072 Desviación estándar del choque de productividad

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”.

La segunda es que en el [mod2] cada variable declarada representa el logarı́tmo nepe-


riano de la variable. Por ejemplo “cc” es igual al “lnct ”. Cabe mencionar que el [mod1]
y [mod2] contienen al modelo no-lineal. La tercera es que en el [mod3] cada variable de-
clarada representa la desviación de la variable con respecto a su estado estacionario. Por
ejemplo “ct” es igual al “ct − css ”. Cabe mencionar que “ct” es una forma de representar
ct , tal como aparece en el modelo linealizado en niveles (ver el cuadro [14]).
e

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

Cuadro 17: Estado estacionario


Estado estacionario (forma recursiva) Estado estacionario (forma paramétrica)
rss = β1 = 1
β
α α
hss = θ(1−β(1−α))+α = θ(1−β(1−α))+α
ass = 1 =1
 1 −1/α  α
 1/α
kss = hss β(1−α) = θ(1−β(1−α))+α β(1 − α)
 α
 1/α
iss = kss = θ(1−β(1−α))+α β(1 − α)
 1   α
  1 −1
yss = kss β(1−α) = θ(1−β(1−α))+α β(1 − α) α
 1   α
 1/α  1 
css = kss β(1−α) −1 = θ(1−β(1−α))+α β(1 − α) β(1−α) − 1
 1 −1
wss = α hyss

ss
= α β(1 − α) α
Nota: El cálculo de los estados estacionarios se encuentran en Long Plosser.m (sección 2) (ver el capı́tulo 3).

una forma de representar b


ct , tal como aparece en el modelo log-linealizado (ver el cuadro
[15]).

Asimismo, es importante mencionar que el número de variables declaradas es el mismo


que el número de ecuaciones que se escribirá en el bloque model. Finalmente, la producti-
vidad en Dynare se declara como una variable endógena y es el choque t el que se declara
como exógena.

Cuadro 18: Declaración de variables endógenas


Modelo no-lineal Modelo lineal
Variable en niveles Variable en logarı́tmo Variable en niveles Variable en logarı́tmo
(mod1) (mod2) (mod3) (mod4)
var var var var
c cc ct ch
i ii it ih
y yy yt yh
k kk kt kh
h hh ht hh
r rr rt rh
w ww wt wh
a aa at ah
; ; ; ;

Definición de variables exógenas: la única variable exógena es la perturbación (error)


de la productividad t . La forma de introducirlo en el archivo .mod es similar entre las
cuatro versiones.
varexo e $e t$ (long name = ’Choque de productividad’);
Donde: $e t$ es el nombre que tomará a variable en formato LATEX, y (long name =
’Choque de productividad’) es el nombre “largo” que se asigna a la variable.

19
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Definición de parámetros: en el cuadro [19] se describe la definición de los parámetros,


la cual es similar en los cuatro archivos .mod. Cabe mencionar que no solo se indica los
parámetros asociados a las ecuaciones como la función de producción por ejemplo, sino
que también se define como parámetro a los valores de estado estacionario.

Cuadro 19: Declaración de los parámetros


parameters
theta $ \theta$ (long name = ’peso del ocio en la función de utilidad’)
beta $ \beta$ (long name = ’factor de descuento’)
alpha $ \alpha$ (long name = ’participación del trabajo en el ingreso nacional’)
rho $ \rho$ (long name = ’persistencia del choque’)
sigma ee $ \sigma e$ (long name = ’des. est. del choque’)
y ss
c ss
i ss
w ss
r ss
k ss
h ss
a ss
;
Nota: Esta declaración de parámetros pertenece al Mod1.

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.

¿Donde guarda Dynare la información acerca de las variables y los parámetros?


Dynare, luego de leer el archivo .mod, crea una variable en el workspace de Matlab: M , en
la cual guarda información del modelo. Bajo la categorización de las variables de Matlab,
esta variable es una estructura; es decir, puede contener otras variables, como numéricas
(matrices y vectores), lógicas y de cadena de caracteres (texto), inclusive puede contener
otra estructura.
En la figura [4] se observa que la variable M contiene un conjunto amplio de otras
variables. En este apartado se menciona aquellas en que Dynare guarda el nombre de las
variables y de los parámetros del modelo. Cabe mencionar que dado que estas variables
de Matlab guardan texto (nombres), entonces bajo la tipologia de Matlab son variables
de “cadena de caracteres (char)”.

Variable asociada al nombre del modelo: “fname” es una variable la cual con-
tiene el nombre del archivo .mod.

Variables asociadas a la variable exógena: en este caso existen tres variables.

20
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 20: Declaración de los valores de los parámetros


Para (mod1) al (mod4)
h ss=0.2;
beta=0.984;
alpha=0.667;
rho=0.979;
sigma ee=0.0072;
theta=alpha*(1-h ss)/(h ss*(1-beta*(1-alpha)));
r ss=1/beta;
a ss=1;
k ss=h ss*(1/(beta*(1-alpha)))∧ (-1/alpha);
i ss=k ss;
y ss=k ss*(1/(beta*(1-alpha)));
c ss=k ss*(1/(beta*(1-alpha))-1);
w ss=alpha*y ss/h ss;

Figura 4: Estructura M

Nota: Esta estructura M se obtiene del archivo “Long Plosser Dynare nolineal [Link]”

La primera es “exo names”, la cual contiene el nombre de la variable exógena. La


segunda es “exo names tex”, que contiene el nombre que la variable tomará en for-
mato LATEX; finalmente, “exo names long” que contiene los nombres extendidos de
las variables exógenas.
Variables asociadas a la variable endógena: al igual que en el caso de la variable
exógena, también existen tres variables para la variable endógena. La primera es
“endo names”, la cual contiene el nombre de las variables endógenas. La segunda
es “endo names tex”, que contiene el nombre que la variables tomará en formato
LATEX; finalmente, “endo names long” que contiene los nombres extendidos de las
variables endógeas.
Variables asociadas a los parámetros: en este caso existen cuatro variables. Una
de ellas es “params”, la cual contiene los valores de los parámetros (en el mismo orden
con que se ha escrito en el bloque parameters en el .mod); las tres variables restantes

21
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

están asociadas a los nombres de los parámetros: la primera es “param names”,


la cual contiene el nombre de los parámetros. La segunda es “param names tex”,
que contiene el nombre que los parámetros tomará en formato LATEX; finalmente,
“param names long” que contiene los nombres extendidos de los parámetros.

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:

>> M .endo names long

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

Definición del tiempo: es importante mencionar cómo Dynare considera el “tiem-


po”. En primer lugar cuando se escribe una variable en Dynare en “t” solo se coloca
la variable. Por ejemplo “c” representa ct . Si se desea escribir una variable adelantada
en un periodo se escribe “c(+1)”, la cual representa ct+1 .

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.

Variable de estado: es importante mencionar que el capital, en este modelo, es


una variable de estado; es decir, en “t” ya está determinada. Entonces el capital
en “t+1” es kt+1 , la cual fue determinada en “t”. Por tanto, cuando se escriba en
Dynare se debe de colocar “k” para representar kt+1 , y cuando en una ecuación
aparezca kt se debe de escribir en Dynare como “k(-1)”. Esto se puede observar en
la demanda de capital y la función de producción en el cuadro [21]. Por ejemplo:
la función de producción es yt = at ktα−1 hαt , la cual se escribe en Dynare como:
y=a*((k(-1))∧ (1-alpha))*h∧ (alpha).

Cuadro 21: Declaración del modelo no-lineal


Variables en niveles (mod1) Variables en logarı́tmo (mod2)
model; model;
1/c=beta*(1/c(+1))*(r(+1)); 1/exp(cc)=beta*(1/exp(cc(+1)))*(exp(rr(+1)));
k=i; exp(kk)=exp(ii);
theta/(1-h)=w/c; theta/(1-exp(hh))=exp(ww)/exp(cc);
y=a*((k(-1))∧ (1-alpha))*h∧ (alpha); exp(yy)=exp(aa)*((exp(kk(-1)))∧ (1-alpha))*exp(hh)∧ (alpha);
r=(1-alpha)*y/k(-1); exp(rr)=(1-alpha)*exp(yy)/exp(kk(-1));
w=(alpha)*y/h; exp(ww)=(alpha)*exp(yy)/exp(hh);
y=c+i; exp(yy)=exp(cc)+exp(ii);
ln(a)=rho*ln(a(-1))+e; aa=rho*aa(-1)+e;
end; end;

Además de lo anterior, del cuadro [21] se pueden desprender algunas conclusiones


especı́ficas:

Modelo no-lineal con variables en niveles (mod1): en este caso la variable


que representa el consumo es “c”, lo cual es similar para las demás variables. Las
ecuaciones están escritas de la misma forma que en el papel ; es decir, son las relaciones
de primer orden no lineales que surgen de la optimización. Cuando a Dynare se le
pida que realice la linealización creará la variable x = x − xss .

Modelo no-lineal con variables en logarı́tmo (mod2): en este caso en Dynare


se define la variable “ln x” como “xx”. Esto se realiza con el fin de considerar las
variables en logarı́tmos. Entonces, en cada ecuación del sistema no-lineal en lugar de
escribir “x” se reescribe dicha variable como “exp(ln x)”, la cual brinda el mismo “x”.

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:

Modelo lineal: cuando se desea escribir un modelo linealizado en Dynare se debe


de colocar la opción linear en el bloque model. Esto se hace de la siguiente manera:
model (linear); . . . end;
Modelo lineal con variable en niveles (mod3): en este caso se ha definido la
variable xt = x − xss , esta variable es la que representa la variable x
et del cuadro [14].
Modelo lineal con variable en logarı́tmo (mod4): en este caso se ha definido
la variable xh = lnx − lnxss , esta variable es la que representa la variable x
bt del
cuadro [15].

Una diferencia importante de las ecuaciones entre el modelo no-lineal y linealizado es


que en este último los valores de estado estacionario están presentes en las ecuaciones.

Cuadro 22: Declaración del modelo lineal


Variables en niveles (mod3) Variables en logarı́tmo (mod4)
model(linear); model(linear);
ct=beta*(r ss*ct(+1)-c ss*rt(+1)); ch=ch(+1)-rh(+1);
kt=it; (h ss/(1-h ss))*hh=wh-ch;
wt=(w ss/(1-h ss))*ht+(theta/(1-h ss))*ct; kh=ih;
yt=(y ss/a ss)*at+(1-alpha)*(y ss/k ss)*kt(-1) yh=ah+(1-alpha)*kh(-1)+alpha*hh;
+alpha*(y ss/h ss)*ht;
(y ss/k ss)*kt(-1)=yt-(k ss/(1-alpha))*rt; rh=yh-kh(-1);
wt=(alpha/h ss)*yt-((alpha*y ss)/(h ss)∧ 2)*ht; wh=yh-hh;
yt=ct+it; yh=(c ss/y ss)*ch+(i ss/y ss)*ih;
at=rho*at(-1)+e; ah=rho*ah(-1)+e;
end; end;

4.4. Valores iniciales


Los valores iniciales son importantes porque son el punto de partida que Dynare utiliza
para calcular el estado estacionario por medio de aproximaciones sucesivas. Usualmente
primero calculamos el estado estacionario manualmente para luego introducirlo en el blo-
que de valores iniciales. El cuadro [23] contiene lo forma de ingresar los valores iniciales
en Dynare según el tipo de modelo que estamos utilizando. De este cuadro se desprende
las siguientes conclusiones:

24
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Modelo no-lineal con variables en niveles: en esta forma de escribir el modelo,


el valor inicial de cada variable es el estado estacionario que previamente se ha
definido en el bloque de parámetros “parameters”, y que luego se ha calculado (ver
el cuadro [20]).

Modelo no-lineal con variables en logarı́tmo: debido a que la variable que se


ha definido es el logarı́tmo de ella misma (xx = ln x), entonces en los valores iniciales
se coloca “xx = lnxss ”. Cabe mencionar que en Matlab el logarı́tmo neperiano (ln)
se escribe como “log”.

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.

Modelo lineal con variables en logarı́tmo: de manera similar al caso anterior,


dado que la variable definida es “xh = lnx − lnxss ”, entonces el estado estacionario:
“xh = lnxss − lnxss ”, lo cual lleva a que xh = 0, siendo este valor lo que se coloca
en el bloque de valores iniciales para todas las variables.

Cuadro 23: Declaración de los valores iniciales


Modelo no-lineal Modelo lineal
Variables en niveles Variables en logarı́tmo Variables en niveles Variables en logarı́tmo
(mod1) (mod2) (mod3) (mod4)
initval; initval; initval; initval;
h =h ss; hh =log(h ss); ht =0; hh =0;
k =k ss; kk =log(k ss); kt =0; kh =0;
i =i ss; ii =log(i ss); it =0; ih =0;
c =c ss; cc =log(c ss); ct =0; ch =0;
w =w ss; ww =log(w ss); wt =0; wh =0;
r =r ss; rr =log(r ss); rt =0; rh =0;
y =y ss; yy =log(y ss); yt =0; yh =0;
a =a ss; aa =log(a ss); at =0; ah =0;
end; end; end; end;

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.

Cuadro 24: El comando Resid: resultados


Residuals of the static equations:
Equation number 1 : 0
Equation number 2 : 0
Equation number 3 : 0
Equation number 4 : 0
Equation number 5 : 0
Equation number 6 : 0
Equation number 7 : 0
Equation number 8 : 0

4.5. Estado estacionario


El cuadro [25] muestra los resultados de aplicar el comando steady;. De este cuadro
se desprende algunas conclusiones:
Modelo no-lineal con variables en logarı́tmo (mod2): recordemos que en
este modelo las variables están expresadas en logarı́tmo. Por ejemplo, el logarı́tmo
del consumo está representado por “cc”; es decir, cc = lnc. Entonces en estado
estacionario se tiene que ccss = lncss . Considerando que ccss = −2.56348, entonces
css = exp(−2.56348) = 0.0770361. De la misma manera se hace con las demás
variables.
Modelo lineal: en caso del modelo lineal con variables en niveles (mod3), se sa-
be que cada variable está expresada como la diferencia entre su nivel y su estado
estacionario. Por ejemplo, para el consumo se tiene ct = c − css . Evaluando la va-
riable en estado estacionario se tiene: ctss = css − css = 0. De manera similar se
tiene para el modelo lineal con variables en logarı́tmo (mod4). Por ejemplo, para el
consumo se tiene: ch = lnc − lncss . Al evaluar esta variable en estado estacionario:
chss = css − css = 0.

26
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 25: Estado Estacionario

Modelo No-Lineal Modelo Lineal


Variables en niveles variables en logarı́tmo Variables en niveles Variables en logarı́tmo
(mod1) (mod2) (mod3) (mod4)
c 0.0770361 cc -2.56348 ct 0 ch 0
i 0.037545 ii -3.28221 it 0 ih 0
y 0.114581 yy -2.16647 yt 0 yh 0
k 0.037545 kk -3.28221 kt 0 kh 0
h 0.2 hh -1.60944 ht 0 hh 0
r 1.01626 rr 0.0161294 rt 0 rh 0
w 0.382128 ww -0.962 wt 0 wh 0
a 1 aa 0 at 0 ah 0

¿Dónde guarda los estado estacionarios Dynare?


Dynare crea una variable estructura (similar a M ) llamada oo , en la cual guarda las
simulaciones, el estado estacionario, los momentos de las variables endógenas (media,
varianza y autocorrelación) y la función impulso-respuesta de cada variable. En la figura
[5] se muestra todas las variables que tiene la estructura oo .

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]).

4.6. Definición del choque


Para los cuatro archivos .mod se define de manera similar el choque. El cuadro [26]
muestra cómo se escribe en Dynare la varianza del choque de productividad.

27
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Figura 6: oo .steady state

Nota: Esta variable oo .steady state se obtiene del archivo “Long Plosser Dynare nolineal [Link]”

Cuadro 26: Definición del choque


shocks;
var e = (sigma ee)∧ 2;
end;

4.7. Evaluación del modelo


Para evaluar el modelo se coloca el código check;, el resultado de este comando es el
vector de eigenvalores de la matriz F. Esta matriz se obtiene de escribir el modelo (sistema
de ecuaciones lineales) en forma de estado-espacio. La ecuación (1) refleja la versión estado-
espacio del modelo. En el capı́tulo 3 se describe cómo se obtiene esta ecuación en mayor
detalle.
   
Xt+1 Xt
=F + GVt+1 (1)
Et Yt+1 Yt
En el cuadro [27] se escribe el vector de eigenvalores de cada modelo; además, Dynare
muestra un mensaje que indica si el modelo cumple la condición de Blanchard y Kahn.
Por ejemplo en el mod1 se observa que existen cuatro eigenvalores cuyos módulos son:
0.333, 0.979, 3.052 y ∞. De estos cuatro módulos, dos son mayores a uno. De otro lado, el
modelo tiene dos variables forward looking ct+1 y rt+1 . Por tanto se cumple la condición de
Blanchard y Kahn la cual indica que si el número de eigenvalores cuyo módulo es mayor
a uno es igual al número de variables forward looking, entonces el sistema tiene solución
única. Este es el mensaje que Dynare imprime en pantalla.

¿Dónde guarda Dynare el vector de eigenvalores?


Dentro de la estructura oo que Dynare crea cuando procesa el modelo se encuentra la
estructura oo .dr. Esta estructura guarda dos variables importantes: los eigenvalores y la
regla de decisión; es decir, la solución del modelo. En la figura [7] se muestra las variables
que contiene oo .dr.

28
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 27: Eigenvalores


Modelo No-Lineal
Variables en niveles (mod1) Variables en logaritmos (mod2)
Modulo Real Imaginario Modulo Real Imaginario
0.333 0.333 0 0.333 0.333 0
0.979 0.979 0 0.979 0.979 0
3.052 3.052 0 3.052 3.052 0
Inf -Inf 0 9.84E+15 -9.84E+15 0
Hay dos eigenvalores mayores que 1 Hay dos eigenvalores mayores que 1
en módulo para 2 variables forward-looking en módulo para 2 variables forward-looking
La condición de rango es verificada La condición de rango es verificada
Modelo Lineal
Variables en niveles (mod3) Variables en logaritmos (mod4)
Modulo Real Imaginario Modulo Real Imaginario
0.333 0.333 0 0.333 0.333 0
0.979 0.979 0 0.979 0.979 0
3.052 3.052 0 3.052 3.052 0
4.59E+17 4.59E+17 0 Inf -Inf 0
Hay dos eigenvalores mayores que 1 Hay dos eigenvalores mayores que 1
en módulo para 2 variables forward-looking en módulo para 2 variables forward-looking
La condición de rango es verificada La condición de rango es verificada

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:

stoch simul(order = 1, irf = 40);


Donde: “order = 1” indica que el modelo debe ser aproximado por la expansión de Taylor
de primer orden. Esta opción no opera cuando en el bloque del modelo se ha especificado
que el modelo es lineal por medio de “model(linear)”. Algunas observaciones emergen
del cuadro [28]:

Modelo no-lineal con variable en niveles (mod1): para el consumo “c” la


solución es la siguiente:

c = 0.077 + 0.683k(−1) + 0.075a(−1) + 0.077

Debido a que se le ha pedido a Dynare que linealice el sistema (order=1), lo cual


permite obtener un sistema de ecuaciones como el cuadro [14], entonces la variable

29
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Figura 7: Reglas de decisión (oo .dr)

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]”

de estado k(-1) y exógena a(-1) están expresadas como desviaciones de su estado


estacionario. Es decir: k(−1) = kt − kss y a(−1) = at−1 − ass , entonces:

ct = 0.077 + 0.683(kt − kss ) + 0.075(at−1 − ass ) + 0.077t


Cabe mencionar que la constante 0.077 es el valor de estado estacionario del consumo.
(ct − 0.077) = 0.683(kt − kss ) + 0.075(at−1 − ass ) + 0.077t
Factorizando 0.077 de (at−1 − ass ) y et , se tiene:
(ct − 0.077) = 0.683(kt − kss ) + 0.077(0.979(at−1 − ass ) + et )

Se sabe que en el modelo no-lineal la ecuación de la productividad es lnat =


ρlnat−1 + t ; sin embargo, al solicitar a Dynare que linealice el sistema, esta ecuación
es transformada en: e at = 0.979e at = at −ass . Por tanto reemplazando
at−1 +et , donde e
esta expresión en la ecuación anterior:
(c − 0.077) = 0.683e
kt + 0.077e
at
| t {z }
ct
e

30
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

ct = 0.683e
e kt + 0.077e
at

Esta es la función de polı́tica del consumo (expresada en desviaciones de su esta-


do estacionario): e ct = F (e
kt , e
at ). Los coeficientes se leen de la siguiente manera: un
incremento en una unidad en e kt (manteniendo lo demás constante) produce un in-
cremento de e ct en 0.683 unidades; es decir, si el capital de hoy se aleja en una unidad
con respecto a su estado estacionario, el consumo se aleja en 0.683 unidades con
respecto a su estado estacionario. Estos coeficientes permiten calcular en unidades
la desviación de las variables con respecto a su estado estacionario; sin embargo, una
medida más apropiada serı́a considerar dicha desviación en términos porcentuales.
Para ello se puede realizar lo siguiente:

(ct − 0.077) = 0.683(kt − kss ) + 0.077(at − ass ) + t


(ct − 0.077) (kt − kss ) (at − ass )
css = 0.683 kss + 0.077 ass + t
css kss ass
ct css = 0.683b
b kt kss + 0.077bat ass + t
ct css = 0.683kss b
b kt + 0.077ass b
at + t
ct 0.077 = 0.683 ∗ 0.0375kt + 0.077 ∗ 1b
b b at + t
ct 0.077 = 0.0256b
b kt + 0.077b
at + t (2)

De la ecuación (2) la variable xbt se lee como la desviación porcentual de la varia-


ble con respecto a su estado estacionario. Entonces: un incremento en 1 % en b kt ; es
decir, que el capital se esta incrementando en 1 % con respecto a su estado estacio-
nario, produce un incremento de (0.0256/0.077)*1 % = 0.333 % de b ct ; es decir, que
el consumo se desvı́a por encima de su estado estacionario en un 0.333 %.

Modelo no-lineal con variable en logarı́tmos (mod2): en este caso la solución,


por ejemplo, para el consumo es:

cc = −2.563 + 0.333kk(−1) + 0.979aa(−1) + e

Considerando que Dynare ha realizado la linealización tomando en cuenta que cada


variable está expresada en logarı́tmo, entonces cct = lnct , pero la variable de estado
y la variable exógena están expresadas como: kk(−1) = lnkt − lnkss y aa(−1) =
lnat−1 − lnass .

lnct = −2.563 + 0.333(lnkt − lnkss ) + 0.979ln(lnat−1 − lnass ) + et

La constante de esta ecuación corresponde al estado estacionario de la variable; es


decir, lncss = −2.563, entonces: css = exp(−2.563) = 0.077, lo cual coincide con lo
calculado en el primer modelo (mod1). Introduciendo esto en la ecuación previa:

31
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

lnct = −2.563 + 0.333(lnkt − lnkss ) + 0.979(lnat−1 − lnass ) + et


lnct − lncss = 0.333(lnkt − lnkss ) + 0.979(lnat−1 − lnass ) + et
ct = 0.333b
b kt + 0.979b
at−1 + et
| {z }
at
b

ct = 0.333b
b kt + b
at (3)

En este caso los coeficientes son elasticidades; es decir, si el capital aumenta en 1 %


con respecto a su estado estacionario (manteniendo lo demás constante), el consumo
se incrementa en 0.333 % con respecto a su estado estacionario.

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).

Cuadro 28: Función de polı́tica y de estado


Modelo no-lineal: variables en niveles (mod1)
c i y k h r w a
Constante 0.077 0.038 0.115 0.038 0.2 1.016 0.382 1
k(-1) 0.683 0.333 1.016 0.333 0 -18.054 3.389 0
a(-1) 0.075 0.037 0.112 0.037 0 0.995 0.374 0.979
e 0.077 0.038 0.115 0.038 0 1.016 0.382 1
Modelo no-lineal: variables en logarı́tmo (mod2)
cc ii yy kk hh rr ww aa
Constante -2.563 -3.282 -2.166 -3.282 -1.609 0.016 -0.962 0
kk(-1) 0.333 0.333 0.333 0.333 0 -0.667 0.333 0
aa(-1) 0.979 0.979 0.979 0.979 0 0.979 0.979 0.979
e 1 1 1 1 0 1 1 1
Modelo lineal: variables en niveles (mod3)
ct it yt kt ht rt wt at
kt(-1) 0.683 0.333 1.016 0.333 0 -18.054 3.389 0
at(-1) 0.075 0.037 0.112 0.037 0 0.995 0.374 0.979
e 0.077 0.038 0.115 0.038 0 1.016 0.382 1
Modelo lineal: variables en logarı́tmo (mod4)
ch ih yh kh hh rh wh ah
kh(-1) 0.333 0.333 0.333 0.333 0 -0.667 0.333 0
ah(-1) 0.979 0.979 0.979 0.979 0 0.979 0.979 0.979
e 1 1 1 1 0 1 1 1
Este cuadro ha sido construido en base a lo que muestra Dynare en el prompt de Matlab
manteniendo el orden (inicial) de las variables que aparece en el .mod.

32
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

De lo anterior, dos conclusiones son importante mencionar: la primera es que es preferi-


ble que en la función de polı́tica cada variable esté expresada en desviaciones porcentuales
con respecto al estado estacionario; es decir, se prefiere variables en logarı́tmo. Esto se
debe a que los coeficientes de la solución se entienden como elasticidades y porque permite
tener una lectura sencilla de la función impulso-respuesta. La segunda es que sea que colo-
quemos el modelo no-lineal en Dynare o que lo hayamos linealizado y luego lo coloquemos
en Dynare, los coeficientes de la función de polı́tica y de estado serán los mismos. Por
ejemplo para las variables en niveles: el modelo no-lineal (mod1) y el lineal (mod3) tienen
los mismos coeficientes. De manera similar para las variables en logarı́tmo (mod2 y mod4).

¿Dónde guarda Dynare los coeficientes de la función de polı́tica y de estado?


Dynare guarda la función de polı́tica y de estado en varias variables dentro de la estructura
“oo .dr”. Existen algunas consideraciones para capturar de manera correcta los coeficien-
tes de estas funciones.

[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:

Posición inicial Posición reordenada


   
1 c i 2
2 i
 
y 
  3
3 y 
 
h
  5
4 k  w 7
  −→  
5 h
 
k 
  4
6 r
 
a
  8
7 w c 1
8 a r 6

[2] Función de polı́tica y de estado como sistema de ecuaciones: sea el vector


de variables endógenas reordenadas Yt , el vector de los valores de estado estacionario Yss ,
la matriz que contiene los coeficientes de las variables de estado “ghx”, el vector de las
variables de estado Xt y el vector que contiene los coeficientes asociados al error “ghu”.
Entonces el sistema de ecuaciones que representan las funciones de polı́tica y de estado es:

Yt = Yss + ghx ∗ Xt + ghu ∗ Ut


Escribiendo este sistema en su forma extensiva:

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:

i = iss + ηik k(−1) + ηia a(−1) + ηiu e

La cual para el mod2, en el cuadro [28], se tiene:

i = −3.282 + 0.333k(−1) + 0.979a(−1) + 1e

[3] Coeficientes de estas funciones en oo .dr: el vector de estado estacionario se


encuentra en “oo .[Link]”, la cual mantiene el orden inicial de las variables. El nuevo orden
solo aplica para la matriz asociada a las variables de estado y del error, las cuales están
guardadas respectivamente en “oo .[Link]” y “oo .[Link]”.

−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

4.9. Función Impulso Respuesta (IRF)


Como se menciono previamente, la estructura oo también contiene la función impulso-
respuesta del modelo. Debido a que se requiere que todas las variables endógenas respondan
al impulso, entonces Dynare crea otra estructura llamada “irfs”, en la cual guarda la
función impulso-respuesta de cada variable como se puede ver en la figura [9].
Si se requiere solo la función-impulso respuesta del consumo, por ejemplo, entonces
basta con hace click en la variable “oo .[Link] e”. Como se puede ver en la figura [10], la va-
riable “oo .[Link] e” contiene un vector de 40 periodos, lo cual fue definifo en stoch simul
cuando se colocó “irf=40”.

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

Figura 9: Función impulso-respuesta (oo .irfs)

Nota: Esta función impulso-respuesta se obtiene del archivo “Long Plosser Dynare nolineal [Link]”

Figura 10: Función impulso-respuesta del consumo (oo .[Link] e)

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.

1 dynare Long Plosser Dynare nolineal log;


2 IRF = [oo .[Link] e', oo .[Link] e', oo .[Link] e', oo .[Link] e', ...
oo .[Link] e',oo .[Link] e', oo .[Link] e', oo .[Link] e',];
3 names = {'Consumo', 'Inversión', 'Producto', 'Capital', 'Trabajo', ...
'Tasa de interés', 'Salario real', 'Productividad'};
4 for i=1:size(IRF,2)
5 subplot(2,4,i)
6 plot(IRF(:,i),'LineWidth', 1.5);
7 title(names{i});
8 grid;
9 end
10 orient landscape
11 saveas(gcf,'ifrs nolineal log matlab','pdf');

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

Figura 11: Función impulso-respuesta (gráfica de Dynare)


cc ii yy
0.015 0.015 0.015

0.01 0.01 0.01

0.005 0.005 0.005

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]”

se guarda el gráfico, en orientación horizontal (orient landscape) y luego la guarda en


extensión pdf (lı́nea 11).

4.10. Análisis de sensibilidad


El cuadro [13] muestra la función impulso-respuesta ante tres valores de la persistencia
del choque de productividad. Se puede observar que mientras mayor persistencia muestra
el choque, mayor es la reacción de cada variable endógena (excepto la tasa de interés
y el trabajo, el cual se mantiene en su valor de estado estacionario). Además, se puede
observar que las variables se tomán más tiempo para volver a su estado estacionario. Este
gráfico se obtiene al escribir los siguientes códigos en el archivo .mod después de escribir
stoch simul.

1 % Valores del parámetro


2 rhos = [0.5 0.7 0.9];
3 for j= 1:size(rhos,2)
4 rho = rhos(j);
5 stoch simul(order=1, irf=40, nograph, nomoments,nofunctions);
6 oo sen{j} = oo ;
7 end;
8 % Gráfica
9 name = {'Consumo', 'Inversión','Producción','Capital','Trabajo','Tasa ...
de interés real', 'Salario', 'Productividad'};
10 field name = fieldnames(oo sen{1}.irfs); time = 1:40;
11 for j=1:size(name,2)
12 subplot(2,4,j)
13 plot(time,oo sen{1}.irfs.(field name{j}),...
14 time,oo sen{2}.irfs.(field name{j}),'--',...
15 time,oo sen{3}.irfs.(field name{j}),'-.','LineWidth', 1.5)
16 title(name{j});

36
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Figura 12: Función impulso-respuesta (gráfica de Matlab)

−3 Consumo −3 Inversión −3 Producto −3 Capital


x 10 x 10 x 10 x 10
11 11 11 11

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).

Figura 13: Análisis de sensibilidad: persistencia del Choque de productividad ρ

−3 Consumo −3 Inversión −3 Producción −3 Capital


x 10 x 10 x 10 x 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

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]”

4.11. Simulación de las variables endógenas


Luego de que Dynare encuentra la solución del sistema linealizado se puede obtener la
representación de series de tiempo ARMA(p,q) de las variables endógenas. Por ejemplo,
del cuadro [28] para el capital del modelo no-lineal con variable en logarı́tmo se tiene:

kkt+1 = kkss + ηkk kkt + ηka aat−1 + t


kkt+1 − kkss = ηkk kkt + ηka aat−1 + t
(lnkt+1 − lnkss ) = ηkk (lnkt − lnkss ) + ηka (lnat−1 − lnass ) + t
kt+1 = ηkk b
b kt + ηka b
at−1 + t
kt+1 = 0.333b
b kt + 0.979bat−1 + t
| {z }
at
b

kt+1 = 0.333b
b kt + b
at
(1 − 0.333L)b
kt+1 = b
at (4)

Considerando que la productividad, que se comporta como un AR(1), se puede expresar


en su forma MA(∞):

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

Introduciendo la ecuación (5) en la ecuación (4) se tiene que el capital se comporta


como un AR(2):

(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:

stoch simul(order=1, periods = 150)

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

Figura 14: Estructura oo (simulación)

Nota: Esta estructura se obtiene de “Long Plosser Dynare nolineal [Link]”

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.

4.12. Cálculo de los momentos


El cuadro [29] muestra los momentos calculados por Dynare para los cuatro formas de
escribir el modelo en Dynare. Una primera observación es que los momentos son similares
cuando las variables tienen la misma naturaleza; es decir, si las variables están en niveles
entonces no importa si el modelo que se escribió en Dynare fue no-lineal o linealizado,
los momentos son similares. Lo mismo se concluye para las variables en logarı́tmo. Una
segunda observación es que los momentos entre el modelo con las variables en niveles y el
modelo con las variables en logarı́tmo son diferentes, lo cual es consistente con lo esperado.

¿Dónde guarda Dynare los momentos?


Dynare guarda la media, la matriz de varianza y covarianza y las autocorrelaciones dentro
de la estructura oo . Como se puede ver en la figura [14], el promedio se guarda en la

40
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Figura 15: Simulación de la variable exógena

Nota: Esta estructura se obtiene de “Long Plosser Dynare nolineal [Link]”

Figura 16: Simulación de la variable endógena

Nota: Esta estructura se obtiene de “Long Plosser Dynare nolineal [Link]”

variable “mean”, la matriz de covarianza en la variable “var” y la matriz de autocorrelación


en “autocorr”.

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:

stoch simul(order=1, hp filter= lambda)

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

Figura 17: Seis simulaciones del capital y el producto

Capital (lnk − lnkss) Producto (lny − lnyss)


−3.05 −1.95

−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);

La función “hpfilter.m” requiere dos insumos. El primero es la serie o conjunto de


series a la que se desea aplicar el filtro, en este caso es la primera simulación de capital
“kk sim(:,1)”. La segunda es el parámetro de suavizamiento, el cual depende de la frecuen-
cia de los datos (que se refleja en la calibración). Este parámetro toma el valor de 14400
para datos mensuales, 1600 para datos trimestrale y 100 para datos anuales; en este caso
en particular estamos considerando datos trimestrales por ello se coloca 1600.

Asimismo, esta función entrega dos resultados: la primera es el componente tendencial


de la serie (trend k) y la segunda es el componente cı́clico (ciclo k). En la figura [18] se
observa el componente cı́clico y tendencial del capital derivado de la aplicación del filtro
HP.

42
Macrodinamica (Tomo I) Modelos de ciclos económicos reales

Cuadro 29: Momentos teóricos


Modelo No-Lineal
Variables en niveles Variables en logaritmos
Variable Media Des. Est. Varianza Variable Media Des. Est. Varianza
c 0.077 0.004 0 cc -2.564 0.053 0.0028
i 0.038 0.002 0 ii -3.282 0.053 0.0028
y 0.115 0.006 0 yy -2.167 0.053 0.0028
k 0.038 0.002 0 kk -3.282 0.053 0.0028
h 0.200 0 0 hh -1.609 0 0
r 1.016 0.008 0.0001 rr 0.016 0.008 0.0001
w 0.382 0.020 0.0004 ww -0.962 0.053 0.0028
a 1 0.035 0.0012 aa 0 0.035 0.0012
Modelo Lineal
Variables en niveles Variables en logaritmos
Variable Media Des. Est. Varianza Variable Media Des. Est. Varianza
ct 0.077 0.004 0 ch -2.564 0.053 0.0028
it 0.038 0.002 0 ih -3.282 0.053 0.0028
yt 0.115 0.006 0 yh -2.167 0.053 0.0028
kt 0.038 0.002 0 kh -3.282 0.053 0.0028
ht 0.200 0 0 hh -1.609 0 0
rt 1.016 0.008 0.0001 rh 0.016 0.008 0.0001
wt 0.382 0.020 0.0004 wh -0.962 0.053 0.0028
at 1 0.035 0.0012 ah 0 0.035 0.0012

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

Cuadro 30: Momentos teóricos (filtro HP)


Momentos teóricos (HP filter, lambda=1600)
Variable Media Des. Est. Varianza
cc -2.5635 0.0126 0.0002
ii -3.2822 0.0126 0.0002
yy -2.1665 0.0126 0.0002
kk -3.2822 0.0126 0.0002
hh -1.6094 0 0
rr 0.0161 0.0072 0.0001
ww -0.962 0.0126 0.0002
aa 0 0.0094 0.0001

Figura 18: Componente cı́clico y tendencial del capital


El capital y su componente tendencial El componente ciclico del capital
−3.1 0.03
Capital
Tendencia del capital

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

Cuadro 31: Códigos en Matlab y Dynare


Códigos Descripción
Matlab
irfs nolineal log.m Este m-file ilustra que los gráficos la fun-
ción impulso-respuesta obtenidos de Dy-
nare pueden ser mejorados mediante códi-
gos de Matlab.
simulacion filtrohp.m Este m-file aplica el filtro HP a la series
simuladas del modelo.
aux irfs nolineal log.m Este m-file grafica las funciones impulso-
respuesta por medio de un bucle.
aux analisis sensibilidad.m Este m-file decribe el código que se pue-
de escribir al final de un archivo .mod pa-
ra realizar análisis de sensibilidad; es de-
cir, para obtener las funciones impulso-
respuesta ante diferentes valores de los
parámetros.
Dynare
Long Plosser Dynare nolineal [Link] Este .mod contiene las ecuaciones no-
lineales y con las variables en niveles del
modelo de Long y Plosser (1983, 1989).
Long Plosser Dynare nolineal [Link] Este .mod contiene las ecuaciones no-
lineales y con las variables en logarı́tmo
del modelo de Long y Plosser (1983, 1989).
Este código es utilizado en el capı́tulo 2 y
3. En el capı́tulo 2, este código se usa pa-
ra ejemplificar los comandos de Dynare.
En el capı́tulo 3 se utiliza para obtener la
solución del modelo y los IRF.
Long Plosser Dynare lineal [Link] Considera el modelo lineal con las varia-
bles en niveles del modelo de Long y Plos-
ser (1983, 1989).
Long Plosser Dynare lineal [Link] Considera el modelo lineal con las varia-
bles en logarı́tmo del modelo de Long y
Plosser (1983, 1989).

45

También podría gustarte