A question about the IRF

Hello, everybody,

I am a beginer of dynare and I have a question about the interpretation of the IRF ( Impulse Response Function ). All your help is appreciated.

I first took an estimation about my model and got the standard deviation of all shocks. For example, the standard deviation of shock x is 0.18.

In the next step, I run a stoch_simul() command to get the IRF graphs. Of course I input codes in the shock block like:

var x; stderr 0.18;

then I can get a series of IRF graphs. The horizontal axis of IRF graph means period(year or quarter). My question is how to interpret the vertical axis of those graphs. For example, after one standard error’s shock x, if the output Y increases to 0.67 in period 5, there are two interpretation about 0.67. (1) Output Y increased by 67% in period 5. (2) Output Y increased by the number which is 0.67 times one standard error of shock x, that is to say, 0.67*0.18=0.1206, so output Y increased by 12.06% in period 5. So which explanation is right?

If I use relative_irf command, then I input codes in the shock block like:

var x; stderr 0.01;

Does it mean that the magnitude of the shock is 1%?

After that, I can also get a series of IRF graphs but the dimension of vertical axis is big. In my case, the output Y increases to 67 in period 5, does it mean that 1%'s shock x leads to 67%'s increase of output or 6700%'s increase?

I am really confused about the interpretation of IRFs. Detailed explanation is greatly appreciated.

Thank you!



1 Like

Hey John,

this depends on the definition of the variables in your model, I believe. In most New Keynesian Models, real variables are measured in log deviations from equilibrium. This means percentage deviations. Let x_hat be the variable in percentage deviations, and x_equ, its equilibrium value. Than x_hat = (x - x_equ)/x_equ (x_hat is x, measured in percentage deviations from equilibrium). So if x_hat is 0.2 this menas that (x - x_equ)/x_equ = 0.2 = 20 %.

However, very often interest rates and Inflation rates are measured in absolute deviations, since we have gross values in the model before we linearise, R = 1+r and Pi = 1+pi, but net values in the linearisation. So, an IRF of size 5.3 for inflation means that the net inflation rate lies 5.3 points above equilibrium. Assuming zero inflation in equilibrium, this means inflation is at 5.3 percent. An increase in the interest rate to 2.3, for example, means an increase in the policy rate by 2.3 basis points.

You find some good examples of linearised equations here:

uio.no/studier/emner/sv/oeko … og-lin.pdf

I also attached some lecture notes from my NKE course, where log-linearisation is explained with examples.

Sorry, if the former post was a bit confusing.

nke2.pdf (1.25 MB)

Dear Michael,

Thank you for your detailed explanation.

As for my model, all variables are measured in log deviations from equilibrium, including interest rates and Inflation rates. According to your explanation, I understand that the unit of vertical axis should be measured by percentage. So if output increases to 0.67, that means the change is 0.67 percent rather than 67 percent. Thank you for solving my confusion.

Another question is how to interpret the command “relative_irf”. In my model, I add this command in stoch_simul() and input codes in the shock block like:

var x; stderr 0.01;

and then I get the IRF graph which shows output Y increases to 67 in period 5, does it mean that 1%'s shock x leads to 67%'s increase of output?

Thank you for your reading and answering!

Best regards,


Hey John,

check these here:

I haven’t used the command yet, but I think the links should be clarifying.



Thank you very much!

Sorry to bring up an old thread, but the above explanation is confusing me:

It seems to me that the increase in the policy rate would be by 2.3 percent, or 230 basis points - what am I missing here?

It depends on your interpretation. First order IRFs are scale invariant, i.e. you can take 0.01 or 1 as 1 Percent (100 basis points). But the interpretation needs to be consistent. If your 5.3 for inflation means 5.3 percent or 530 basis points, the same applies to inflation. 2.3 is 2.3 percent or 230 basis points.

Both questions and answers are of great help to me, this forum is really has her value.

I’d like to ask a follow-up to this older thread:
The shock I am looking at is interest rates and the st derr of the shock 0.0075 (75 bps). I want to make sure I am correct in interpreting the graph for GDP. Should I multiply the vertical axis by 100 to get the percentage change if the model is the log-linear version, i.e. contains “exp” throughout (other than for interest rates) and the initial values are logged.


If the interest rate shock increases by 0.0075 and output goes up by 0.01 it means that a 75 basis point monetary policy shock (you still have to deal with the frequency, if your model is quarterly, the annualized interest rate shock is 4*75bp=300bp) increases output by 1 percent.

Thanks for getting back to me.
I just have a couple quick follow-ups while I am on this topic (I have added my mod file as a reference if needed):

  1. So am I right to interpret the moments as being the moments from the simulated data resulting from the shocks and NOT the moments of the deviations from steady state?

  2. I also wanted to confirm that it was right to use ‘order = 1’ and ‘periods = 2100’ in my options of stoch_simul. I know the default for order is 2 but it makes more sense to me to linearize to a first order as that’s how I was thinking of it when I solved it by hand. But I was reading in the manual that “A simulation is similar to running impulse
    response functions with a model linearized to the second order” so I got a bit confused. Removing periods though creates somewhat strange results.

  3. The one benefit of not using periods though seems to be that I am able to calculate forecast error variance decomposition which I can’t seem to do when I use periods. Why is that, or am I missing something?

Thanks again.
Float_EU.mod (6 KB)

Apologies for bumping an old topic, but I too thought it’s worthwhile clarifying about the interpretation when the model is not log linearized – that is, equations are written in levels directly from the FOCs.

The interpretation is that a unit increase in the standard deviation is associated with an X unit change in the variable of interest, where X units is the point on the Y axis. This means that if the standard deviation of a shock is .02, then we want to multiply the Y axis unit by 2 since we’re really talking about a 2 unit increase in the standard deviation, right?

I am afraid, I am not following. Think of IRFs a_t as defined as


that is, the change in y_t for a given change in x_0 is equal to a_t. If y and x are in logs, this is an elasticity. For a x percent change, y changes by a_tx_0 percent. Now, if they are in levels, we are talking about a
x_0 unit change in y_t.

1 Like