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 of variables depends on its own recent past plus shocks :
In words: today's values are a weighted combination of the last periods' values, plus a fresh random shock this period. Rewriting the system recursively (substituting 's own equation into 's, and so on) expresses purely in terms of current and past shocks:
where (the impulse response at horizon ) is a matrix telling you exactly how much a one-unit shock periods ago still shows up in today. In plain English: is the immediate, same-period impact of a shock; is its effect one period later; two periods later, and so on, with typically shrinking toward zero as grows in a stable system. Plotting against 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 of size 1 (one percentage point) has estimated effects on equity returns of (immediate: -0.20% same day), (one day later: cumulative additional drag), , , 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 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:
| Day | Rate shock effect | Oil 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 () 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.
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