You now have a stationary series — returns — and the obvious question is whether it carries any memory. Does a big up-day make tomorrow more (or less) likely to be up? Is there a weekly rhythm, a momentum effect, a reversal? Autocorrelation is the measurement that answers this, and its two diagnostic plots — the ACF and the PACF — are the fingerprint readers of time-series analysis. They tell you whether there’s any forecastable structure at all (the white-noise question) and, if there is, which kind of model will capture it. Learn to read these two plots and half of model selection becomes pattern recognition.
Before you read — take a guess
You compute the correlation between a return series and the same series shifted by one day. It comes out at 0.02. Before celebrating a forecasting edge, what should you ask?
Autocorrelation: a series correlated with its own past
Analogy. Autocorrelation is asking, “How much does today rhyme with yesterday?” If hot days tend to follow hot days, temperature has positive autocorrelation at lag 1. If a bounce tends to follow a drop, the series has negative autocorrelation. It’s just the ordinary correlation coefficient, but between a series and a time-shifted copy of itself.
Definition. The autocorrelation at lag is the correlation between and : Like any correlation, lives in . By construction (a series is perfectly correlated with itself at lag 0). The whole sequence is the autocorrelation function (ACF).
Worked example. Take a tiny series with mean . Deviations: .
- Denominator (variance sum): .
- Lag-1 numerator: .
- So — weak positive lag-1 autocorrelation in this toy series.
The arithmetic is just correlation; the interpretation is “memory across one step in time.”
White noise: the null hypothesis of “no structure”
Before you can call any autocorrelation meaningful, you need a baseline for “no memory at all.” That baseline is white noise.
Definition. A white-noise process has zero mean, constant variance, and zero autocorrelation at every nonzero lag ( for all ). Each value is uncorrelated with every other — pure unforecastable noise. It is the time-series equivalent of “nothing to see here.”
The significance band. Here’s the subtlety the pretest flagged: even true white noise produces small nonzero sample autocorrelations, because you’re estimating from a finite sample. Under the white-noise null, each sample is approximately normal with standard error . So the 95% confidence band is roughly A bar inside the band is indistinguishable from zero — sampling noise. A bar poking outside it is a statistically significant autocorrelation: real structure.
Worked example — the band shrinks with data. For observations the band is — a sample autocorrelation needs to exceed in magnitude to count. For (about ten years of daily data) the band is . More data means a tighter band, so smaller real effects become detectable — but it also means you must not be impressed by a when (inside the band) even though the same would be significant at .
Toggle the three patterns. White noise keeps every bar inside the grey band — no forecastable structure. The AR(1) decays geometrically across many lags. The MA(1) fires one significant spike at lag 1 and then collapses. The shape is the model's signature.
A return series has n = 400 observations. Its lag-1 sample autocorrelation is 0.07. Is it statistically significant at the usual 95% level?
The PACF: autocorrelation with the middle removed
The ACF has a blind spot. If today is correlated with yesterday, and yesterday with the day before, then today will show correlation with two days ago even if there’s no direct link — the effect just leaks through the chain. The ACF can’t tell a direct relationship from an indirect, transmitted one. The partial autocorrelation function (PACF) fixes exactly this.
Definition. The partial autocorrelation at lag is the correlation between and after removing the influence of all the intermediate lags . It’s the direct effect of periods ago, with the indirect transmission stripped out.
Analogy. The ACF asks, “Are grandparents correlated with grandchildren?” — and the answer is yes, but partly because parents sit in between. The PACF asks, “Is there a direct grandparent–grandchild link once we account for the parents?” Usually much smaller. The PACF isolates the genuinely direct dependence.
This is why the two plots together identify the model — they answer different questions, and each model type leaves a distinctive joint signature.
ACF versus PACF.
Pick the right option for each blank, then check.
The ACF measures the correlation between a value and its lag-k past, including effects that leak through intermediate lags. The PACF measures the correlation at lag k after . Together they form the fingerprint used to choose a model.
The model-identification cheat sheet
Here’s the payoff that makes these two plots indispensable. Each of the basic models (you’ll meet them in detail next lesson) leaves a characteristic pattern across the ACF and PACF:
| Model | ACF | PACF |
|---|---|---|
| White noise | all bars inside the band | all bars inside the band |
| AR(p) | decays gradually (geometric / damped) | cuts off after lag |
| MA(q) | cuts off after lag | decays gradually |
| ARMA(p,q) | decays after lag | decays after lag |
The mnemonic: AR shows its order in the PACF cutoff; MA shows its order in the ACF cutoff. They’re mirror images. An AR(2), for instance, has a PACF with two significant spikes and then silence, while its ACF tapers off smoothly. An MA(1) does the reverse: one significant ACF spike, then silence, with a tapering PACF.
Worked reading. Suppose you plot a return series and see: the ACF has a single big spike at lag 1 (outside the band), everything after inside; the PACF tapers off gradually over several lags. Reading the table: ACF cuts off after lag 1 → that’s the of an MA(1). You’d fit an MA(1) and check the residuals.
Match each pattern to the model it points to.
Pick a term, then click its definition.
Ljung–Box: is there ANY structure left?
Eyeballing 20 individual bars invites trouble — with a 95% band, you expect about 1 in 20 to poke outside by pure chance. You want a single test of the joint question: “taken together, are the first autocorrelations collectively different from zero?” That’s the Ljung–Box test.
The idea. It bundles the first sample autocorrelations into one statistic: which, under the white-noise null, follows a chi-squared distribution. A large (small p-value) means the autocorrelations are jointly too big to be noise — there’s leftover structure. A small (large p-value) means the series is statistically indistinguishable from white noise across those lags.
The two ways quants use it:
- On the raw series: is there any forecastable autocorrelation worth modeling at all? A small p-value says yes.
- On model residuals: the crucial diagnostic. After fitting a model, the residuals should be white noise — you’ve extracted all the structure. Run Ljung–Box on them: a large p-value (fail to reject) is what you want — it means no autocorrelation remains, the model has done its job. A small p-value means structure is still leaking through and the model is mis-specified.
Worked intuition. You fit an AR(1), then run Ljung–Box on the residuals and get p = 0.62. Since , you fail to reject white noise — the residuals look clean, so the AR(1) captured the autocorrelation. If instead p = 0.001, you’d reject: there’s still structure (maybe you need an AR(2) or an MA term), and your model is incomplete.
A clean ACF on returns does NOT mean clean on squared returns
Financial returns are notorious: their level ACF is often nearly white noise (you can’t forecast direction), yet the ACF of their squared (or absolute) returns shows strong, slowly-decaying autocorrelation. That’s volatility clustering — big moves follow big moves — and it’s invisible to a Ljung–Box test run on the raw returns. Always check squared returns too; it’s the gateway to the GARCH lesson.
If the return ACF is basically flat, why does anyone bother with time-series models at all?
Because “can’t forecast the direction” and “no structure to exploit” are different claims. Three things hide behind a flat return ACF. First, volatility is forecastable even when returns aren’t: the squared-return ACF is far from flat, which is the entire ARCH/GARCH industry and the basis of risk forecasting and options pricing. Second, the autocorrelation that does survive in returns is often small but real and persistent (short-horizon reversal, longer-horizon momentum), and at scale a tiny edge times enormous turnover is a business. Third, even a perfectly white-noise return still needs its unconditional distribution modeled — fat tails, skew — for risk and capital. So a flat ACF kills naive direction-betting, not time-series modeling. It just redirects you from the mean to the variance and the tails.
You fit a model and run the Ljung–Box test on its residuals, getting a p-value of 0.45. What does this tell you, and is it good news?
Putting it together
Autocorrelation measures how much a series rhymes with its own past: is the correlation between and , and the sequence is the ACF. The baseline is white noise — zero autocorrelation at every nonzero lag — and because finite samples wiggle, you judge significance against the band: bars inside it are indistinguishable from zero, bars outside are real structure. The PACF removes the indirect, transmitted-through-intermediate-lags correlation to isolate the direct effect at each lag. Read together, the two plots are a model-identification cheat sheet: AR(p) cuts off in the PACF, MA(q) cuts off in the ACF, ARMA decays in both, white noise stays inside the band everywhere. The Ljung–Box test bundles the first autocorrelations into one chi-squared statistic — use it on the raw series to ask “is there anything to model?” (small p-value = yes) and on residuals to confirm “did the model extract everything?” (large p-value = success). And beware: a clean return ACF can still hide ferocious autocorrelation in the squared returns — volatility clustering, the doorway to GARCH.
Big picture
Autocorrelation, ACF & PACF — the whole picture
- Autocorrelation, ACF & PACF
- Autocorrelation
- Correlation of X_t with X_{t−k}
- Lives in [−1, 1]; ρ0 = 1
- The full sequence is the ACF
- White noise & the band
- Zero autocorrelation at all nonzero lags
- 95% band ≈ ±2/√n
- Inside = noise; outside = significant
- More data → tighter band
- PACF
- Direct correlation at lag k
- Removes intermediate-lag transmission
- Grandparent link with parents controlled
- Model identification
- AR(p): PACF cuts off after p
- MA(q): ACF cuts off after q
- ARMA: both decay gradually
- White noise: both inside the band
- Ljung–Box
- Joint test of first m autocorrelations
- Raw series: small p = structure to model
- Residuals: large p = model is clean
- Check squared returns for clustering
- Autocorrelation
Recap: autocorrelation, ACF & PACF
A series of n = 625 daily returns shows a lag-1 sample autocorrelation of 0.11. Is it significant at 95%?
Check your answer to continue.
Next up — AR, MA & ARIMA models — we turn the patterns these plots reveal into actual fitted equations: the autoregressive, moving-average, and integrated models that turn “the PACF cuts off at lag 2” into a forecasting machine you can estimate and interpret.