Optimal Simple Rules and Time-Varying Volatility

Hi all,

I am trying to solve for the optimal simple rule in a fairly standard 3-equation NK model. However, I’d like to make the simple addition of having the variance of the shocks of one of the equations time-varying, and a function of one of the other endogenous variables.

For example, suppose I want the variance of the shock in the output gap equation to be dependent on the level of inflation (as an example). I tried to do something like the following in the model block:

y = alpha * y(+1) + gamma * (i - pi) + eps_y * pi;

where pi is defined through the inflation equation. But this doesn’t appear to work–it appears as though Dynare initializes pi=0, and the optimal simple rule is calculated as if there is no shock at all. Am I missing something conceptually here?

Thanks very much.

I think the problem is that, for optimal simple rules, Dynare solves the model at order 1, i.e. it linearizes it. As you can easily see, this is indeed equivalent to having no shock with time-varying volatility.

Thanks very much for this. Is there any workaround–either conceptually, or a Dynare-based approach–that you might suggest? It seems as though the proposed question is not ill-posed–it simply asks what coefficients in the interest rate rule will minimize the quadratic loss function given this time-varying volatility setup. But I understand that the way OSR goes about solving this question may not work.

Thanks again.

Dynare does not provide a ready-to-use method of solving your problem. You’ll have to do some programming.

First you need to solve your model at a higher order, to take into account time-varying volatility. A third order approximation is usually needed to get a satisfactory solution, see e.g. this post and the Fernandez-Villaverde et al. paper.

Then, once you’re able to get a meaningful solution of your model for a given set of parameters, you need to compute your policy objective (e.g. a weighted average of the variances of the variables of interest, as in OSR).

Since you’re now able to compute your objective for a given set of parameters, you can do a grid search over the parameter space to find a maximum for your objective. Of course, there are some computational challenges involved, especially if you have many parameters over which to search (the so-called curse of dimensionality).

The welfare part grid search has been discussed at Loop over parameters to find maximized welfare
A stochastic volatility example is at https://github.com/JohannesPfeifer/DSGE_mod/tree/master/Basu_Bundick_2017