Solved – Why Are Impulse Responses in VECM Permanent

impulse responseinterpretationvector-autoregressionvector-error-correction-model

The usual interpretation of impulse response functions in standard vector autoregression (VAR) models is that they represent the response of a variable, say $y_t$, to a shock of one standard deviation (or one unit, depending on how they are computed) in another variable of the system, say $x_t$, over time.

In VARs, the impulse response function reverts to $0$, and you can compute the total (or long-run) effect of $x_t$ on $y_t$ using cumulative functions (by summing the impulse responses).

However, in vector error correction models (VECMs), the impulse response functions sometimes do not go back to $0$. Some textbooks (e.g. Lütkepohl's New Introduction to Multiple Time Series Analysis) mention that this is normal. However, it's not clear why.

What would be a correct interpretation of an impulse response that does not go back to $0$ in a VECM? And how would one interpret the cumulative impulse responses in that case, which will then grow (or decrease) infinitely?

To be clear, suppose that the function illustrating the response of $y_t$ to an impulse of $x_t$ converges at +0.5 and stays at that value. Does that mean that when $x_t$ increases by one unit (or one s.d.), $y_t$ increases by 0.5, every period, again, and again, until the end of time?

If the variables are cointegrated, shouldn't they stay "close" to each other, separated by some value that is constant over time? In that case, one variable cannot grow indefinitely when the other changes by a fixed amount.

I can't find a clear answer to that and would very much appreciate any help.

Best Answer

This is a great question, and I'm learning so bear with me.

What would be a correct interpretation of an impulse response that does not go back to 0 in a VECM?

Riffing on the drunken walk theme, suppose a drunken man is randomly walking when a mean teenager pushes him. The push sends the man stumbling but he regains his footing after a short distance. He shrugs it off and keeps on walking, but he has been displaced a number of feet, continues his drunken walk, and may never return to the original location.

And how would one interpret the cumulative impulse responses in that case, which will then grow (or decrease) infinitely?

Since VECMs are models of the deltas, as long as an "impulse" in one of the variables leads to future deltas that eventually go to zero, then the cumulative response will not grow indefinitely! (Remember, there's no noise to push it around.) But the displacement will also not revert back to a reference value.

If the variables are cointegrated, shouldn't they stay "close" to each other, separated by some value that is constant over time? In that case, one variable cannot grow indefinitely when the other changes by a fixed amount.

They will, and that's exactly what the error correction mechanism enforces, dashing any hopes of an "exogenous" shock. In a simulation that I'm about to show you, whether the unit "shock" happens at equilibrium or a place away from equilibrium also matters...a lot. The impulse response that the urca/vars R package combo gets you, to the best of my understanding, is to what happens to each variable when exactly one variable is increased by one unit and the starting position is at equilibrium (exactly on the cointegrating vector). As soon as the shock occurs, the system is out of equilibrium and both the lag effects of the shock and the error correction mechanism will be in play. It's not clean at all.

I've got a simulation attempting to draw from:

$$ \left(\begin{matrix} \Delta y_t \\ \Delta x_t \end{matrix}\right) = \left(\begin{matrix} .3 \\ .4 \end{matrix}\right) \left(\begin{matrix} 1 & -1.3 \end{matrix}\right) \left(\begin{matrix} y_{t-1} \\ x_{t-1} \end{matrix}\right) + \left(\begin{matrix} .5 & .4 \\ 0 & .8 \end{matrix}\right) \left(\begin{matrix} \Delta y_{t-1} \\ \Delta x_{t-1} \end{matrix}\right) + \mathbf{\epsilon}_t, $$ where notice I tried to make $x_t$ as exogenous as possible by having $y_t$'s previous delta not feed into $x_t$'s current period delta. But that doesn't appear to do much.

Here's how I fed in the unit impulse from x:

T <- 50
x0 <- 100
shock <- 1
offset <- 0

beta <- 1.3  # y_t - beta * x_t is stationary
Alpha <- matrix(c(.3, .4), ncol=1)
Beta_T <- matrix(c(1, -beta), ncol=2)
Gamma <- matrix(c(.5, .4, 0, .8), ncol=2, byrow=T)

# Shock x and run Generate Data block
x_t1 <- c(offset + beta * x0, x0)  # start at equilibrium
x_t2 <- c(offset + beta * x0, x0 + shock)  # shock in x only

# Generate data
X <- matrix(NA, nrow=T, ncol=2)
X[1, ] <- x_t1
X[2, ] <- x_t2
for (t in 3:T) {
  x_lag1 <- X[t - 1, ]
  del_x_lag1 <- X[t - 1, ] - X[t - 2, ]
  del_x <- Alpha %*% Beta_T %*% x_lag1 + Gamma %*% del_x_lag1
  X[t, ] <- x_lag1 + del_x
}
df <- as.data.frame(X)
names(df) <- c('y', 'x')
plot(df$y, main="Effect on y_t of x's impulse at t=2")
plot(df$x, main="Effect on x_t of x's impulse at t=2")

enter image description here

So the unit impulse in $x_t$ leaves both $x_{t+30}$ and $y_{t+30}$ lower by approximately 10 units, without any noise. Note how the shock from $x_1$ to $x_2$ results in a higher value of $x_3$, but after that both shapes looks similar. The impulse response plot of from the irf function of the vars package looks like this (shown for the effect of a unit impulse in $x$ on $y$):

enter image description here

If you change the offset so that y and x start in a non-equilibrium position, then the scale of the impulse response is dramatically different.