2.8.2. First-order perturbation

The state vector

\[z_{t}\equiv\left[ \begin{array} [c]{ccc}% x_{t-1}^{\prime} & \sigma & \varepsilon_{t}^{\prime}% \end{array} \right] ^{\prime}\]

where \(\sigma\) is the perturbation parameter.

In some applications, we can assume agents have information on shocks \(k\geq 0\) periods ahead into the future. In that case, the state variables under anticipated shocks (see e.g. [Maih, 2010] and [Juillard and Maih, 2010]) is

\[z_{t}\equiv\left[ \begin{array} [c]{cccccc}% x_{t-1}^{\prime} & \sigma & \varepsilon_{t}^{\prime} & \color{red}{\varepsilon _{t+1}^{\prime}} & \color{red}{\cdots} & \color{red}{\varepsilon_{t+k}^{\prime}}% \end{array} \right] ^{\prime}\]

Solvers for the quadratic matrix polynomial

The constant-parameter case (and the Maih-Waggoner perturbation)

The algorithms implemented in RISE for solving linear rational expectations models are

  • rise_1 : A Klein-like algorithm (Default).

  • sims : This is the Gensys algorithm by [Sims, 2002]

  • Klein : An algorithm by [Klein, 2000]

  • AIM : See e.g. [Anderson, 2008]

  • cyclic_reduction : the cyclic reduction algorithm

Note

If there is a unique and stable solution in the Maih-Waggoner perturbation, these algorithms will also work in the regime-switching case.

The regime-switching case

The algorithms implemented in RISE for solving regime-switching linear rational expectations models are

  • mnk : Newton algorithm by [Maih, 2015], which explicitly forms and store kronecker products.

  • mn : Newton algorithm by [Maih, 2015], which avoids the creation of kronecker products and is thereby more efficient for solving large systems.

  • fwz : Newton algorithm by [Farmer et al., 2011]

  • dsge_udc : Undetermined coefficients method by [Maih and Waggoner, 2018]. This algorithm can only be applied with the Maih-Waggoner perturbation.

  • dsge_schur : Schur-based method by [Maih and Waggoner, 2018]. This algorithm returns the most stable solution. Therefore it gives the same answer as rise_1 (and other constant-parameter solvers) when there is a unique stable solution. This algorithm can only be applied with the Maih-Waggoner perturbation.

  • dsge_groebner : Groebner-basis based solver from Computational algebraic geometry by [Maih and Waggoner, 2018]. When it works, this algorithm finds all possible solutions to the problem.

  • mfi : Functional iteration algorithm by [Maih, 2015]

Note

All these algorithms for solving regime-switching linear rational expectations can solve constant-parameter models even when there is no unique and stable solution.

User-defined solver

A user-defined solver should be a function with inputs and outputs as follows

[Tz_pb,Tsig,Te,retcode]=user_solver(Gplus01,A0,Aminus,B,Q,stst_,vargs{:});

where the inputs are :

  • Gplus01 is an \(nd\times nd\times h\times h\) array of coefficient matrices on forward-looking terms multiplied by the transition probabilities

  • A0 is an \(nd\times nd\times h\) array of coefficient matrices on contemporaneous terms

  • Aminus is an \(nd\times nd\times h\) array of coefficient matrices on backward-looking terms

  • B is an \(nd\times nx\times h\) array of coefficient matrices on shock terms

  • Q is an \(h\times h\) transition matrix with Qij the probability of going from i to j

  • stst_ is an \(nd\times h\) matrix whose columns represent the steady state in each regime

  • vargs represents potential additional arguments entering the user-defined function.

And the outputs are:

  • Tz_pb is an \(nd\times nd\times h\) array of the impact of autoregressive terms

  • Tsig is an \(nd\times nd\) matrix whose columns represent the impact of the perturbation parameter in each regime

  • Te is an \(nd\times nx\times h\) array representing the impact of shock terms

  • retcode is a flag which takes on value 0 if there is no problem or a number different from 0 if there is a problem finding the solution.