Conditional forecast based on Kalman Filter identified shocks


I want to do a conditional forecast. I have a calibrated DSGE model with more shocks than observables. Hence the shocks are only identified by Kalman filter. As I understand it, the conditional forecast command algorithm is unsuitable for this model since it is based on identified shocks. Am I right? Is there another way to do a conditional forecast with my model?


What do you mean with

? Conditional forecasts just require as many controlled shocks as controlled variables.

Yes. That’s what I mean. I want to do a conditional forecast with a model with more controlled shocks than controlled variables. Since there is more than one solution for the variables’ paths, I want the one with the highest likelihood.

I see. That is not yet supported in Dynare.

1 Like

Ok. Thanks!

I want to do a similar exercise. Would it work if I set the variable paths as data and used the calib_smooth command?

What exactly are you trying to do. The above discussion is about a particular problem: mapping more shocks than observables into the set of observables.

That is precisely what I am trying to do. And I ran some tests, it does work in the sense that I find a set of shocks mapping to the observables.
I call it conditional forecast because part of my observables happen in the future.
But the question is: Am I doing something wrong or stupid?

The problem is that the set of shocks explaining a given set of observables is generally not unique. It’s no wonder you find a set, but the question is: is this the most likely set? Usually, one employs the Kalman filter to solve for the most likely set. But Dynare does not yet offer this functionality.

1 Like

The calib_smooth command does not use the Kalman Filter?
I passed data to the calib_smooth command extending the actual data to some scenarios I built so I get the set of most likely shocks, am I missing something (or doing something stupid)?

Conditional forecasting is about out-of-sample forecasting when you want to specify the path of observables. The calib_smoother-command is about extracting the most likely shocks in sample. Those are two pairs of shoes. If you want to do the latter, you can do that in Dynare.

1 Like

Joao. If you are interested in the paths of the endogenous variables with the most likely set of shocks, calib_smoother, which uses Kalman filter is one way to do that. However, there is one critical difference between that and proper conditional forecast. When you do a conditional forecast, there are two stages:

  1. Finding the most likely set of shocks for the historical Data.
  2. Finding the most likely set of shocks for the conditional paths.

The second stage can not affect the first one. Future conditional “Data” don’t affect past shocks.

With the calib_smoother approach, this is not the case. There is only one stage of finding the most likely set of shocks for the given observables, which includes both actual historical Data and future conditional paths. In that case, the conditional path affects the interpretation of past shocks.

In my view, although the first approach is more formal, both approaches are legit, and both have advantages and disadvantages.

1 Like

Thank you both for your answers!

I get that it is not the ideal way of doing this, but for my use case the results were satisfactory enough. I am giving it the following interpretation:
If data behaves like the conditional path in the future, the smoothed values in the past/present/future would be the calib_smoother results. But your points 1 and 2 would be the best way of doing it.


1 Like