IDEAS home Printed from
MyIDEAS: Log in (now much improved!) to save this software component

Matlab Code for Solving Linear Rational Expectations Models

Listed author(s):
  • Christopher Sims

    (Princeton University)

A computationally robust solution method for linear rational expectations models is displayed, based on the QZ matrix decomposition. Any rational expectations model, in continuous or discrete time, can be solved by this approach. It requires that the model be cast into first-order form, but it does not require that it be reduced so that the number of states matches the number of equations. It also avoids the artificial requirement that variables be designated as "jump" variables or not. (Instead, how expectational error terms enter the system must be specified - a more general specification.) The code automatically determines whether the model satisfies conditions for existence and uniqueness. Two matlab files, gensys.m and gensysct.m, analyze linear rational expectations systems and return solutions for their dependence on exogenous disturbances. The systems need not have non-singular lead matrices (coefficients on current variables in discrete time, on derivatives in continuous time) and they need not be well-specified. The program analyzes them to determine whether solutions exist and whether they are unique. It returns a solution even when it is not unique, and it returns a solution that constrains exogenous variable behavior when no solution that does not do so exists. The continuous time program, unlike the discrete time program, handles only the case of serially uncorrelated exogenous processes. The files qzdiv.m, qzdivct.m, and qzswitch.m are required by the gensys.m programs. If you try to implement the algorithm in non-Matlab languages, you will need to find or write a routine that does the complex QZ (or generalized Schur) decomposition. Fortran routines that do this are available in the ACM algorithm files.

If you experience problems downloading a file, check if you have the proper application to view it first. In case of further problems read the IDEAS help page. Note that these files are not on the IDEAS site. Please be patient as the files may be large.

File URL:
File Function: program code
Download Restriction: none

Software component provided by Quantitative Macroeconomics & Real Business Cycles in its series QM&RBC Codes with number 11.

in new window

Programming language: Matlab
Date of creation: 22 Jul 2001
Handle: RePEc:dge:qmrbcd:11
Contact details of provider: Postal:
P.O. Box 442, St. Louis, MO 63166

Fax: (314)444-8753
Web page:

More information through EDIRC

This item is featured on the following reading lists or Wikipedia pages:

  1. Quantitative Macroeconomics and Real Business Cycles (QM&RBC)

When requesting a correction, please mention this item's handle: RePEc:dge:qmrbcd:11. See general information about how to correct material in RePEc.

For technical questions regarding this item, or to correct its authors, title, abstract, bibliographic or download information, contact: (Christian Zimmermann)

If you have authored this item and are not yet registered with RePEc, we encourage you to do it here. This allows to link your profile to this item. It also allows you to accept potential citations to this item that we are uncertain about.

If references are entirely missing, you can add them using this form.

If the full references list an item that is present in RePEc, but the system did not link to it, you can help with this form.

If you know of missing items citing this one, you can help us creating those links by adding the relevant references in the same way as above, for each refering item. If you are a registered author of this item, you may also want to check the "citations" tab in your profile, as there may be some citations waiting for confirmation.

Please note that corrections may take a couple of weeks to filter through the various RePEc services.

This information is provided to you by IDEAS at the Research Division of the Federal Reserve Bank of St. Louis using RePEc data.