Introduccion a Dynare AGonzalez

download Introduccion a Dynare AGonzalez

If you can't read please download the document

description

Economics Programming using Dynare, a powerful software of econometric analysis

Transcript of Introduccion a Dynare AGonzalez

  • Politica Monetaria y CambiariaIntroduccion a Dynare

    Instituto FMI

    Diciembre 2012

    (Andres Gonzalez) Dynare Diciembre 2012 1 / 29

  • Dynare

    Dynare es una coleccion de rutinas de Matlab que resuelven, simulan yestiman modelos no lineales con variables forward-looking.

    Se escribio en Pars por investigadores del CEPREMAP.

    El codigo y su documentacion estan disponbles en www.dynare.org/

    Se usan en muchos bancos centrales e instituciones educativas como el MIT yNorthwestern.

    (Andres Gonzalez) Dynare Diciembre 2012 2 / 29

  • Ejemplo del uso de Dynare

    Suponga que quiere analizar el problema del planificador central de un modeloRCB tradicional

    maxE

    t (lnCt + ln (1 lt))s.tct + kt = k

    t1 (zt lt)

    (1) + (1 ) kt1ln zt = ln zt1 + uzt

    Note que para Dynare el capital debe estar definido al final del perodo. Por esoentra como kt1 en la funcion de produccion.

    (Andres Gonzalez) Dynare Diciembre 2012 3 / 29

  • Como usar Dynare para resolver el modelo

    1 Paso 1: Encuentre las condiciones de primer orden del modelo

    2 Paso 2: Encuentre el sistema no lineal de estado estacionario

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

    (Andres Gonzalez) Dynare Diciembre 2012 4 / 29

  • Paso 1: Encuentre las condiciones de primer orden

    L =t=0

    t(

    (lnCt + ln (1 lt)) + t(kt1 (zt lt)

    (1) + (1 ) kt1) Ct kt

    )y las condiciones de primer orden sera:

    Et

    [t

    1

    Ct tt

    ]= 0 (1)

    Et

    [t

    (1 lt) + tt (1 ) kt1z (1)t lt

    ]= 0 (2)

    Et[t+1

    t+1(k1t (zt+1lt+1)

    (1) + (1 )) tt

    ]= 0 (3)

    Et[(

    kt1 (zt lt)(1) + (1 ) kt1

    ) Ct kt

    ]= 0 (4)

    Et [zt zt1 uzt ] = 0 (5)Regla de oro: Tengo el mismo numero de ecuaciones que de variables? Si 5ecuaciones para 5 variables

    (Andres Gonzalez) Dynare Diciembre 2012 5 / 29

  • Paso 1: Continuacion...

    Es posible simplificar estas ecuaciones un poco

    Et

    [

    (1 lt) +1

    Ct(1 )

    (kt1lt

    )z

    (1)t

    ]= 0 (6)

    Et

    [

    Ct+1

    (

    (lt+1zt+1

    kt

    )1+ (1 )

    ) 1

    Ct

    ]= 0 (7)

    Et[kt1 (zt lt)

    (1) + (1 ) kt1 Ct kt]

    = 0 (8)

    Et [zt zt1 uzt ] = 0 (9)donde se simplifico y se elimino la variable de coestado t . Por eso ahoratenemos solo tres ecuaciones.

    (Andres Gonzalez) Dynare Diciembre 2012 6 / 29

  • Paso 2: Encontrar o simplificar el estado estacionario

    En Dynare es posible escribir:

    la solucion analtica del estado estacionario

    o en su defecto escribir un buen valor inicial para la solucion del sistema deestado estacionario.

    El principio general es que Dynare usa las ecuaciones escritas del estadoestacionario como valor inicial de un algoritmo numerico de solucion de ecuacionesno lineales.

    (Andres Gonzalez) Dynare Diciembre 2012 7 / 29

  • Paso 2: Continuacion...

    El sistema no lineal de estado estacionario sera:

    (1 l) +

    1

    C(1 )

    (k

    l

    )z (1) = 0 (10)

    C

    (

    (lz

    k

    )1+ (1 )

    ) 1

    C= 0 (11)

    k (zl)(1) + (1 ) k C k = 0 (12)este sistema de ecuaciones se puede solucionar analticamente o se puedemediante metodos numericos. Como se dijo antes Dynare por defecto encuentra elsistema de estado estacionario y lo resuelve con metodos numericos para loscuales usa como valor inicial (semilla) el valor del estado estacionario dado por elusuario en el archivo .mod.

    (Andres Gonzalez) Dynare Diciembre 2012 8 / 29

  • Paso 2: Continuacion...

    La mejor semilla inicial es la solucion!

    f =1

    z

    [1

    [1

    (1 )

    ]] 11

    k =

    (

    (zf )(1) )

    (1 ) ( 1f ) z (1) + f1

    l = fk

    C =(

    (zf )(1) )k

    (Andres Gonzalez) Dynare Diciembre 2012 9 / 29

  • Paso 3: Escribir el modelo en Dynare

    El archivo .mod tiene varias elementos:

    1 El listado de variables endogenas

    2 El listado de variables exogenas

    3 El listado del parametros y su valor

    4 El modelo lineal o no lineal

    5 El estado estacionario

    6 stock simul() o simul

    (Andres Gonzalez) Dynare Diciembre 2012 10 / 29

  • Paso 3: Continuacion

    %%%% Este codigo resuelve el modelo RBC tradicional

    %%%% Escrito por Andres para los amigos de Centro America

    %%%% Fecha de esta version: 27 de Octubre de 2012

    %%%% Tareas por hacer: Revisar el algebra estado estacionario

    %%%% Mejorar la calibracion.

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

    (Andres Gonzalez) 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) + uz;

    end;

    (Andres Gonzalez) Dynare Diciembre 2012 12 / 29

  • Paso 3: Explicacion

    El comando model log-lineariza el modelo pero Dynare lo que sabe hacer eslinearizar. Al escribir

    xt = exp ln xt

    entonces al linearizar se estara log-lineariazando.

    Ejemplo: Se quiere linearizar la ecuacion yt = ct + it :

    y +ytyt

    yt=y

    (yt y) = c + ctct

    ct=c

    (ct c) + i + itit

    it=i

    (it i

    )pero i =

    (it i

    )y en SS se tiene que y = c + i entonces

    yt = ct + it

    (Andres Gonzalez) Dynare Diciembre 2012 13 / 29

  • Paso 3: Continuacion...

    Ahora si linearizamos

    exp(ln yt) = exp(ln ct) + exp (ln it)

    entonces

    y + exp(ln yt)

    ln yt

    ln yt=ln y

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

    ln ct=ln c

    (ln ct ln c)

    + i + exp(ln ct)

    ln ct

    ln it=ln i

    (ln it ln i

    )definiendo i =

    (ln it ln i

    )entonces

    y yt = c ct + i it

    que es distinto a la version linearizada de la ecuacion.

    (Andres Gonzalez) 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) )) + f)^-1;

    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;

    steady;

    check;

    %%Resuelve y simula el modelo

    stoch_simul(order=1,irf=50);

    (Andres Gonzalez) 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 estadoestacionario. Usa como valores iniciales para las variables los valores definidosentre initval y end.

    2 Hay varios algoritmos de optimizacion disponibles para encontrar el estadoestacionario. Estos se pueden seleccionar mediante la instruccion:

    steady(solve algo=0)

    2 El comando check:

    1 Calcula los valores propios del modelo linearizado alrededor del valor definidoen steady.

    2 Una condicion necesaria para que exista un unico equilibrio estable alrededordel SS es que hayan tantos valores propios mayores a uno en modulo como elnumero de variables forward looking.

    (Andres Gonzalez) Dynare Diciembre 2012 16 / 29

  • stoch simul

    Esta funcion resuelve el modelo usando los metodos de perturbacion:

    Klein, P. (2000): Using the generalized Schur form to solve a multi-variate linear rational expectations model, Journal of Economic Dy-namics and Control, 24, 1405-1423.

    Sims, C. A. (2002): Solving Linear Rational Expectations Models,Computational Economics, 20, 1-20.

    (Andres Gonzalez) 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 linearizacion o log-linearizacion es aproximar el sistema deecuaciones no-lineales (Wt ,Wt+1; ) = 0 con un sistema lineal. Para esto,se usa la expansion de Taylor alrededor del estado estacionario. La expansionde Taylor alrededor del estado estacionario nos lleva a un sistema lineal de laforma

    AEtWt+1 = BWt

    donde Wt = Wt W y W es el valor de estado estacionario de Wt donde Ay B se pueden definir as:

    A =(W)

    Wt+1, B =

    (W)

    Wt

    donde(W)Wt+1

    es Jacobiano de la funcion (Wt ,Wt+1; ) evaluada en elestado estacionario.

    (Andres Gonzalez) Dynare Diciembre 2012 18 / 29

  • Intuicion de la solucion

    Suponga que el modelo se define por las siguientes ecuaciones

    xt = aEtxt+1 + zt

    zt+1 = zt + t+1

    siendo xt una variable endogena y zt la variable exogena.Para encontrar la solucion se iterara hacia adelante. Esto es,

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

    luego

    xt = aEtEt+1xt+1 + zt

    = a2Etxt+2 + aEtzt+1 + zt

    =...

    = lmj

    ajEtxt+j +j=0

    ajEtzt+1

    (Andres Gonzalez) Dynare Diciembre 2012 19 / 29

  • Continuacion...

    donde Etzt+j = jzt entonces

    xt = kzt

    donde k =k

    i=0 (a)i . Si lmk akEtxt+k = 0 entonces la solucion:

    Existe si |a| < 1 en este caso

    k = 1(1 a)

    y no existe si a = 1.

    Cuando la solucion existe y se cumple lmk akEtxt+k = 0 entonces esta esunica.

    Una caracterstica importante de la solucion es que las variables endogenas de hoydependen del flujo esperado y del comportamiento de las fuerzas exogenas en estecaso de zt .

    (Andres Gonzalez) Dynare Diciembre 2012 20 / 29

  • Continuacion...

    En el caso general la solucion son unas matrices P y Q tal que

    Xt = PXt1 + QZt

    Zt = NZt1 + t

    siendo Xt el vector de variables endogenas y Zt el vector de variables exogenas.

    A partir de esta solucion se puede:

    Simular el modeloHacer analisis de polticaImpulso respuestay estimacion.

    (Andres Gonzalez) Dynare Diciembre 2012 21 / 29

  • Que pasa si el modelo ya esta linearizado?

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

    1 La instruccion model; end; cambia por la model(lineal); end;2 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 lasecuaciones:

    xt = Etxt+1 +1

    (it Etpit+1) + uxt

    pit = Etpit+1 + xt

    it = pipit + pixt + uit

    donde = (1 ) (1 )/.

    (Andres Gonzalez) Dynare Diciembre 2012 22 / 29

  • Modelo linealizado en Dynarevar 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);

    (Andres Gonzalez) 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 deecuaciones y

    encontrar la solucion a este sistema de ecuaciones mediante un solvernumerico.

    (Andres Gonzalez) Dynare Diciembre 2012 24 / 29

  • Ejemplo

    Suponga el modelo

    maxC0

    E0

    t=0

    tu(Ct)

    s.t Kt + Ct ZtK t1 + (1 )Kt1las C.P.O seran

    Et [u(ct) t ] = 0

    Et[t + t+1 (Zt+1(K 1t ) + (1 ))] = 0

    Et[ZtK

    t1 + (1 )Kt1 Kt Ct

    ]= 0

    para t = 0, . . . ,.

    (Andres Gonzalez) Dynare Diciembre 2012 25 / 29

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

    u(C0) + u(C1)(Z1(K

    10 ) + (1 )

    )= 0

    Z0K1 + (1 )K1 K0 C0 = 0

    u(C1) + u(C2)(Z2(K

    11 ) + (1 )

    )= 0

    Z0K0 + (1 )K0 K1 C1 = 0

    ...

    u(CT ) + u(CT+1)(ZT+1(K

    1T ) + (1 )

    )= 0

    ZTKT1 + (1 )KT1 KT CT = 0

    Esta C.P:O se pueden resolver dado un valor inicial, uno final y/o la trajectoria delas variables exogenas.

    (Andres Gonzalez) 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) )) + f)^-1;

    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) )) + f)^-1;

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

    (Andres Gonzalez) Dynare 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) )) + f)^-1;

    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;

    shocks;

    var uz;

    periods 6;

    values 0.05;

    end;

    simul(periods=150);

    (Andres Gonzalez) Dynare Diciembre 2012 28 / 29

  • FIN

    (Andres Gonzalez) Dynare Diciembre 2012 29 / 29