FRM Exam Part I · Stationary Time Series
Seasonality in Time Series: Dummy Variables and Seasonal ARMA
Updated 11 October 2026 · Fact-checked
Seasonality is a regular pattern that repeats every fixed number of periods, such as every quarter or every December. You model it by adding seasonal dummy variables to a regression, or by adding AR or MA terms at the seasonal lag (for example lag 4 for quarterly data) to an ARMA model.
Understand Seasonality in Time Series
A seasonal pattern is a cycle tied to the calendar. Retail sales jump in December. Natural gas demand rises in winter. Quarterly earnings often show a repeating shape. The pattern repeats every s periods: s = 4 for quarterly data, s = 12 for monthly data.
Seasonality breaks the idea that the mean is constant over time, so a series with strong seasonality is not covariance stationary. You must deal with it before or while you fit an ARMA model. If you ignore it, the residuals show a clear spike in the autocorrelation function at the seasonal lags (4, 8, 12 for quarterly data).
There are two main ways to model it. The first is seasonal dummies. You create one dummy per season, each equal to 1 in that season and 0 otherwise. The regression is then y(t) = γ1·D1(t) + γ2·D2(t) + ... + γs·Ds(t) + ε(t). Each γ is the average level of that season. This treats seasonality as deterministic: the same pattern repeats forever.
The second is stochastic seasonality. You add AR or MA terms at the seasonal lag. A seasonal AR(1) for quarterly data is y(t) = φ·y(t−4) + ε(t). Here the seasonal pattern can drift and evolve over time. In practice you can combine both: remove the deterministic seasonal means with dummies, then fit a seasonal ARMA to the residuals.
The diagnostic is the ACF and PACF. A seasonal AR shows ACF spikes at lags s, 2s, 3s that decay slowly, and a PACF that cuts off after lag s. A seasonal MA shows an ACF that cuts off after lag s.
Key formulas to remember
- Seasonal dummy model (no intercept)
- y(t) = γ1·D1(t) + γ2·D2(t) + ... + γs·Ds(t) + ε(t)
- Use s dummies and no intercept. Each γ is the mean of its season.
- Seasonal dummy model (with intercept)
- y(t) = β0 + β2·D2(t) + ... + βs·Ds(t) + ε(t)
- Use s − 1 dummies. β0 is the mean of the omitted base season; each β is the difference from the base. Using s dummies plus an intercept causes perfect multicollinearity (dummy variable trap).
- Seasonal AR(1)
- y(t) = φ·y(t−s) + ε(t)
- Seasonal lag s: 4 for quarterly, 12 for monthly. Needs |φ| < 1 for stationarity.
- Seasonal MA(1)
- y(t) = ε(t) + θ·ε(t−s)
- ACF is nonzero at lag s and zero beyond it.
- Seasonal ARMA combined with short-run terms
- (1 − φ1·L)(1 − Φ1·L^s)·y(t) = (1 + θ1·L)(1 + Θ1·L^s)·ε(t)
- L is the lag operator. Short-run terms capture momentum; seasonal terms capture the repeat at lag s. The product form creates cross terms at lag s+1.
- Forecast of seasonal dummy model
- ŷ(T+h) = γ of the season that period T+h falls in
- Pick the dummy coefficient for the target season.
How to solve Seasonality in Time Series questions
Use this routine for any seasonality question, whether it asks for a model choice, an interpretation or a forecast.
- 1Find the season length s from the data frequency: 4 for quarterly, 12 for monthly, 7 for daily data with a weekly pattern.
- 2Decide the type: a fixed repeating pattern points to seasonal dummies; a pattern that evolves or shows ACF spikes at lags s, 2s, 3s points to seasonal AR or MA terms.
- 3For dummies, check the setup: with an intercept use s − 1 dummies; without one use s dummies.
- 4Read coefficients correctly. With an intercept, the base season mean is β0 and another season mean is β0 + its coefficient. Without an intercept, each coefficient is that season's mean.
- 5For a seasonal AR or MA, read the ACF and PACF at the seasonal lags to pick the order, then check the residuals for leftover spikes.
- 6For a forecast, plug in the right season's dummy or lag value, and compute step by step.
- 7Sanity check: the answer should sit near the historical level of that season.
Quickest way: Seasonal lag spotting and dummy decoding
When to use it: Use when the question gives a table of dummy coefficients or an ACF description and you need the answer in under two minutes.
- Write s next to the question and mark lags s, 2s, 3s.
- If the question shows ACF spikes only at those lags, answer seasonal ARMA terms; if it shows a fixed average per season, answer dummies.
- For dummy tables, first check whether there is an intercept. Add it to each coefficient if yes.
- For forecasts, compute only the one season you need.
- Eliminate options that use s dummies with an intercept.
Common mistakes in Seasonality in Time Series
Including s dummies and an intercept together
It feels natural to give every season its own dummy and also keep the constant.
Fix: Drop one dummy when you keep the intercept, or drop the intercept when you keep all s dummies. Otherwise the dummies sum to the intercept column (perfect multicollinearity).
Reading a dummy coefficient as the season mean when an intercept is present
Students forget the omitted base season sits inside β0.
Fix: With an intercept, season mean = β0 + coefficient. The base season mean is β0 alone.
Using lag 1 instead of lag s for the seasonal term
Seasonal AR looks like a normal AR(1), so the lag is copied by habit.
Fix: Seasonal AR(1) has y(t−s). For quarterly data that is y(t−4), for monthly y(t−12).
Treating a seasonal series as stationary without adjusting
The series may have a stable overall mean, so it looks stationary.
Fix: A repeating mean that changes by season violates constant mean. Model the seasonal part first, then check the residuals.
Assuming dummies fit evolving seasonality
Dummies are easy to run, so they get used for everything.
Fix: Dummies assume the pattern is fixed forever. If the seasonal shape changes over time, use seasonal AR or MA terms.
Worked examples
Example 1
A quarterly sales series (in USD millions) is regressed on an intercept and dummies for Q2, Q3 and Q4, with Q1 as the base. The estimates are β0 = 40, Q2 = 6, Q3 = −4, Q4 = 15. What is the forecast for a Q4 observation, and what is the expected difference between Q3 and Q2?
Show the solution
- There are four seasons and an intercept, so three dummies are correct.
- Q1 is the base season, so its mean is β0 = 40.
- Q4 mean = β0 + Q4 coefficient = 40 + 15 = 55.
- Q2 mean = 40 + 6 = 46. Q3 mean = 40 − 4 = 36.
- Q3 minus Q2 = 36 − 46 = −10, which is also −4 − 6 = −10.
Answer: The Q4 forecast is USD 55 million, and Q3 is USD 10 million lower than Q2.
Example 2
Quarterly data follow a seasonal AR(1): y(t) = 0.5·y(t−4) + ε(t), with no intercept. The last four observations are y(T−3) = 8, y(T−2) = 12, y(T−1) = 20, y(T) = 10. Forecast y(T+1) and y(T+5).
Show the solution
- Seasonal lag is 4, so y(T+1) depends on y(T+1−4) = y(T−3).
- ŷ(T+1) = 0.5 × y(T−3) = 0.5 × 8 = 4.
- For y(T+5), the lag-4 value is y(T+1), which is not observed. Use its forecast 4.
- ŷ(T+5) = 0.5 × ŷ(T+1) = 0.5 × 4 = 2.
- Check: forecasts for the same season shrink by 0.5 every year, toward the mean of zero.
Answer: ŷ(T+1) = 4 and ŷ(T+5) = 2.
Exam tips
- Look for the data frequency in the question stem. It tells you s and the lags to check.
- If the choice is between dummies and a seasonal ARMA, ask whether the pattern is fixed or evolving.
- Always check for an intercept before reading dummy coefficients.
- For ACF questions, spikes at lags s, 2s and 3s that fade slowly suggest seasonal AR; a spike only at lag s suggests seasonal MA.
- Write out each forecast step. The recursion for multi-step seasonal forecasts is easy to slip on.
Practice questions from Stationary Time Series
- An AR(1) model has intercept 1.0 and coefficient 0.5. The latest observation is y_T = 4. What is the two-step-ahead forecast of y_{T+2}?
- An analyst fits an MA(2) model y_t = e_t + 0.4 e_{t-1} + 0.3 e_{t-2}, with white noise variance 2. What is the autocovariance of y_t at lag …
- Using 100 residuals, an analyst computes sample autocorrelations of 0.20 at lag 1, -0.10 at lag 2, and 0.10 at lag 3. The Box-Pierce statist…
- A forecaster has a quarterly series with a stable seasonal pattern and models it as Y_t = c + 0.3*Y_{t-1} + 0.5*Y_{t-4} + e_t. Which stateme…
- A zero-mean covariance stationary AR(1) process has φ = 0.8. The most recent observation is Y_T = 10. What is the best linear forecast of Y_…
Seasonality in Time Series in other exams
The same ground in other exams, if you are preparing for more than one or want another angle on it.
Seasonality in Time Series: frequently asked questions
What is seasonality in a time series?
It is a pattern that repeats at a fixed interval, such as every quarter or month. It makes the mean depend on the season, so the series is not covariance stationary until the seasonal part is modeled.
How do I model seasonality with dummy variables?
Create one 0/1 variable per season. With an intercept, use s − 1 dummies; without an intercept, use all s. The coefficients give the seasonal means or differences from the base season.
What is a seasonal ARMA model?
It is an ARMA model with AR or MA terms at the seasonal lag s, such as y(t−4) for quarterly data. It can also combine these with ordinary short-lag terms.
How do I tell seasonality from the ACF?
Look for significant autocorrelations at the seasonal lags s, 2s and 3s. A slowly decaying pattern there suggests a seasonal AR term, while a cutoff after lag s suggests a seasonal MA term.