Quant Memo
Advanced

ACF and PACF Model Identification

Two fingerprint plots that tell you, before you fit anything, roughly how many lags of a time series' own past actually matter — the first step of building an ARIMA model instead of guessing at one.

Prerequisites: Autocorrelation and Serial Correlation, Stationarity

Before you can fit an ARIMA model to a time series, you need to decide how much of the past to feed it — one lag back, five, twenty? Fit too few lags and the model misses real structure; fit too many and you're chasing noise, and every extra parameter costs you estimation precision. Guessing is expensive: trying every combination of lag lengths and comparing fit statistics is slow and easy to overfit. The autocorrelation function (ACF) and partial autocorrelation function (PACF) are two plots you can look at before fitting anything, and their shapes — which lags spike, which decay — read almost directly off as "try this many autoregressive terms, that many moving-average terms."

An analogy: hearing an echo versus hearing the original sound

Imagine you're in a canyon and you shout once. The echo you hear a second later isn't just a delayed copy of your voice — it's colored by every surface the sound bounced off along the way. If you want to know how far away the nearest wall is, listening to the raw echo is confusing, because a component of what you hear one second later is itself an echo of an echo from two seconds ago, mixed in. What you actually want is the echo one second later after removing anything explainable by the echo two, three, four seconds later. That "cleaned" echo strength is the partial autocorrelation. The raw, uncleaned echo strength — everything, including indirect bounces — is the ordinary autocorrelation. Both tell you something; they tell you different things, and comparing their shapes is how you triangulate the canyon's structure.

ACF gradual geometric decay PACF sharp cutoff after lag 1
An AR(1) process has an ACF that decays smoothly forever, but a PACF that spikes at lag 1 and is essentially zero after — because once you know yesterday's value, nothing from two days ago adds anything new.

The two functions, one symbol at a time

Let yty_t be the series value at time tt, and let kk be a lag — how many steps back you're comparing to. The autocorrelation function at lag kk is

ρk=Corr(yt, ytk).\rho_k = \text{Corr}(y_t,\ y_{t-k}) .

In words: ρk\rho_k ("rho sub k") is the ordinary correlation between the series and its own value kk steps earlier — how much does today resemble kk days ago, ignoring everything in between. The partial autocorrelation function at lag kk, written ϕkk\phi_{kk} ("phi sub k k"), is that same correlation but with the intermediate lags yt1,,ytk+1y_{t-1}, \dots, y_{t-k+1} held fixed — statistically regressed out first:

ϕkk=Corr(yt, ytk  yt1,,ytk+1).\phi_{kk} = \text{Corr}\big(y_t,\ y_{t-k}\ \big|\ y_{t-1}, \dots, y_{t-k+1}\big) .

In words: ϕkk\phi_{kk} is the direct relationship between today and kk days ago, with any relationship that runs through the days in between subtracted out first. The two functions have complementary signature shapes that identify the model family:

ProcessACF shapePACF shape
AR(pp)decays gradually (geometric or damped sine)cuts off sharply after lag pp
MA(qq)cuts off sharply after lag qqdecays gradually
ARMA(p,qp,q)decays graduallydecays gradually

In words: an autoregressive process leaves a fingerprint of "PACF stops suddenly," a moving-average process leaves the mirror-image fingerprint "ACF stops suddenly," and if neither plot has a clean cutoff, you likely need both components.

The ACF cuts off cleanly for a moving-average process; the PACF cuts off cleanly for an autoregressive process. Read which plot has the sharp edge, and that tells you which family — and the lag where it cuts off tells you the order.

Worked example 1: identifying an AR(1) by hand

Suppose true model is yt=0.6yt1+εty_t = 0.6\,y_{t-1} + \varepsilon_t. The theoretical ACF of an AR(1) is ρk=ϕk\rho_k = \phi^k where ϕ=0.6\phi=0.6: ρ1=0.6\rho_1 = 0.6, ρ2=0.36\rho_2 = 0.36, ρ3=0.216\rho_3 = 0.216, ρ4=0.1296\rho_4 = 0.1296 — geometric decay, exactly the shape in the figure. The theoretical PACF is ϕ11=0.6\phi_{11} = 0.6 (matches ρ1\rho_1, since with only one lag available there's nothing to partial out), and ϕkk=0\phi_{kk} = 0 for all k2k \ge 2, because once you know yt1y_{t-1}, yt2y_{t-2} adds zero additional predictive power — it only mattered through its effect on yt1y_{t-1}. Seeing "ACF decays like 0.6,0.36,0.22,0.6, 0.36, 0.22, \dots, PACF is 0.60.6 then noise" tells you immediately: fit an AR(1), and the decay ratio between successive ACF values (0.36/0.6=0.60.36/0.6 = 0.6) even hands you a rough estimate of ϕ\phi before you've fit anything.

Worked example 2: identifying an MA(1) by hand

Suppose true model is yt=εt+0.5εt1y_t = \varepsilon_t + 0.5\,\varepsilon_{t-1}. The theoretical ACF of an MA(1) is ρ1=θ/(1+θ2)=0.5/(1+0.25)=0.4\rho_1 = \theta/(1+\theta^2) = 0.5/(1+0.25) = 0.4, and ρk=0\rho_k = 0 for k2k \ge 2 — a shock only ever touches one lag of the series directly, so correlation vanishes beyond lag 1. The PACF, in contrast, does not cut off; it decays gradually (in this case as an alternating, damped sequence, roughly 0.29,0.15,0.08,-0.29, 0.15, -0.08,\dots) because expressing an MA(1) in terms of past yy's requires infinitely many autoregressive terms. So "ACF has exactly one spike at lag 1, PACF trails off" is the mirror image of example 1, and it says: fit an MA(1), not an AR(1).

Distribution · normal
-2.000.002.00μvalue →
Within ±1σ 68.3%mean μ 0.00std σ 1.00

The dashed confidence band you'd draw on a real ACF/PACF plot is built from exactly this kind of normal approximation — under the null of no autocorrelation at that lag, ρ^k\hat\rho_k is approximately normal with standard error 1/n1/\sqrt{n}, so bars inside roughly ±2/n\pm 2/\sqrt{n} are statistically indistinguishable from zero.

What this means in practice

  • This is step one of Box-Jenkins model building. You read ACF/PACF to propose a candidate (p,q)(p, q), fit it, then check the residuals' ACF/PACF are flat — if they're not, you missed structure and revise.
  • You must difference first. ACF/PACF identification assumes stationarity; a trending or unit-root series shows an ACF that barely decays at all (near 1.0 for dozens of lags) regardless of its true short-run structure, which is itself a diagnostic that you need to difference before reading anything else.
  • Confidence bands, not exact cutoffs. With finite samples, a "cutoff" is really "falls inside the roughly ±2/n\pm 2/\sqrt n band," so a single bar poking slightly outside at a high lag is often noise, not signal — look for a pattern, not one bar.
  • Seasonal series show spikes at seasonal lags. A spike at lag 12 in monthly data, with nothing unusual elsewhere, points to a seasonal AR or MA term at that specific lag, not a longer plain AR order.

The classic confusion: assuming a decaying ACF or PACF means "no structure" or "just add more lags until it looks flat." A gradually decaying shape is not noise — it is the expected signature of an AR or ARMA process, and it never truly reaches zero even for a perfectly specified low-order model. Traders new to this often keep adding AR terms chasing a decaying ACF to zero, drastically overfitting, when the correct read was "the PACF already cut off at lag 2, stop there" and let the ACF's gentle decay be the confirmation, not the target.

Related concepts

Practice in interviews

Further reading

  • Box, Jenkins, Reinsel & Ljung, Time Series Analysis, ch. 3
  • Hamilton, Time Series Analysis, ch. 4
ShareTwitterLinkedIn