For 74 games, Ken Jennings reigned supreme on Jeopardy! But in his 75th game, his legendary streak came to an end because he missed a deceptive question about seasonality. The answer was “Most of this firm's 70,000 seasonal white-collar employees work only four months a year."
Ken, known for his razor-sharp recall, couldn't make use use of the white-collar clue to deduce the right response. He guessed "What is FedEx." The correct company? H&R Block.
Ken's miss reminds us that the word seasonal doesn’t always mean the holiday season. Tax season, wedding season, back-to-school season—all of these illustrate how seasonality can show up in unexpected ways. Understanding these patterns is vital for forecasting, planning, and preparing for the ebbs and flows that are baked into almost every business.
Seasonality: More Than Holiday Rush
Seasonality refers to recurring patterns in demand that happen at specific times of the year.
Mild seasonality: Steady-eddy products like paper towels may see slight spikes (e.g., picnic season), but demand is steady most of the year.
Sharp seasonality: In August, stores are flooded with parents buying back-to-school supplies: notebooks, backpacks, and crayons for the new school year.
Seasonality is the general shape of your demand.
Calculating Seasonality: Three Approaches
Let’s explore three ways to measure seasonality using monthly shipment data for a single product.
1. Excel: Seasonal Weights
Using Excel, we calculate seasonality by assigning weights to each month to represent its contribution to annual demand.
Steps:
Gather three years of monthly (or weekly!) shipment data.
Calculate the average shipment for each month across the three years.
Divide each month’s average by the overall monthly average to get the seasonal index (weight).
Here’s an example:
The seasonal index shows how each month compares to the average. For instance, December’s index of 150% means it’s 50% higher than the monthly average, while February’s 64% indicates it’s below. The index is a weight; months that weigh more are more important.
2. Python: Programmatic Seasonality Detection
There are several approaches to seasonality in Python. Libraries such as STL or Prophet provide a way to calculate seasonality, or you can roll your own:
import pandas as pd
import numpy as np
row = [
100, 90, 120, 130, 150, 160, 140, 130, 110, 120, 180, 200,
110, 85, 130, 140, 160, 150, 130, 120, 105, 125, 190, 210,
120, 95, 140, 150, 170, 155, 135, 125, 115, 130, 200, 220
]
ts = pd.Series(row, index=pd.date_range(start="2021-01-01", periods=len(row), freq="ME"))
overall_mean = ts.mean()
deseasonalized_data = ts - overall_mean
deseasonalized_df = deseasonalized_data.to_frame(name="deseasonalized")
deseasonalized_df["month"] = deseasonalized_df.index.month
initial_seasonal_indices = deseasonalized_df.groupby("month")["deseasonalized"].mean()
shifted_indices = initial_seasonal_indices - initial_seasonal_indices.min() + 1
normalized_indices = shifted_indices / shifted_indices.mean()
print("\nNormalized Seasonal Indices:")
print(normalized_indices)
If you run this code you'll see the shape is generally the same as Excel, but slightly different. There's more than one way to look at seasonality. If you use Prophet in Python for instance, you'll see that the seasonality output is the amount of variation explained by season, as opposed to trend or noise.
3. Planning Tools: Automatic Seasonality Detection
All demand planning systems will use seasonality in their algorithms. Many leading tools also offer the seasonal results directly to planners for analysis.
Seasonality and Preparation: Why It Matters
Once you’ve calculated seasonality, the real value lies in applying it. One use case is Rough Cut Capacity Planning. RCCP evaluates whether your current capacity can handle forecasted demand. For instance, if your production line has a capacity of 5,000 units per month but forecasts show November demand at 18,000 units, RCCP flags the shortfall. You can:
Pre-build inventory in lower-demand months.
Outsource production during peaks.
Add shifts.
Add fixed capacity (long term).
Season's Greetings: A Case Study
A gravy manufacturer identified November as its key seasonal month, with a seasonal index of 3.0 (much higher than the monthly average). RCCP revealed the plant’s capacity would be exceeded by 60% in October. By pre-building gravy packets in July, August, and September, they avoided overtime costs and ensured shelves were stocked for Thanksgiving.
Seasonality in Inventory Targets
Seasonality is a reason to use days forward coverage, or a similar way of converting your inventory units to days. As you move into or out of high-seasonal-weight months, your days forward coverage will adjust automatically to show you what your inventory position really is, answering are you ready for the season? Note, you need a true days forward coverage calculation for this to work, not an approximation.
Embrace the Season
Whether it’s tax season, flu season, or holiday season, understanding and planning for seasonal patterns transforms challenges into opportunities. At IBP2, we can help you incorporate seasonality into your planning. Don't want to calculate the seasonal weights yourself, or group like items into seasonal profiles? We can do that too, making sure you always have the right answer. Or question, if you're using Jeopardy! format.
Comentarios