Transition Paths: Example based on Guerrieri & Lorenzoni (2017)
New example based on model of Guerrieri & Lorenzoni (2017) – Credit Crises, Precautionary Savings, and the Liquidity Trap. This example illustrates how to solve general equilibrium transition paths. The model itself looks at how interest rates, output, and employment respond to an (unexpected) credit crisis. Transitions are done for both the flexible prices and the new-keynesian-sticky-wage cases (the later involves sticky wages and imposing a zero lower bound on nominal interest rates).
This example show how the VFI Toolkit can be used to easily compute a general equilibrium transition path in response to a path for parameters (the ‘TransitionPath_Case1()’ command calculates the transition relating to the ‘ParamPath’ in codes). It also demonstrates tools to analyse outputs along a specific transition path, such as ‘EvalFnOnTransPath_AggVars_Case1()’, or to simulate a panel data set corresponding to such a path with ‘SimPanelValues_TransPath_Case1()’.
Among the transition paths these commands can solve and analyze are those known colloquially as “MIT-shocks”.
For full details of the model see the original paper. Code for example.
Have also uploaded a replication of Guerrieri & Lorenzoni (2017).
Main post ends here. The rest is extra background.
The codes implementing the model involve one very important decision, namely when discretizing the AR(1) process the Tauchen hyperparameters are chosen to match the variance and autocorrelation (essentially, using Tauchen-Hussey method), which is standard in the literature but provides a good example of why this method should no longer be used. The Tauchen-Hussey method is the Tauchen method where the hyperparameter is chosen to match the volatility; here meaning the Tauchen method hyperparameter takes a value of 2.1. I have written a short comment/code to illustrate how this is key to the results and explaining why this matters and why the use of the Tauchen-Hussey method is severly problematic in Economics. In defense of the authors this approach to numerical quadrature is widespread and they were simply following standard practice in the literature; see the comment for a detailed explanation. It is worth noting that while this assumption of setting the Tauchen hyperparameter to 2.1 is key to the results it is nowhere discussed in the paper and it is likely none of the Referees fully appreciated its importance (this is made clear by the ‘risk-aversion’ counterfactual, which is largely pointless since using Tauchen-Hussey made the model largely riskless). Discussion of how shocks are discretized is rare in the literature despite the large role the choice of such hyperparameters play in driving results.
The paper of Guerrieri & Lorenzoni (2017) makes a number of choices on how to present certain results, which I deliberately do not follow in the example. The model is quarterly, and some of the Figures in the paper have ‘quarterly’ y-axes and ‘annual’ x-axes. One example is the top-left panel of Figure III. It is described as ‘borrowing constraint’. Actually it plots the ‘borrowing constraint as fraction of annual output’ (not quarterly model output). I also follow standard practice and have period zero be the period in which the transition path is revealed; GL2017 have period zero being the initial stationary distribution and the transition path is only revealed in period 1.1 In fact, even this is not the full story as the y-axis is mislabelled, it is just a straight line that decreases over six periods from the initial ‘lagged value of borrowing constraint as fraction of annual output’ to the final value of the same, because for all the intermediate periods it not related to the current model value of annual output. The contents of the top-left panel of Figure III thus end up containing numbers that have little connection to what is happening in the model.2 I therefore choose instead to plot the actual current period parameter value for the borrowing constraint (\(\phi\)) instead. Further examples of where the example codes deliberately differ are the x-axis of Figure IV, which is labelled as ‘b’, when in fact it is b divided by initial annual GDP. Likewise the x-axis of Figure II is labelled as aggregate bond holdings but is in fact aggregate bond holdings divided by annual GDP. As a result of my decision not to follow this approach many of the graphs in the example code will appear to have different x-axes from those in the original paper. The replication code produces both (my versions and the original paper versions).
A related caution, some of the parameter values reported in Table 1 are incorrect. For \(\psi\) it is simply incorrect. For \(B\) and \(\phi\) the reported parameter values in Table 1 are not the quarterly model parameter values, they are the model values divided by annual GDP. While the article makes clear that these annual-debt-to-GDP concepts are the targets it does not mention that the values in Table 1 are of this form, and not the actual quarterly model values like all the other parameter values in Table 1. (\(\rho\) is also chosen based on an annual target value, but it is the quarterly model parameter value that is reported).
I mention these (Figures and Table values) as based solely on contents of the paper it was impossible to replicate because there is no indication that the parameter values in last two lines of Table 1 are not actually the parameter values themselves, but rather the target values. By studying the codes provided by the authors the replication was possible. The codes provided by the authors are a model of clarity and make it easy to uncover these choices on what to present. The authors should be commended for providing such well commented and easy to follow codes; that this replication was possible shows the payoff of doing so. This highlights the importance of providing these codes.
Footnotes:
1. Page 1441 describes it as “In the top left panel, we plot the exogenous adjustment path for \(\phi_t\)” (correction: ‘as a fraction of annual output’, not \(\phi_t\) itself). The codes consider this to be a lag of the current value as is evident in line 70 of ‘compute_transition.m’ code which can be downloaded from website of Lorenzoni. But actually the model description only calls the parameter \(\phi\) and does not specify whether it should be considered the time t or t+1 value, so this ‘lag’ in the timing convention of the code would be better considered the as the currently relevant value (the code considers equation (1) of the paper as being \(\phi_{t+1}\), I feel that \(\phi_t\) is more appropriate). Under this reading the value plotted really is the current value and not the lag, but this is not the interpretation of the code.
2. The codes of GL2017 make clear that the graph is in fact of \(\phi_t\) divided by initial annual output. But this is not a number which is actually relevant to the behaviour of the model. This is a concept which one might want to plot, but it is not clear from article that this is in fact what is being plotted.