Trend vs seasonality: demand patterns explained with examples
A busy August can look like growth. Separate the underlying movement, the repeating pattern and the unusual month before changing the forecast.
A trend is the longer-term direction of demand. Seasonality is a pattern tied to a recurring calendar period. Noise is irregular variation. A history can contain all of them at once. Separating them helps you decide which part might belong in the next forecast.
August orders are up. Sales wants a higher forecast, purchasing wants to bring stock forward, and the warehouse wants to know whether this is the new normal.
Start with the shape of the history, before comparing forecasting methods. A method can score well over a quiet period and still miss the annual peak you need to prepare for.
Trend vs seasonality: what repeats, and what moves?
A trend might be a gradual rise as more customers start buying a product. It can flatten or change direction; it does not have to follow a straight line.
Seasonality repeats around a known calendar period. That could mean busier Mondays, a summer peak or a year-end ordering rush. It does not have to be caused by the weather.
A cycle is different: its rises and falls do not follow a fixed calendar frequency. A downturn that lasts several years is not the same thing as a recurring quiet January. These distinctions follow Forecasting: Principles and Practice.
| Pattern | What to look for | Planning consequence |
|---|---|---|
| Trend | A longer-term rise or fall across the history | Reconsider the underlying demand level |
| Seasonality | Similar timing across repeated days, weeks or years | Prepare supply ahead of the recurring peak |
| Cycle | Longer rises and falls without a fixed period | Revisit the business conditions behind the change |
| Irregular movement | Observations the chosen pattern does not explain | Investigate before carrying the movement forward |
Be careful with the last row. A model's remainder is simply what its trend and seasonal components leave unexplained. That could include a promotion, a data error or a pattern the model missed. Calling it noise does not prove it is random or unimportant.
A worked demand pattern: why August jumps
Take a fictional product measured in individual pieces per month. We build two years of history from a slowly rising base, a recurring summer peak and small irregular movements. In the second August, we add an unusually large movement.
July in year 2 has 151 pieces of demand. August reaches 186, then September falls to 148. Carrying August's level into every following month would treat both its seasonal lift and its unusual extra demand as permanent growth.
The chart shows how we constructed that August: 138 trend + 20 seasonal + 28 remainder = 186 pieces. Without the remainder, the example's trend plus seasonal pattern would give 158.
Read the same month across four plots
August contains more than the summer peak
The original series stays visible. Hover over the plots or use the month control to inspect the components. Each panel has its own labelled scale in pieces.
Scroll sideways to see both years. The month control also selects every point.
Solid graphite: observed demand. Dashed rust: trend + season, when shown. Lower plots: individual contributions.
Aug, year 2, pieces
See all 24 months and the construction
Trend = 100 + 2 × month index, starting at zero. The twelve seasonal effects sum to zero and repeat in year 2. Remainders are specified teaching values; the second August has +28. No statistical model is fitted. Turning off the reference changes only its visibility, not the data or lower plots.
| Month | Trend | Seasonal | Remainder | Observed |
|---|---|---|---|---|
| Jan, year 1 | 100 | -20 | 0 | 80 |
| Feb, year 1 | 102 | -15 | 2 | 89 |
| Mar, year 1 | 104 | -10 | -2 | 92 |
| Apr, year 1 | 106 | 0 | 0 | 106 |
| May, year 1 | 108 | 5 | 1 | 114 |
| Jun, year 1 | 110 | 10 | -1 | 119 |
| Jul, year 1 | 112 | 15 | 0 | 127 |
| Aug, year 1 | 114 | 20 | 2 | 136 |
| Sep, year 1 | 116 | 10 | -2 | 124 |
| Oct, year 1 | 118 | 0 | 0 | 118 |
| Nov, year 1 | 120 | -5 | 1 | 116 |
| Dec, year 1 | 122 | -10 | -1 | 111 |
| Jan, year 2 | 124 | -20 | 0 | 104 |
| Feb, year 2 | 126 | -15 | -2 | 109 |
| Mar, year 2 | 128 | -10 | 2 | 120 |
| Apr, year 2 | 130 | 0 | 0 | 130 |
| May, year 2 | 132 | 5 | -1 | 136 |
| Jun, year 2 | 134 | 10 | 1 | 145 |
| Jul, year 2 | 136 | 15 | 0 | 151 |
| Aug, year 2 | 138 | 20 | 28 | 186 |
| Sep, year 2 | 140 | 10 | -2 | 148 |
| Oct, year 2 | 142 | 0 | 0 | 142 |
| Nov, year 2 | 144 | -5 | -1 | 138 |
| Dec, year 2 | 146 | -10 | 1 | 137 |
Move over the chart or select a month to inspect it. The original demand stays visible. The three smaller plots show what contributes to each point, using the same dates.
The base rises by two pieces each month, including months when total demand falls. The seasonal contribution repeats each year. The extra 28 pieces in the second August sit outside those two components.
In a real history, we would have to estimate those components. We would also need evidence to explain the extra 28: a promotion record, a customer order or another event. A decomposition chart cannot supply that explanation by itself.
Calendar effects vs demand growth
Even without an unusual order, monthly totals can rise because there were more days to trade.
Consider a separate fictional example. A business sells 100 pieces on each trading day. February has 20 trading days and March has 22.
| Measure | February | March | Change |
|---|---|---|---|
| Monthly sales | 2,000 | 2,200 | +10% |
| Trading days | 20 | 22 | +10% |
| Sales per trading day | 100 | 100 | 0% |
The extra 200 pieces still need supplying. But the daily buying rate has not increased. That distinction changes what you carry into a month with fewer trading days.
FPP3's calendar-adjustment example uses sales per trading day to separate this effect. If Mondays and Saturdays behave differently, a simple daily average may still hide an important change in the calendar mix.
Check sales, orders and stockouts before forecasting
Before reading a pattern, confirm whether the series contains orders, shipments or sales. Keep the item, unit, location and time interval consistent.
A product that ran out of stock may show lower sales precisely when customers wanted more. The stockout forecasting example follows that gap. No trend line can recover missing demand just by looking smoother.
Mark promotions, shutdowns, price changes and large one-off orders alongside the history. Keep the original observations and record any adjustment. Deleting every awkward point makes the chart easier to explain and the next exception harder to understand.
Look across repeated seasons where the history allows it. One summer peak gives you a reason to investigate seasonality; it does not establish a dependable annual pattern. A product launch or changed customer mix can also make older years less comparable.
Use the pattern to choose what to test next
For the fictional August, the next step is to check the unusual order and plan for the recurring summer lift separately from the rising base. Each has a different reason to continue, end or change.
Then test forecasting approaches on periods they have not already seen. Include the lead time and time interval you actually plan against. The MAPE and WAPE guide explains how to compare forecast errors; the bias example checks whether misses repeatedly go in one direction.
A lower error score helps choose between forecasts. Reading the history first helps you understand what those forecasts need to handle, and what changed when they miss.
Sources and example notes
- Hyndman and Athanasopoulos. Time series patterns. Trend, seasonality and cycles.
- Hyndman and Athanasopoulos. Time series decomposition. Components, remainders and calendar adjustments.
Both numerical examples are fictional. The chart adds known components rather than fitting a model. Its seasonal effects have a constant size; other histories may have peaks that grow with the underlying level. In real data, the estimated components and the reasons behind them will be less certain.