Вы находитесь на странице: 1из 29

Politica Monetaria y Cambiaria

Introducci
on a Dynare

Instituto FMI

Diciembre 2012

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

1 / 29

Dynare

Dynare es una colecci


on de rutinas de Matlab que resuelven, simulan y
estiman modelos no lineales con variables forward-looking.
Se escribi
o en Pars por investigadores del CEPREMAP.
El c
odigo y su documentaci
on estan disponbles en www.dynare.org/
Se usan en muchos bancos centrales e instituciones educativas como el MIT y
Northwestern.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

2 / 29

Ejemplo del uso de Dynare

Suponga que quiere analizar el problema del planificador central de un modelo


RCB tradicional
X
maxE
t (ln Ct + ln (1 lt ))
(1)

s.tct + kt = kt1
(zt lt )

ln zt = ln zt1 +

+ (1 ) kt1

utz

Note que para Dynare el capital debe estar definido al final del perodo. Por eso
entra como kt1 en la funci
on de producci
on.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

3 / 29

Como usar Dynare para resolver el modelo

Paso 1: Encuentre las condiciones de primer orden del modelo

Paso 2: Encuentre el sistema no lineal de estado estacionario

Paso 3: Escriba estas ecuaciones en un archivo con extension .mod

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

4 / 29

Paso 1: Encuentre las condiciones de primer orden

L=





(1)

t (ln Ct + ln (1 lt )) + t kt1
(zt lt )
+ (1 ) kt1 Ct kt

t=0

y las condiciones de primer orden sera:




t
t 1
Et
t = 0
Ct



(1)
t
t

Et
+ t (1 ) kt1 zt
lt
=0
(1 lt )
h


i
(1)
Et t+1 t+1 kt1 (zt+1 lt+1 )
+ (1 ) t t = 0

i
h
(1)

(zt lt )
+ (1 ) kt1 Ct kt = 0
Et kt1
Et [zt zt1 utz ] = 0

(1)

(2)
(3)
(4)
(5)

Regla de oro: Tengo el mismo n


umero de ecuaciones que de variables? Si 5
ecuaciones para 5 variables
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

5 / 29

Paso 1: Continuacion...

Es posible simplificar estas ecuaciones un poco







1
kt1
(1)
Et
+
(1 )
zt
=0
(1 lt ) Ct
lt
"
!
#

1

lt+1 zt+1
1
Et

+ (1 )
=0
Ct+1
kt
Ct
h
i
(1)

Et kt1
(zt lt )
+ (1 ) kt1 Ct kt = 0

(6)

(7)
(8)

Et [zt zt1 utz ] = 0

(9)

donde se simplifico y se elimin


o la variable de coestado t . Por eso ahora
tenemos s
olo tres ecuaciones.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

6 / 29

Paso 2: Encontrar o simplificar el estado estacionario

En Dynare es posible escribir:


la soluci
on analtica del estado estacionario
o en su defecto escribir un buen valor inicial para la solucion del sistema de
estado estacionario.
El principio general es que Dynare usa las ecuaciones escritas del estado
estacionario como valor inicial de un algoritmo numerico de solucion de ecuaciones
no lineales.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

7 / 29

Paso 2: Continuacion...
El sistema no lineal de estado estacionario sera:
 
1
k

+ (1 )
z (1) = 0

(1 l) C
l
!
 1

lz
1

+ (1 ) = 0
C
k
C
(1)

k (zl)

(10)

(11)

+ (1 ) k C k = 0

(12)

este sistema de ecuaciones se puede solucionar analticamente o se puede


mediante metodos numericos. Como se dijo antes Dynare por defecto encuentra el
sistema de estado estacionario y lo resuelve con metodos numericos para los
cuales usa como valor inicial (semilla) el valor del estado estacionario dado por el
usuario en el archivo .mod.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

8 / 29

Paso 2: Continuacion...

La mejor semilla inicial es la soluci


on!
1
 
 1
1 1 1
f =
(1 )
z


1
(1)
(zf )


k =
+f
(1 ) f1 z (1)
l = fk


(1)
C = (zf )
k

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

9 / 29

Paso 3: Escribir el modelo en Dynare

El archivo .mod tiene varias elementos:


1

El listado de variables end


ogenas

El listado de variables ex
ogenas

El listado del parametros y su valor

El modelo lineal o no lineal


El estado estacionario

5
6

stock simul() o simul

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

10 / 29

Paso 3: Continuacion
%%%%
%%%%
%%%%
%%%%
%%%%

Este c
odigo resuelve el modelo RBC tradicional
Escrito por Andr
es para los amigos de Centro America
Fecha de esta versi
on: 27 de Octubre de 2012
Tareas por hacer: Revisar el algebra estado estacionario
Mejorar la calibraci
on.

%Listado de las variables endogenas


var c k l z;
%Listado de las variables exogenas
varexo uz;
%Listado de parametros
parameters alpha, delta, betta, rho, f, zbar, psi;
alpha = 0.3;
delta = 0.05/4;
betta = 0.98;
rho = 0.90;
psi = 3.0;
zbar =1.0;
f = (1/zbar)*( (1/alpha)* ( ( 1/betta)-(1-delta) ) )^(1/(1-alpha));

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

11 / 29

Paso 3: Continuacion...

%Escribimos las condiciones de primer orden


model;
((1-alpha)/exp(c))*((exp(k(-1))/exp(l))^alpha)*
(exp(z)^(1-alpha))=(psi/(1-exp(l)));
(betta/exp(c(+1)))*( alpha*(exp(l(+1))*exp(z(+1))/exp(k))^(1-alpha)
+(1-delta)) =1/exp(c);
(exp(k(-1))^alpha)*(exp(z)*exp(l))^(1-alpha) +
( 1- delta)*exp(k(-1)) - exp(c)- exp(k) = 0;
z = rho*z(-1) + (1-rho)*log(zbar) +
end;

(Andr
es Gonz
alez)

uz;

Dynare

Diciembre 2012

12 / 29

Paso 3: Explicacion
El comando model log-lineariza el modelo pero Dynare lo que sabe hacer es
linearizar. Al escribir
xt = exp ln xt
entonces al linearizar se estara log-lineariazando.
Ejemplo: Se quiere linearizar la ecuaci
on yt = ct + it :

y +





ct
it
yt

(y

)
=
c

+
(c

)
+
i
+
it i
t
t



yt yt =y
ct ct =c
it it =i


pero i = it i y en SS se tiene que y = c + i entonces
yt = ct + it

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

13 / 29

Paso 3: Continuacion...
Ahora si linearizamos
exp(ln yt ) = exp(ln ct ) + exp (ln it )
entonces


exp(ln yt )
exp(ln ct )
y +
(ln yt ln y ) = c +
(ln ct ln c)
ln yt ln yt =ln y
ln ct ln ct =ln c


exp(ln ct )
ln it ln i
+ i +

ln ct

ln it =ln i


definiendo i = ln it ln i entonces
y yt = cct + iit
que es distinto a la versi
on linearizada de la ecuaci
on.
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

14 / 29

Paso 3: Solucion del modelo


%% Steady State
initval;
z = zbar ;
k = (psi*((z*f)^(1-alpha)-delta)/((1-alpha)*( (1/f)^(alpha)*z^(1-alpha)
l = k*f;
c = ((z*f)^(1-alpha) - delta)*k;
%% El estado estacionario del modelo esta en logaritmos.
k = log(k);
l = log(l);
c = log(c);
z = log(z);
end;

)) + f)^-1;

steady;
check;
%%Resuelve y simula el modelo
stoch_simul(order=1,irf=50);

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

15 / 29

Continuacion..
Que hacen las instrucciones steady, check y stoch simul?
1

Steady;
1

Este comando resuelve con metodos numericos el modelo de estado


estacionario. Usa como valores iniciales para las variables los valores definidos
entre initval y end.
Hay varios algoritmos de optimizaci
on disponibles para encontrar el estado
estacionario. Estos se pueden seleccionar mediante la instrucci
on:

steady(solve algo=0)
2

El comando check:
1

Calcula los valores propios del modelo linearizado alrededor del valor definido
en steady.
Una condici
on necesaria para que exista un u
nico equilibrio estable alrededor
del SS es que hayan tantos valores propios mayores a uno en modulo como el
numero de variables forward looking.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

16 / 29

stoch simul

Esta funci
on resuelve el modelo usando los metodos de perturbacion:
Klein, P. (2000): Using the generalized Schur form to solve a multivariate linear rational expectations model, Journal of Economic Dynamics and Control, 24, 1405-1423.
Sims, C. A. (2002): Solving Linear Rational Expectations Models,
Computational Economics, 20, 1-20.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

17 / 29

Algo sobre los metodos de solucion


Las condiciones de primer orden se pueden escribir como:
Et (Wt , Wt+1 ; ) = 0
donde Wt contiene tanto las variables de estado como de control.
La idea de la linearizaci
on o log-linearizaci
on es aproximar el sistema de
ecuaciones no-lineales (Wt , Wt+1 ; ) = 0 con un sistema lineal. Para esto,
se usa la expansi
on de Taylor alrededor del estado estacionario. La expansion
de Taylor alrededor del estado estacionario nos lleva a un sistema lineal de la
forma
t+1 = B W
t
AEt W
t = Wt W y W es el valor de estado estacionario de Wt donde A
donde W
y B se pueden definir as:


W
W
A=
, B=
Wt+1
Wt
(W )
donde Wt+1 es Jacobiano de la funci
on (Wt , Wt+1 ; ) evaluada en el
estado estacionario.
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

18 / 29

Intuicion de la solucion
Suponga que el modelo se define por las siguientes ecuaciones
xt = aEt xt+1 + zt
zt+1 = zt + t+1
siendo xt una variable end
ogena y zt la variable ex
ogena.
Para encontrar la soluci
on se iterara hacia adelante. Esto es,
xt = aEt xt+1 + zt

xt+1 = aEt+1 xt+2 + zt+1

luego
xt

= aEt Et+1 xt+1 + zt


=
=
=

(Andr
es Gonz
alez)

a2 Et xt+2 + aEt zt+1 + zt


..
.

X
aj Et zt+1
lm aj Et xt+j +
j

j=0
Dynare

Diciembre 2012

19 / 29

Continuacion...
donde Et zt+j = j zt entonces
xt = k zt
donde k =

Pk

i=0

(a) . Si lmk ak Et xt+k = 0 entonces la solucion:

Existe si |a| < 1 en este caso


k =

1
(1 a)

y no existe si a = 1.
Cuando la soluci
on existe y se cumple lmk ak Et xt+k = 0 entonces esta es
u
nica.
Una caracterstica importante de la soluci
on es que las variables endogenas de hoy
dependen del flujo esperado y del comportamiento de las fuerzas exogenas en este
caso de zt .
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

20 / 29

Continuacion...

En el caso general la soluci


on son unas matrices P y Q tal que
Xt = PXt1 + QZt
Zt = NZt1 + t
siendo Xt el vector de variables end
ogenas y Zt el vector de variables exogenas.
A partir de esta soluci
on se puede:
Simular el modelo
Hacer an
alisis de poltica
Impulso respuesta
y estimaci
on.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

21 / 29

Que pasa si el modelo ya esta linearizado?


En este caso el archivo .mod cambia en dos partes:
1
2

La instrucci
on model; end; cambia por la model(lineal); end;
El estado estacionario sera cero en este caso y por tanto las variables en SS
definidas dentro del comando initval; end; debe ser ceros.

Ejemplo: Suponga que tiene el modelo NK ya liearizado conformado por las


ecuaciones:
1
(it Et t+1 ) + utx

t = Et t+1 + xt
xt = Et xt+1 +

it = t + xt + uti
donde = (1 ) (1 )/.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

22 / 29

Modelo linealizado en Dynare


var pi x i ux, ui, upi;
varexo s_ux, s_ui, s_upi;
parameters sigma, kappa, betta, eta, omega, gamma, rho_pi, rho_x, rho_upi,rho_ui, rho_ux;
rho_pi =1.5;
rho_x = 0.0;
rho_upi= 0.5;
rho_ui=0.5;
rho_ux=0.5;
betta = 0.98;
omega = 0.8;
eta = 1.0;
sigma = 1.0;
gamma = sigma+eta;
kappa = gamma*(1-omega)*(1-betta*omega)/omega;
model(linear);
x = x(+1) - (1/sigma)*(i-pi(+1))+ux;
pi = betta*pi(+1) + kappa*x+upi;
i = rho_pi*pi + rho_x*x + ui;
upi = rho_upi*upi(-1) + s_upi;
ui = rho_ui*ui(-1) + s_ui;
ux = rho_ux*ux(-1) + s_ux;
end;
initval;
pi =0;
x = 0;
i = 0;
upi= 0;
ui=0;
ux=0;
end;
steady;
check;
stoch_simul(order=1,irf=50);
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

23 / 29

Otro comando de interes es simul.

Simul se usa para resolver el modelo de equilibrio general metodos deterministicos.


La idea es suponer una trayectoria para las variables exogenas
Plantear las condiciones de primer orden como un sistema nolineal de
ecuaciones y
encontrar la soluci
on a este sistema de ecuaciones mediante un solver
numerico.

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

24 / 29

Ejemplo
Suponga el modelo
max
C0

s.t

E0

t u(Ct )

t=0

Kt + Ct Zt Kt1
+ (1 )Kt1

las C.P.O seran


Et [u 0 (ct ) t ] = 0


= 0
Et t + t+1 Zt+1 (Kt1 ) + (1 )



Et Zt Kt1 + (1 )Kt1 Kt Ct
= 0
para t = 0, . . . , .

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

25 / 29

Continuacion...
Suponga que conoce la trayectoria de zt para t = 0, . . . , T donde T es algun
perdo final. En este caso, el sistema de ecuaciones para t=1,\dots,T estara dado
por


u 0 (C0 ) + u 0 (C1 ) Z1 (K01 ) + (1 ) = 0

Z0 K1
+ (1 )K1 K0 C0 = 0



u 0 (C1 ) + u 0 (C2 ) Z2 (K11 ) + (1 ) = 0
Z0 K0 + (1 )K0 K1 C1 = 0
..
.



u 0 (CT ) + u 0 (CT +1 ) ZT +1 (KT1 ) + (1 ) = 0
ZT KT 1 + (1 )KT 1 KT CT = 0

Esta C.P:O se pueden resolver dado un valor inicial, uno final y/o la trajectoria de
las variables ex
ogenas.
(Andr
es Gonz
alez)

Dynare

Diciembre 2012

26 / 29

Simul en Dynare
%%%
%%% Las var, varexo, parameter, model
%%% definidos como en el codigo del RCB
%%%
var ;
varexo ;
parameters ;
model(linear);
IGUAL RCB
end;
%% Suponemos que hay 1% de perdida del capital
initval;
z = zbar ;
k = (psi*((z*f)^(1-alpha)-delta)/((1-alpha)*( (1/f)^(alpha)*z^(1-alpha)
k = 0.99*k;
l = k*f;
c = ((z*f)^(1-alpha) - delta)*k;
k = log(k); l = log(l); c = log(c); z = log(z);
end;
endval;
z = zbar ;
k = (psi*((z*f)^(1-alpha)-delta)/((1-alpha)*( (1/f)^(alpha)*z^(1-alpha)
k = k;
l = k*f;
c = ((z*f)^(1-alpha) - delta)*k;
k = log(k); l = log(l); c = log(c); z = log(z);
end;
steady;
simul(periods=100);

(Andr
es Gonz
alez)

Dynare

)) + f)^-1;

)) + f)^-1;

Diciembre 2012

27 / 29

Simul en Dynare
%%%
%%% Las var, varexo, parameter, model
%%% definidos como en el codigo del RCB
%%%
var ;
varexo ;
parameters ;
model(linear);
IGUAL RCB
end;
initval;
z = zbar ;
k = (psi*((z*f)^(1-alpha)-delta)/((1-alpha)*( (1/f)^(alpha)*z^(1-alpha)
k = k;
l = k*f;
c = ((z*f)^(1-alpha) - delta)*k;
k = log(k); l = log(l); c = log(c); z = log(z);
end;
steady;

)) + f)^-1;

shocks;
var uz;
periods 6;
values 0.05;
end;
simul(periods=150);

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

28 / 29

FIN

(Andr
es Gonz
alez)

Dynare

Diciembre 2012

29 / 29

Вам также может понравиться