Quant Memo
Advanced

Impulse Response Functions

A tool for tracing out how a one-time shock to one variable in a system propagates forward through time into every other variable, showing both the size and the speed of the ripple effect.

Prerequisites: Structural VAR Identification

You've fitted a model linking, say, oil prices, interest rates, and equity returns. A one-off surprise hits — the Fed unexpectedly raises rates by 25 basis points. Does that ripple into equities immediately, or with a lag? Does it fade in a month or persist for a year? Does it also move oil prices, and if so, in which direction? A fitted VAR (vector autoregression) captures the statistical relationships, but its raw coefficients don't answer these questions directly — they describe one-period effects tangled together with feedback loops. The impulse response function (IRF) unwinds that tangle into a clean, period-by-period picture: shock one variable by one unit today, then trace exactly how every variable in the system reacts over the following days, weeks, or months, holding everything else fixed at what the shock implies.

An analogy: dropping a stone in connected ponds

Imagine several ponds connected by narrow channels. Drop a stone in pond A. A ripple spreads outward in pond A immediately, but it also pushes a little water through the channel into pond B, which ripples with a lag and smaller amplitude, and some of that reaches pond C later still, fainter again. If the ponds are also connected by feedback channels (B pushes some water back into A), the ripple in A might even see a small secondary bump a few periods later as B's disturbance echoes back. An impulse response function is exactly this: drop one stone (a one-unit shock) in one pond (one variable) and record the ripple's height in every pond, at every future point in time, until it dies out.

The mechanics, one symbol at a time

Start from a VAR system where a vector yty_t of variables depends on its own recent past plus shocks εt\varepsilon_t:

yt=A1yt1+A2yt2++Apytp+εt.y_t = A_1 y_{t-1} + A_2 y_{t-2} + \cdots + A_p y_{t-p} + \varepsilon_t.

In words: today's values are a weighted combination of the last pp periods' values, plus a fresh random shock this period. Rewriting the system recursively (substituting yt1y_{t-1}'s own equation into yty_t's, and so on) expresses yty_t purely in terms of current and past shocks:

yt=h=0Φhεth,y_t = \sum_{h=0}^{\infty} \Phi_h\, \varepsilon_{t-h},

where Φh\Phi_h (the impulse response at horizon hh) is a matrix telling you exactly how much a one-unit shock hh periods ago still shows up in yty_t today. In plain English: Φ0\Phi_0 is the immediate, same-period impact of a shock; Φ1\Phi_1 is its effect one period later; Φ2\Phi_2 two periods later, and so on, with Φh\Phi_h typically shrinking toward zero as hh grows in a stable system. Plotting Φh\Phi_h against hh for a chosen shock variable and a chosen response variable is the impulse response function — a curve of "effect size" versus "time since the shock."

Worked example 1: a two-variable toy system

Take a simple system where a rate shock εtrate\varepsilon^{rate}_t of size 1 (one percentage point) has estimated effects on equity returns of Φ0=0.20\Phi_0 = -0.20 (immediate: -0.20% same day), Φ1=0.35\Phi_1 = -0.35 (one day later: cumulative additional drag), Φ2=0.15\Phi_2 = -0.15, Φ3=0.05\Phi_3 = -0.05, tapering to roughly zero by day 4. Reading the IRF: a surprise 1-point rate hike costs equities about 0.20% on the announcement day, with the bulk of the damage (another -0.35%) landing the next day as markets digest it, then fading — total cumulative effect roughly 0.200.350.150.05=0.75%-0.20 - 0.35 - 0.15 - 0.05 = -0.75\% over four days, after which the shock's influence is essentially gone.

Worked example 2: comparing two shocks

Now compare a rate shock versus an oil-price shock in the same three-variable system, tracking their effect on equities over 5 days:

DayRate shock effectOil shock effect
0−0.20%+0.05%
1−0.35%+0.10%
2−0.15%+0.08%
3−0.05%+0.03%
4≈0%+0.01%

The rate shock front-loads its damage in the first two days and dies fast; the oil shock is smaller but decays more slowly, meaning its cumulative effect (0.05+0.10+0.08+0.03+0.01=0.27%0.05+0.10+0.08+0.03+0.01 = 0.27\%) is more spread out. A risk manager reading these two IRFs side by side learns not just which shock matters more on impact, but how long each type of shock stays "live" in the system — critical for deciding how long to hold a hedge after news breaks.

days since shock 0 oil shock rate shock
The rate shock (red) hits hardest fast and dies within days; the oil shock (green) is smaller but decays more slowly — the two curves tell very different stories even though both eventually return to zero.
rates equities FX shock here
A shock originating in one variable (rates) ripples outward through the system, arriving at each other variable with a lag and shrinking amplitude — exactly what the IRF quantifies.

What this means in practice

Impulse response functions are the standard way macro and rates desks translate a fitted VAR into an actionable story: how many days should a hedge stay on after a surprise data release, which asset absorbs a shock first, and how much of a move is "transitory noise" versus persistent. They pair with forecast error variance decomposition (see Forecast Error Variance Decomposition) to answer "how much" alongside "how it unfolds."

An impulse response function traces how a one-unit shock to one variable ripples forward through every variable in a system over time — its immediate impact, its path of decay, and how long it stays economically relevant — all read off a single curve per shock-response pair.

IRFs from an unrestricted VAR depend on the order in which shocks are assumed to hit the system (via the Cholesky decomposition used to make shocks uncorrelated), and reordering the variables can change the shape of the response — sometimes substantially. Reporting an IRF without stating the identification scheme used to isolate the shock is a common and misleading shortcut; always check whether the ordering (or a proper structural identification, see Structural VAR Identification) was economically justified, not just a coding convenience.

Related concepts

Practice in interviews

Further reading

  • Lütkepohl, New Introduction to Multiple Time Series Analysis, ch. 2
  • Hamilton, Time Series Analysis, ch. 11
ShareTwitterLinkedIn