In plain English
Data that arrives over time carries memory: today looks like yesterday. Time-series methods use that memory instead of pretending it is not there.
The advanced view
Stationarity is the precondition for standard inference; trends and unit roots are handled by differencing or cointegration. ARIMA models the conditional mean, GARCH the conditional variance (volatility clustering), and decomposition separates trend, seasonality and residual for planning purposes.
Time series data violate the independence assumption, so ordinary tools mislead. Stationarity — constant mean, variance and autocovariance — is the precondition for most models; test with augmented Dickey–Fuller and difference the series if it fails. ACF and PACF plots identify the order of AR and MA terms, which combine into ARIMA(p,d,q).
AR(1): y_t = c + φy_(t−1) + ε_t ARIMA(p,d,q): differenced d times, p AR and q MA terms GARCH(1,1): σ²_t = ω + αε²_(t−1) + βσ²_(t−1) RMSE = √(Σ(ŷ − y)² / n)
Financial returns show volatility clustering: calm periods follow calm periods and turbulent ones cluster too. ARCH and GARCH model conditional variance directly, which is why they underpin risk and option-pricing work. Cointegration handles the case where individually non-stationary series share a long-run relationship — the statistical basis of pairs trading. Always evaluate forecasts out of sample and respect temporal order.
Essential vocabulary
- Stationarity
- Statistical properties constant over time. Required by most time-series models.
- Autocorrelation
- Correlation of a series with its own lags. The signal ARIMA exploits.
- Volatility clustering
- Large moves follow large moves. The empirical fact GARCH was built for.
- Forecast accuracy
- MAE, RMSE or MAPE — always measured out of sample.
Deeper
Stationarity, unit roots and random walks
A series is weakly stationary when its mean, variance and autocovariances do not depend on time. Almost every estimator you know assumes this: with a unit root, standard errors are wrong, t-statistics diverge and two unrelated trending series will look strongly correlated. That is spurious regression, and it is the single most common error in applied finance work.
The random walk y_t = y_(t−1) + ε_t is the benchmark. Its best forecast of tomorrow is today, its variance grows linearly with the horizon, and shocks never die out. Add a drift term and you get the standard model of a log price index; take first differences and you get returns, which are close to stationary. This is why finance models returns rather than prices.
Testing is a hypothesis exercise, so state it properly. The augmented Dickey–Fuller test has H0: a unit root is present (non-stationary) against H1: stationary; you reject when the test statistic is more negative than the critical value, and the critical values are not the normal ones. KPSS reverses the null: H0 is stationarity. Running both is the honest approach — if ADF fails to reject and KPSS rejects, you have solid evidence of a unit root; if they disagree, say so and treat the result as inconclusive.
Transformations, in order: take logs to stabilise variance and turn multiplicative growth into linear growth; difference to remove a unit root; seasonally difference at the seasonal lag if a seasonal pattern remains. Over-differencing is a real cost — it injects negative autocorrelation and inflates forecast variance — so difference once, retest, and stop.
Worked example — reading an ADF test
Step 1 of 8
- 1Series: quarterly revenue index, 60 observations, clear upward drift.
Common pitfalls
- ×Regressing one trending level on another and celebrating an R² of 0.95.
- ×Reading the ADF statistic against normal critical values.
- ×Differencing twice because the ACF still looks untidy.
- ×Forgetting that a structural break makes a stationary series look like a unit root.
Why it works
Differencing works because a random walk's changes are stationary even when its level is not. Regressing two independent random walks on each other produces spurious significance — high R², high t-stats, no relationship — because the standard errors assume independence that the trend violates. Differencing removes the shared trend and restores honest inference.
Common pitfalls
- ×Regressing levels of two trending series and believing the t-statistic.
- ×Fitting seasonality to fewer than two full cycles.
- ×Extending a forecast horizon far beyond what the model's memory supports.
How it is used — deseasonalise before you conclude
Step 1 of 4
- 1Q4 revenue 130 versus Q3 100 — 30% growth?
Deeper
Deeper: stationarity, and why levels regressions lie
Most financial and business series are non-stationary — their mean and variance drift. Regressing one trending series on another produces spurious significance: two random walks will look strongly related about three-quarters of the time. Difference the series (or test for cointegration) before believing any relationship.
Decompose before you forecast: trend, seasonality, cycle, noise. Then choose the simplest model that fits — exponential smoothing or a seasonal naive benchmark is often the right baseline, and any ARIMA or ML forecast must beat it out of sample to earn its place.
Must know cold
- ✓Stationary = constant mean, variance and autocovariance; test with ADF.
- ✓Always compare a forecast against a naive benchmark.
- ✓Autocorrelation in residuals means the model is missing structure.
- ✓YoY comparisons remove seasonality but hide turning points by 12 months.
Exercises
Try each one on paper before revealing the worked solution.
Exercise 1
Monthly sales rise every December by about 40%. How do you build a simple, defensible forecast?
Exercise 2
Two trending series regress with R² = 0.92 and t = 14. Why is that not evidence?
The mean-reverting series keeps returning to its average, so its mean and variance are stable and forecasts converge to that average. The random walk wanders: every shock is permanent, the variance grows with the horizon, and the best forecast of tomorrow is simply today. Prices behave like the lower line, returns like the upper one.
Taking Δy strips out the trend and leaves a series scattered around zero — stationary and modellable. This is why finance models log returns rather than log prices, and why d = 1 is the usual answer in ARIMA(p, d, q). Difference once, retest, and stop: over-differencing injects negative autocorrelation.
Bars are autocorrelations by lag; the dashed band is ±1.96/√T. Slow geometric decay like this points to an AR term, whereas a sharp cut-off after lag q points to MA(q). A spike at lag 4 or 12 alone means seasonality. If the ACF of the residuals looks like this, the model is not finished.
The wiggly line is the observed series, the straight one the trend. Splitting a series into trend, season and remainder is the first thing to do with any quarterly client data — otherwise a strong Q4 gets mistaken for growth and the January drop for a crisis.
Returns are close to unpredictable in level but not in magnitude: big moves arrive in runs. That is the empirical fact ARCH and GARCH were built for, and it is why a single unconditional standard deviation understates risk in turbulent regimes and overstates it in calm ones.