Tutorials › Exam SRM - Statistics for Risk Modeling › Forecasting Beyond One Seasonal Cycle

Exam SRM · Smoothing and Forecasting · Tutorial 500 of 926

Forecasting Beyond One Seasonal Cycle

Use the seasonal pattern in the correct order while projecting level and trend to forecast several cycles ahead.

Intermediate 12 min read

What You'll Learn

  • Extend Holt-Winters level and trend across multiple forecast periods
  • Index seasonal components correctly when the forecast passes one or more full cycles
  • Calculate additive and multiplicative seasonal forecasts at different horizons
  • Derive the repeated-cycle seasonal index using quotient and remainder
  • Recognize off-by-one errors and check forecasts against the seasonal sequence

Why Forecasts Beyond One Seasonal Cycle Need Care

A seasonal forecast does not use a new seasonal component for every future period. Instead, the latest estimated seasonal pattern repeats. For a forecast one cycle ahead, the pattern has already wrapped around; for forecasts several cycles ahead, it wraps around repeatedly. The main challenge is to match each forecast horizon to the correct position in that repeated pattern while extending the level and trend.

This tutorial uses the Holt-Winters additive and multiplicative seasonal forms. Their level, trend, and seasonal states are assumed to have been initialized and updated through time \(t\). We focus on how to use those states for horizons beyond one seasonal cycle, rather than on estimating them.

Definition: Let \(m\) be the number of observations in one seasonal cycle. At the end of period \(t\), the latest seasonal states correspond, in order, to positions \(t-m+1,\ldots,t\) in the cycle. A forecast at horizon \(h\) is for period \(t+h\), where \(h\) is a positive integer.

Extending Level and Trend

Let \(l_t\) be the estimated level at time \(t\), and let \(b_t\) be the estimated trend per observation period. The point forecast extends the current level by \(h\) trend increments. Thus, before applying seasonality, the projected level at horizon \(h\) is \(l_t+hb_t\). The trend is multiplied by the number of periods ahead, not by the number of seasonal cycles.

In the additive form, the seasonal component is measured in the same units as the observations and is added to the projected level. In the multiplicative form, the seasonal component is a dimensionless factor and multiplies the projected level.

Holt-Winters point forecasts: If the latest seasonal states are \(s_{t-m+1},\ldots,s_t\) for the additive form, or \(c_{t-m+1},\ldots,c_t\) for the multiplicative form, then
$$ \hat{y}_{t+h\mid t}^{\,\text{add}} =l_t+hb_t+s_{t-m+1+((h-1)\bmod m)} $$
$$ \hat{y}_{t+h\mid t}^{\,\text{mult}} =(l_t+hb_t)c_{t-m+1+((h-1)\bmod m)} $$

Here, \((h-1)\bmod m\) is the remainder after dividing \(h-1\) by \(m\), so it is one of \(0,1,\ldots,m-1\). The seasonal index therefore always selects one of the latest \(m\) seasonal states. These formulas give point forecasts conditional on the fitted states and the assumed repeating pattern; they do not by themselves describe forecast uncertainty.

Why the Seasonal Index Repeats

The first forecast, at \(h=1\), uses the component for the first seasonal position after time \(t\), namely \(s_{t-m+1}\) or \(c_{t-m+1}\). The next forecast uses the next component in the stored sequence. Once all \(m\) positions have been used, the sequence starts again.

1
Separate full cycles from the position within a cycle.
Write \(h-1=qm+r\), where \(q\) is a nonnegative integer and \(r\) is the remainder \(0\le r<m\).
2
Identify the seasonal position.
The \(q\) complete cycles do not change the seasonal position. The remainder \(r\) advances \(r\) places from the first seasonal state, so the index is \(t-m+1+r\).
3
Apply the trend and seasonality.
Use \(l_t+hb_t\) for the projected level, then add the selected seasonal state in the additive form or multiply by the selected factor in the multiplicative form.

Substituting \(r=(h-1)\bmod m\) gives the stated index. The subtraction of 1 matters: horizon \(h=1\) must select the first stored seasonal state, not the second.

Worked Example: Additive Forecasts Across Two Cycles

A hypothetical quarterly series is modeled with additive seasonality and period \(m=4\). At the end of quarter \(t\), the estimated level is \(120\) thousand units and the trend is \(3\) thousand units per quarter. The latest seasonal components are \(s_{t-3}=-8\), \(s_{t-2}=2\), \(s_{t-1}=5\), and \(s_t=1\), in thousands of units. Find the forecasts at horizons \(h=4\), \(h=5\), and \(h=9\).

Method. For each horizon, project the level as \(120+3h\), then select a seasonal component using \(t-3+((h-1)\bmod 4)\).

At \(h=4\): The projected level is \(120+3(4)=132\). The remainder is \((4-1)\bmod 4=3\), so the seasonal index is \(t-3+3=t\), with component \(1\). The forecast is \(132+1=133\) thousand units.

At \(h=5\): The projected level is \(120+3(5)=135\). The remainder is \((5-1)\bmod 4=0\), so the component is \(s_{t-3}=-8\). The forecast is \(135-8=127\) thousand units.

At \(h=9\): The projected level is \(120+3(9)=147\). The remainder is \((9-1)\bmod 4=0\), so the component is again \(s_{t-3}=-8\). The forecast is \(147-8=139\) thousand units.

Check. Horizons 5 and 9 are both the first position of a seasonal cycle, so both use \(s_{t-3}\). The level rises by \(3\) thousand units for each additional quarter; from horizon 5 to 9 it rises by \(12\), and the forecast rises from \(127\) to \(139\), as expected. The common mistake avoided is treating the first forecast after a full cycle as if it used the last seasonal component.

Multiplicative Seasonality Across Repeated Cycles

For multiplicative seasonality, the seasonal factors are ratios relative to the underlying level. A factor of \(0.8\) indicates a forecast 20% below the projected level, while a factor of \(1.1\) indicates one 10% above it. The factor sequence repeats in the same way as the additive sequence.

The projected level \(l_t+hb_t\) must be interpreted on the scale used by the fitted model. Multiplicative forecasts are generally used for positive observations with positive seasonal factors. If the projected level is not positive, the resulting forecast may not be meaningful for a positive-valued series; the formula does not resolve that modeling problem.

Worked Example: A Declining Multiplicative Series

A hypothetical series has a seasonal period \(m=4\), level \(l_t=300\), and trend \(b_t=-5\) units per period. The seasonal factors are \(c_{t-3}=0.8\), \(c_{t-2}=1.0\), \(c_{t-1}=1.1\), and \(c_t=1.1\). Find forecasts at horizons \(h=1\), \(h=4\), \(h=6\), and \(h=9\).

Method. At each horizon, calculate the projected level \(300-5h\), then multiply by the factor at index \(t-3+((h-1)\bmod 4)\).

At \(h=1\): The projected level is \(300-5(1)=295\). The remainder is \(0\), so the factor is \(c_{t-3}=0.8\). The forecast is \(295(0.8)=236\).

At \(h=4\): The projected level is \(300-5(4)=280\). The remainder is \(3\), so the factor is \(c_t=1.1\). The forecast is \(280(1.1)=308\).

At \(h=6\): The projected level is \(300-5(6)=270\). Since \((6-1)\bmod 4=1\), the factor is \(c_{t-2}=1.0\). The forecast is \(270(1.0)=270\).

At \(h=9\): The projected level is \(300-5(9)=255\). Since \((9-1)\bmod 4=0\), the factor is \(c_{t-3}=0.8\). The forecast is \(255(0.8)=204\).

Check. At \(h=6\), the seasonal position is the second one in the four-period sequence, so its factor is \(1.0\), not \(1.1\). The trend has reduced the projected level from \(300\) to \(270\), and multiplication by \(1.0\) leaves it unchanged. The common mistake avoided is selecting the seasonal factor using \(h\bmod m\) instead of \((h-1)\bmod m\).

Reading the Seasonal Sequence Carefully

A short index table can prevent errors when a problem asks for several horizons. For \(m=4\), the seasonal sequence beginning with \(h=1\) is \(t-3,t-2,t-1,t\), and then it repeats. The same sequence applies whether the components are additive \(s\) values or multiplicative \(c\) factors.

Forecast horizonRemainder \((h-1)\bmod 4\)Seasonal state used
10At \(t-3\)
21At \(t-2\)
32At \(t-1\)
43At \(t\)
50At \(t-3\), repeated
83At \(t\), repeated

Notice that horizons \(h\) and \(h+m\) use the same seasonal component. Their projected levels differ by \(mb_t\), because the trend advances by \(m\) additional periods. In the additive model, their forecasts therefore differ by \(mb_t\). In the multiplicative model, they use the same factor, but their projected levels differ by \(mb_t\) before multiplication.

Worked Example: Matching Distant Horizons to a Six-Period Pattern

A hypothetical series has an additive seasonal period \(m=6\), level \(l_t=850\), and trend \(b_t=12\) units per period. Its latest seasonal components, in order from \(t-5\) through \(t\), are \(-20,0,15,30,5,-30\). Find the forecasts at \(h=14\) and \(h=18\).

At \(h=14\): The projected level is \(850+14(12)=850+168=1018\). The remainder is \((14-1)\bmod 6=13\bmod 6=1\). Thus the seasonal index is \(t-5+1=t-4\), whose component is \(0\). The forecast is \(1018+0=1018\).

At \(h=18\): The projected level is \(850+18(12)=850+216=1066\). The remainder is \((18-1)\bmod 6=17\bmod 6=5\). Thus the seasonal index is \(t-5+5=t\), whose component is \(-30\). The forecast is \(1066-30=1036\).

Check. Since \(18-14=4\), the projected level rises by \(4(12)=48\). The two horizons use different seasonal positions: the component changes from \(0\) to \(-30\), a decrease of \(30\). Accordingly, the forecast changes by \(48-30=18\), and \(1036-1018=18\). This checks both the trend extension and the seasonal selection.

Common Indexing Trap

A tempting shortcut is to use \(h\bmod m\) as the position within the seasonal cycle. That shifts the sequence by one place because \(h=1\) would then have remainder 1, even though the first forecast must use the first stored component. The correct remainder is \((h-1)\bmod m\).

For instance, in the first worked example, \(m=4\) and \(h=5\). The correct remainder is \((5-1)\bmod 4=0\), so the component is \(s_{t-3}=-8\) and the forecast is \(135-8=127\). Using \(5\bmod4=1\) incorrectly selects \(s_{t-2}=2\), producing \(135+2=137\). The two calculations differ because the wrong one advances the seasonal pattern one position too far.

Key takeaway: For any positive horizon \(h\), extend the level by \(hb_t\), then select the seasonal state with index \(t-m+1+((h-1)\bmod m)\). The seasonal sequence repeats every \(m\) periods; the trend projection does not reset at the start of a new cycle.

A reliable calculation keeps these operations separate: first find the horizon-specific projected level, then determine the seasonal position, and finally add or multiply by the selected component. This method is aligned with the SOA Exam SRM (Statistics for Risk Modeling) syllabus and is especially useful when a question gives nonconsecutive horizons spanning several cycles.

Check Your Understanding

For each problem, apply the appropriate seasonal form and track the seasonal position using the forecast horizon.

  1. An additive model has \(m=4\), \(l_t=200\), \(b_t=2\), and seasonal components \(s_{t-3}=-6\), \(s_{t-2}=1\), \(s_{t-1}=4\), \(s_t=1\). Find the forecasts at \(h=7\) and \(h=12\). (Answer: \(218\) and \(225\), respectively.)
  2. A multiplicative model has \(m=4\), \(l_t=500\), \(b_t=10\), and factors \(c_{t-3}=0.9\), \(c_{t-2}=1.0\), \(c_{t-1}=1.2\), \(c_t=0.9\). Find the forecast at \(h=5\). (Answer: \(495\).)
  3. An additive model has \(m=3\), \(l_t=40\), \(b_t=2\), and components \(s_{t-2}=-3\), \(s_{t-1}=1\), \(s_t=2\). Find the forecast at \(h=8\). (Answer: \(57\).)
  4. A multiplicative model has \(m=4\), \(l_t=160\), \(b_t=4\), and factors \(c_{t-3}=0.75\), \(c_{t-2}=1.0\), \(c_{t-1}=1.25\), \(c_t=1.0\). Find the forecast at \(h=10\). (Answer: \(200\).)
  5. An additive model has \(m=5\), \(l_t=90\), \(b_t=-2\), and the ordered components are \(s_{t-4}=3\), \(s_{t-3}=-1\), \(s_{t-2}=0\), \(s_{t-1}=4\), and \(s_t=-6\). Find the forecast at \(h=16\). (Answer: \(61\).)
Clinical Biostats