Skip to content
Michel Juillard edited this page May 22, 2024 · 14 revisions

DynareJulia Wiki

This Wiki is for discussing design issues about DynareJulia

Introduction

DynareJulia packages

  • Dynare.jl
  • AxisArrayTables.jl
  • ExtendedDates.jl
  • FastLapackInterface.jl
  • GeneralizedSylvesterSolver.jl
  • KalmanFilterTools.jl
  • KroneckerTools.jl
  • LinearRationalExpectations.jl
  • PolynomialMatrixEquations.jl
  • QuasiUpperTriangular.jl

Dynare.jl

  • Deals with Dynare instructions
  • The preprocessor is the same executable as for Dynare Matlab/Octave. In Julia, the Dynare preprocessor is made available via the artifact DynarePreprocessor_jll
  • We use BuildDynarePreprocessor_jll repository to test the recipe and keep track of issues.
  • The state of computations is kept in context as structure of Context type
struct Context
    symboltable::SymbolTable
    models::Vector{Model}
    modelfileinfo::ModFileInfo
    results::Results
    work::Work
end
  • Instructions are extracted from
 ./<MODFILENAME>/model/json/modfile.json 
that is written by the C++ preprocessor

LinearRationalExpectations.jl

  • Solves model of the form latex E_t \{ A y_{t+1} + B y_t + C y_{t-1} + D u_t + e\} = 0
  • The deterministic steady state of the model is defined as latex \bar y = -(I - A - B - C)^{-1}e
  • The solution takes the form latex y_t - \bar y= G_y (y_{t-1} - \bar y) + G_u u_t
  • G_y is the solution of the polynomial matrix equation latex A G_y G_y + B G_y + C = 0 and latex G_u = -(A G_y + B)^{-1}Du_t

PolynomialMatrixEquations.jl

Two different algorithms are provided:

  • generalized Schur decomposition (\cite{klein_using_2000, sims_solving_2002, soderlind_solution_1999}(
  • cyclic reduction (\cite{bini_numerical_2012})
  • the package provides functions to reduce the problem size by eliminating static variables.

QuasiTriangular.jl

  • Multiplication and linear system solution for upper quasi triangular matrices
  • Useful for handling real generalized Schur decomposition

KalmanFilterTools.jl

  • Kalman filter
  • Monitored Kalman filter
  • Fast Kalman filter (\cite{herbst_using_2012})
  • Kalman smoother
  • Diffuse filter/smoother (\cite{durbin_time_2012})
  • Univariate filter/smoother

TimeDataFrames and ExtendedDates

  • A data frame where the first column represents dates
  • Extension of dates in Julia to Year, Semester, Quarter, Month, Week, Day and Undated
  • Each frequency is represented by an integer starting at some epoch (January 1st of year 1970)
  • See also TimeDataFrames

FastLapackInterface.jl

  • Pre-allocate workspace for some Lapack function
  • LU decomposition and solution of linear systems
  • QR decomposition
  • Schur decomposition

KroneckerTools.jl

  • Chains of Kronecker products
  \begin{align*}
  c &= (Ip \otimes A \otimes Iq)*b\\
  c &= (Ip \otimes AT \otimes Iq)*b\\
  c &= (A \otimes A \otimes ... \otimes A)*b\\
  d &= (AT \otimes AT \otimes ... \otimes AT \otimes B)*c\\
  C &= A * (B \otimes B \otimes .... \otimes B)\\
  D &= A * B * (C \otimes C \otimes .... \otimes C)\\
  D &= AT * B * (C \otimes C \otimes .... \otimes C)\\
  E &= AB(C \otimes D \otimes ... \otimes D) 
  \end{align*}
  • Implements algorithms in \cite{kamenik_solving_2005}

GeneralizedSylvesterSolver.jl

solves

a x + b x (c \otimes c \otimes ... \otimes c) = d

by using

(I + c^T \otimes c^T \otimes ... \otimes c^T \otimes b)x = d

Currently implemented functionalities

  • calib_smoother
  • check
  • deterministic_trends
  • histval
  • initval
  • perfect_foresight_setup (only some options)
  • perfect_foresight_solver (only some options)
  • planner_objective
  • ramsey_model
  • shocks
  • steady
  • stoch_simul (only order=1, no moments)

DynareJulia roadmap

  • Estimation of linear(-ized) models
  • Address \emph{time to first result} problem
  • Mixed complementarity problems
  • Forecasting
  • Making existing packages production grade (tests, documentation, benchmarking)
  • Dynare-Julia documentation
  • $k$-order approximation
  • Multiple models
  • Linear models with occasionally binding constraints
  • Nonlinear estimation - particle filters
  • Nonlinear estimation - simulated methods of moments
  • Markov-Switching DSGE models
  • Global sensitivity analysis
  • Global methods of approximation
  • Limited rationality
  • Heterogeneous agent models