index Introduction
Concepts, Techniques and Tools

Trend & Forecasting Analysis

What will happen next?
Set 06 · Level 6 of the Analytics Ladder

Understanding Patterns in Time — and Projecting Forward

Trend analysis identifies what is changing. Forecasting projects where it is heading.

6Analytics Ladder · Level 06 of 10

Every business operates in time. Revenue grows or declines. Demand fluctuates seasonally. Costs drift upward. Customer behaviour shifts gradually. Trend and forecasting analysis is the discipline of reading these temporal patterns and making informed projections about what comes next.

This is not about predicting the future with certainty — it is about producing calibrated estimates with honest uncertainty ranges, so that planning and decisions are grounded in evidence rather than assumption.

A forecast is not a promise. It is a structured estimate with known assumptions — and the discipline is in communicating both the estimate and its limits.
8
Techniques
4
Components
of a time series
3
Types of
Moving Average
4
Tools Covered
Technique 01

Time Series Decomposition

Separates data into four components: Trend, Seasonality, Cycle, and Residual (noise). Reveals the underlying signal.

Technique 02

Trend Analysis

Identifies the long-term direction (upward, downward, flat) by removing short-term fluctuations from the data.

Technique 03

Simple Moving Average (SMA)

Averages the last N periods to smooth out noise. Lags behind the data — useful for identifying direction, not predicting turns.

Technique 04

Exponential Moving Average (EMA)

Weighted average giving more importance to recent data. Responds faster than SMA to changes. Used in finance and demand planning.

Technique 05

Linear Regression (Time)

Fits a straight line through time-series data to capture the overall trend direction and rate of change.

Technique 06

Exponential Smoothing (Holt-Winters)

Handles both trend and seasonality simultaneously. Three smoothing parameters: level (α), trend (β), seasonality (γ).

Technique 07

Seasonal Decomposition

Separates a time series into seasonal, trend, and residual components. Additive or multiplicative depending on whether seasonal swings grow with the trend.

Technique 08

ARIMA Models

Auto-Regressive Integrated Moving Average. Uses past values and past errors to forecast. The most flexible classical forecasting approach.

The forecasting mindset

No forecast is perfectly accurate. The goal is not to eliminate uncertainty but to quantify and communicate it honestly. Every forecast should include a confidence interval — a range within which the actual value is expected to fall with a stated probability (e.g. 95%). Presenting a single-point forecast without uncertainty is a red flag.

Foundation · Technique 01

Understanding a Time Series

Before forecasting, you must understand what your data is actually made of.

A time series is any sequence of measurements taken at regular intervals over time — daily sales, monthly revenue, weekly website visits, quarterly headcount. Time series data has a structure that other data types do not: the order of observations matters, and earlier observations can influence later ones.

The Four Components of a Time Series

Component 01

Trend (T)

The long-term direction of the data — upward, downward, or flat. Trend is what you see when you "zoom out" and ignore short-term ups and downs.

Business example: Annual revenue growing 8% per year despite quarterly fluctuations.

Component 02

Seasonality (S)

Regular, repeating patterns tied to calendar periods — daily, weekly, monthly, or annual cycles. Always a fixed, known period.

Business example: Retail sales spike every December. Ice cream sales peak every July. Call volume peaks every Monday morning.

Component 03

Cycle (C)

Longer-term fluctuations that are NOT tied to a fixed calendar period. Economic cycles (recession/expansion) typically last several years and are irregular in timing.

Business example: Industry-wide demand increases during economic booms and drops during recessions.

Component 04

Residual / Noise (R)

What remains after trend, seasonality, and cycle are removed. Random variation that cannot be explained by any systematic pattern. A good model minimises residual — but can never eliminate it entirely.

Business example: Unexpected one-off events: a viral social post, a competitor's product recall, a weather event.

Additive vs Multiplicative decomposition

Additive: Seasonal swings stay the same size regardless of the trend level. Revenue = Trend + Seasonality + Residual. Use when seasonal amplitude is constant (e.g. ±$50K every December regardless of overall revenue).

Multiplicative: Seasonal swings grow proportionally as the trend rises. Revenue = Trend × Seasonality × Residual. Use when seasonal amplitude grows with the trend (e.g. 20% uplift every December, so the absolute number grows as revenue grows).

Simple rule: If your seasonal peaks are getting taller over time — multiplicative. If they stay the same height — additive.

Business Example
Retail Chain — Monthly Revenue Decomposition

A retail chain's monthly revenue shows: an upward trend of +5% per year · a clear seasonal spike every November–December (holiday shopping) · a broader cyclical dip during economic downturns · and residual variation from individual store events and promotions.

Decomposing the series allows the analyst to say: "Underlying growth is strong. The Q3 dip is seasonal, not a structural problem. The 2022 downturn reflected the economic cycle — it has reversed."

Techniques 03 & 04

Moving Averages — Smoothing the Signal

Moving averages remove noise so the underlying trend becomes visible.

Raw time series data is often noisy — individual periods fluctuate due to random events, measurement error, or short-term disturbances. A moving average smooths these out by replacing each data point with an average of itself and its neighbours, revealing the underlying pattern.

TypeHow it worksKey propertyBest for
Simple Moving Average (SMA) Average of the last N periods. Each period has equal weight. SMA(3) = (month 1 + month 2 + month 3) / 3. Always lags behind the actual data. The longer the window, the smoother but the more lag. Identifying overall trend direction. Not suitable for forecasting fast-changing series.
Exponential Moving Average (EMA) Weighted average where more recent data gets higher weight. Weight decays exponentially into the past. Responds faster than SMA to recent changes. Still lags, but less so. Demand planning, financial analysis, any series where recent data should matter more.
Weighted Moving Average (WMA) Manual weights assigned to each period. Most recent period gets the highest weight, set by the analyst. Fully customisable — weights must sum to 1. More judgement required than EMA. When domain expertise dictates how much weight recent vs older data should carry.
Choosing the window size (N)

A short window (N=3) reacts quickly to changes but still noisy. A long window (N=12) is smooth but slow to react — it misses turning points. A common rule of thumb: for monthly data, use N=3 for operational monitoring and N=12 (one year) to remove seasonality entirely. Always try multiple window sizes and compare visually.

Business Example
Call Centre — Weekly Call Volume

A call centre manager plots weekly call volume. The raw data looks chaotic — spikes from promotions, dips from bank holidays. A 4-week SMA smooths this to show a clear upward trend. A 12-week SMA shows even more clearly that volume has grown 22% over the last year. The noise was hiding signal the manager needed to justify a staffing increase.

How to calculate SMA manually

MonthActual Sales ($K)SMA-3 ($K)SMA-3 Formula
Jan120
Feb135
Mar128127.7(120+135+128)/3
Apr142135.0(135+128+142)/3
May156142.0(128+142+156)/3
Jun149149.0(142+156+149)/3

Note: SMA-3 cannot be calculated for the first two periods. The first valid SMA appears at period 3.

Techniques 05 & 06 & 07

Regression, Holt-Winters & Seasonal Decomposition

Three techniques for capturing trend and seasonality — from simple to sophisticated.

Linear Regression as a Trend Line

The simplest forecasting approach: fit a straight line through time-series data using linear regression. Time (period number) is the predictor (X), and the outcome variable is Y. The equation Y = a + b×t gives the trend — where b is the rate of change per period.

Business Example
Trend Line — Annual Revenue

Annual revenue over 5 years: $1.2M, $1.35M, $1.48M, $1.62M, $1.79M. A linear trend line gives: Revenue = $1.06M + $0.148M × Year. This means revenue grows approximately $148K per year. The forecast for Year 6: $1.06M + (6 × $148K) = $1.95M. If the relationship were non-linear, a polynomial regression or log transformation would be more appropriate.

Exponential Smoothing — Holt-Winters Method

Holt-Winters handles both trend and seasonality with three smoothing equations, each controlled by a parameter between 0 and 1:

ParameterControlsLow value (close to 0)High value (close to 1)
α (alpha)Level — how quickly the model adapts to level changesModel relies heavily on historical averageModel reacts quickly to recent values
β (beta)Trend — how quickly the trend estimate updatesStable, slow-changing trend estimateTrend adapts rapidly (can overfit)
γ (gamma)Seasonality — how quickly seasonal factors updateSeasonal pattern assumed stableSeasonal pattern adapts each cycle
When to use Holt-Winters

Use Holt-Winters when your data has both a clear trend and a repeating seasonal pattern. It outperforms simple regression when seasonality is strong. In Excel it is implemented as =FORECAST.ETS(). In SPSS it is the default "Expert Modeler" selection for seasonal series.

Seasonal Decomposition

Rather than forecasting directly, seasonal decomposition separates the series into components so each can be analysed and modelled independently. The process:

01
Estimate the Trend
Apply a centred moving average (typically with window = seasonal period) to extract the trend component T.
02
Remove the Trend
Additive: S + R = Y − T. Multiplicative: S × R = Y / T. What remains is seasonal + residual.
03
Estimate Seasonality
Average the detrended values for each seasonal position (e.g., all Januaries, all Mondays). Adjust to sum to zero (additive) or sum to number of seasons (multiplicative).
04
Extract the Residual
R = Y − T − S (additive). Whatever remains is noise. Analyse it — if the residual has a pattern, the model is incomplete.
Technique 08

ARIMA — Auto-Regressive Integrated Moving Average

The most flexible classical forecasting method. Handles trend, autocorrelation, and irregular patterns.

ARIMA is the gold standard for classical time series forecasting when data does not fit simpler models. It combines three components — Auto-Regression (AR), Integration (I), and Moving Average (MA) — into a single flexible framework. ARIMA is specified as ARIMA(p, d, q):

ParameterMeaningWhat it capturesExample value
p (AR order)Auto-Regressive — uses past values to predict the futureMomentum: if sales were high last month, they tend to be high this monthp=1: uses 1 lag; p=2: uses 2 lags
d (Integration order)How many times to difference the series to make it stationaryRemoves the trend. Most business data needs d=1 (first difference = change from period to period)d=0: already stationary; d=1: first difference
q (MA order)Moving Average — uses past forecast errors to correct future predictionsCorrects for systematic over- or under-prediction based on past errorsq=1: uses 1 past error; q=2: uses 2
Do not worry about selecting p, d, q manually

In practice, software selects ARIMA parameters automatically. In Python: from statsmodels.tsa.arima.model import ARIMA or use auto_arima from the pmdarima package. In SPSS: the Expert Modeler selects ARIMA or Exponential Smoothing automatically based on the data. Your job is to understand what the model is doing — not to calculate parameters by hand.

ARIMA vs Exponential Smoothing — choosing the right approach

SituationRecommended approachWhy
Clear trend + strong seasonality, stable patternHolt-Winters (Exponential Smoothing)Purpose-built for this structure, easier to explain to stakeholders
Irregular patterns, complex autocorrelationARIMAMore flexible, handles autocorrelation that ES cannot
Multiple seasonalities (weekly + annual)Prophet (Python/R)Facebook's Prophet handles multiple seasonal periods naturally
Short series (<24 observations)Linear regression trend lineComplex models need more data to estimate parameters reliably
Quick operational forecast for a non-technical audienceExcel FORECAST.ETS or Power BI forecastFast, visual, easy to explain
⚠ The stationarity requirement

ARIMA requires the time series to be stationary — meaning its statistical properties (mean, variance) do not change over time. Most business data is non-stationary (it trends upward or downward). The "I" (Integration) component handles this by differencing: instead of modelling raw values, you model the changes from period to period. SPSS and Python auto-detect whether differencing is needed.

Tool Guide 🟢 Start Here

Excel & Power BI

Trendlines, FORECAST functions, and one-click forecasting — no coding required.

🟢 Start HereExcel — Trendline on a Chart
01
Create a line chart
Select your time-series data (date column + value column) → Insert → Charts → Line → Line with Markers
02
Add a trendline
Click on the data line in the chart → Right-click → Add Trendline → choose type: Linear for a straight trend, Exponential for growth that accelerates, Moving Average for smoothing (set period).
03
Show equation and R²
In the Format Trendline pane on the right, tick Display Equation on chart and Display R-squared value on chart. R² near 1 = the trendline fits well. R² near 0 = poor fit — try a different trendline type.
04
Extend the forecast
In the Format Trendline pane, under Forecast Forward, enter the number of periods to project (e.g. 3 for 3 months ahead). Excel draws the projected trendline — note this is deterministic (no confidence interval).
🟢 Start HereExcel — FORECAST Functions
FunctionUse whenSyntax
FORECAST.LINEARSimple linear trend, no seasonality=FORECAST.LINEAR(x, known_y's, known_x's)
FORECAST.ETSSeasonal data — handles Holt-Winters automatically=FORECAST.ETS(target_date, values, timeline)
FORECAST.ETS.CONFINTConfidence interval for FORECAST.ETS=FORECAST.ETS.CONFINT(target_date, values, timeline, confidence_level)
FORECAST.ETS.SEASONALITYDetect the seasonal period automatically=FORECAST.ETS.SEASONALITY(values, timeline)
Best practice
Always pair FORECAST.ETS with FORECAST.ETS.CONFINT. Present the forecast as a range: "Forecast: $1.85M ± $0.12M (95% confidence)" rather than a single number. This is honest and more defensible.
🟢 Start HerePower BI — One-Click Forecast
01
Create a line chart
Drag a date field to the X-axis and a numeric measure to the Y-axis → ensure chart type is Line Chart (not clustered bar).
02
Open Analytics pane
Click the chart → in the right-side panel, click the Analytics icon (magnifying glass with a trend line). Scroll to Forecast → click Add.
03
Configure the forecast
Set: Forecast length (e.g. 3 months) · Confidence interval (95% recommended) · Seasonality (Auto, or specify periods manually). Power BI uses Holt-Winters automatically.
04
Read the output
Power BI draws the forecast line in a different colour with a shaded confidence interval band. The width of the band shows uncertainty — wider means less confident. Tell stakeholders: the shaded area is the range of plausible outcomes, not a guaranteed range.
What to tell stakeholders
"Based on historical trend and seasonality, forecast for Q3 is $2.1M–$2.4M (95% confidence). The forecast assumes the current growth pattern continues with no major market disruptions."
Tool Guide 🟡 Go Deeper

IBM SPSS Statistics

Professional-grade time series analysis with automated model selection and full diagnostic output.

SPSS Time Series module

SPSS's time series procedures are in Analyze → Forecasting. The Expert Modeler automatically selects the best model (Exponential Smoothing or ARIMA) for your data. This removes the technical burden of parameter selection while still producing rigorous, publication-quality output.

🟡 Go DeeperSequence Charts (Visualise First)
01
Define the date variable
Before any analysis: Data → Define Dates → select your date periodicity (Years, Quarters, Months, Weeks, Days) → enter starting date → OK. This tells SPSS your data is a time series.
02
Plot the sequence
Analyze → Forecasting → Sequence Charts → move your variable to Variables → OK. This gives you a time plot with optional moving average overlay.
03
Look for: trend, seasonality, outliers
Before modelling, visually assess: Is there a clear trend? Are there repeating seasonal spikes? Are there obvious outliers that need investigation before modelling?
🟡 Go DeeperExpert Modeler — Automated Forecasting
01
Open Create Models
Analyze → Forecasting → Create Models
02
Add your variable
Move your time series variable to the Dependent Variables box. Leave Method as Expert Modeler — this automatically tests multiple models and selects the best one.
03
Set forecast period
Click the Criteria tab → under Model Type, the Expert Modeler is already selected. Click the Save tab → tick Predicted Values and Lower and Upper Confidence Limits.
04
Set forecast horizon
Click Options tab → set Forecast Period: First case after end of estimation period through a specified date → enter your forecast end date → OK.
05
Read the output
SPSS outputs: Model type selected (e.g. "Simple Exponential Smoothing") · Fit statistics (R², RMSE, MAPE, MAE) · Parameter estimates · Forecast plot with confidence interval · Residual ACF plot (check for remaining pattern in residuals).
Key fit statistics to check
MAPE (Mean Absolute Percentage Error) — easy to interpret: "model is off by X% on average" · RMSE (Root Mean Squared Error) — penalises large errors more · R² — proportion of variance explained by the model
Tool Guide 🔵 Full Power

Python — statsmodels, Prophet & more

Complete control over every forecasting technique — from moving averages to ARIMA to Facebook Prophet.

🔵 Full PowerMoving Averages & Decomposition
# Install once: pip install statsmodels pandas matplotlib import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.seasonal import seasonal_decompose # Load monthly data df = pd.read_csv('monthly_sales.csv', parse_dates=['date'], index_col='date') # Simple Moving Average (3-month and 12-month) df['SMA_3'] = df['sales'].rolling(window=3).mean() df['SMA_12'] = df['sales'].rolling(window=12).mean() # Exponential Moving Average df['EMA_3'] = df['sales'].ewm(span=3, adjust=False).mean() # Plot all three df[['sales','SMA_3','SMA_12','EMA_3']].plot(figsize=(12,5)) plt.title('Sales with Moving Averages') plt.show() # Seasonal decomposition (additive) result = seasonal_decompose(df['sales'], model='additive', period=12) result.plot() plt.show() # Shows: Observed / Trend / Seasonal / Residual
🔵 Full PowerARIMA Forecasting
# Option 1: Manual ARIMA from statsmodels.tsa.arima.model import ARIMA model = ARIMA(df['sales'], order=(1,1,1)) # p=1, d=1, q=1 result = model.fit() print(result.summary()) # Forecast 6 months ahead with confidence intervals forecast = result.get_forecast(steps=6) forecast_df = forecast.summary_frame(alpha=0.05) # 95% CI print(forecast_df[['mean','mean_ci_lower','mean_ci_upper']]) # Option 2: Auto-ARIMA (recommended — selects p,d,q automatically) # pip install pmdarima from pmdarima import auto_arima auto_model = auto_arima(df['sales'], seasonal=True, m=12, stepwise=True, trace=True) print(auto_model.summary()) forecast_vals = auto_model.predict(n_periods=6, return_conf_int=True)
🔵 Full PowerProphet — Easiest Advanced Forecasting

Facebook Prophet handles multiple seasonalities, holidays, and trend changes automatically. It requires minimal configuration and produces excellent results for business data.

# pip install prophet from prophet import Prophet # Prophet requires columns named 'ds' (date) and 'y' (value) df_prophet = df.reset_index().rename(columns={'date':'ds', 'sales':'y'}) m = Prophet( yearly_seasonality=True, weekly_seasonality=False, daily_seasonality=False, interval_width=0.95 # 95% confidence interval ) m.fit(df_prophet) # Create future dataframe and forecast future = m.make_future_dataframe(periods=12, freq='MS') # 12 months ahead forecast = m.predict(future) # Plot m.plot(forecast) m.plot_components(forecast) # Shows trend + seasonality separately plt.show()
Interactive Practice

Three Simulators

Build intuition for moving averages, trend lines, and forecasting accuracy — before applying them in real tools.

Simulator 1 · Moving Average Explorer

Adjust the window size and see how the moving average smooths the same sales data differently. Notice how a larger window creates more smoothing but more lag.

Lag (periods)
Smoothness
Type
Adjust the window size and type to see how the moving average changes.

Simulator 2 · Time Series Component Identifier

Four different time series patterns are shown. Identify which components are present (Trend, Seasonality, Cycle, Residual) in each.

Pattern 1 of 4
Tick which components you can see in this pattern, then check.

Simulator 3 · Forecast Accuracy Judge

Three forecasting methods are applied to the same dataset. Actuals are revealed one period at a time. Judge which method is performing best.

Click "Reveal Next Period" to show actuals and compare forecasting methods.
Best Practice

Common Mistakes

Forecasting mistakes are costly — they lead to over-stocking, under-staffing, and missed opportunities.

Mistake 01

Presenting a single-point forecast without confidence intervals

"Revenue will be $2.4M next quarter" sounds confident but is always wrong to some degree. A range — "$2.1M–$2.7M with 95% confidence" — is honest, defensible, and more useful for planning.

Mistake 02

Confusing seasonality with trend

If sales always drop in Q3, that is seasonality — not a decline. Reporting "Q3 revenue fell 18%" without noting it always falls in Q3 is misleading. Always decompose before concluding.

Mistake 03

Choosing window size without justification

A 3-period SMA vs a 12-period SMA tell completely different stories on the same data. Always explain why you chose that window and show sensitivity — what if the window were different?

Mistake 04

Extrapolating far beyond the data range

A 5-year revenue trend fitted to 3 years of data is unreliable. The further you forecast beyond your historical window, the wider your confidence interval should be — and the more honestly you should communicate uncertainty.

Mistake 05

Not re-forecasting when assumptions change

A forecast made in January with January's assumptions becomes stale as the year progresses. Forecasts must be living documents — updated as new data arrives and as structural conditions change.

Mistake 06

Using the wrong model for the data structure

Applying linear regression to data with strong seasonality will produce systematic errors at every seasonal peak and trough. Always plot the data first and choose a model that matches the patterns you see.

Set 03 · Key Takeaway
A forecast is only as honest as its confidence interval. Always present the range, not just the number.
Assessment

Knowledge Check

Five questions across all techniques in Set 03.

Q1 — Retail sales spike every November–December without fail and have done so for 10 years. The spike is getting larger as overall revenue grows. Which time series component best describes this — and which decomposition model is appropriate?
A
Trend — additive decomposition
B
Cycle — multiplicative decomposition
C
Seasonality — multiplicative decomposition (because the spike grows proportionally with the trend)
D
Seasonality — additive decomposition
Fixed calendar-period repeating patterns = seasonality (not cycle, which has variable timing). Because the spike grows in absolute size as overall revenue grows (proportional rather than fixed), the relationship is multiplicative — use multiplicative decomposition. If the spike were always ±$500K regardless of revenue level, it would be additive.
Q2 — A 3-month SMA and a 12-month SMA are both applied to monthly sales data. A manager wants to detect a new downward trend as quickly as possible. Which should they use, and why?
A
3-month SMA — shorter window reacts faster to recent changes, with less lag
B
12-month SMA — smoother line makes trends easier to see
C
12-month SMA — removes seasonality so the trend is clearer
D
Neither — use the raw data directly for fastest response
The shorter the window, the faster the SMA reacts to changes (less lag) — but the noisier it is. The 3-month SMA will detect a new downward trend earlier than the 12-month. The 12-month SMA is better for seeing the broad multi-year trend and for removing annual seasonality — but it lags significantly. Raw data is the fastest but noisiest option.
Q3 — In ARIMA(2,1,1), what does the "d=1" parameter mean?
A
The model uses 1 past observation to make predictions
B
The model uses 1 past forecast error
C
The data was differenced once (first difference) to remove the trend and achieve stationarity
D
The seasonal period is 1
In ARIMA(p,d,q): p = number of auto-regressive lags (uses 2 past values), d = number of times differenced (d=1 means the series was differenced once to remove the trend and make it stationary — the model works on changes from period to period, not raw levels), q = number of moving average terms (uses 1 past error). d=0 would mean the series was already stationary.
Q4 — Which Excel function should you use to forecast monthly sales for the next 6 months when your data has a clear annual seasonal pattern?
A
=FORECAST.LINEAR() — it handles all forecasting cases
B
=FORECAST.ETS() — specifically designed for seasonal time series using exponential smoothing
C
=AVERAGE() with the last 6 months
D
=TREND() — handles seasonality and trend together
FORECAST.ETS (Exponential Triple Smoothing) handles seasonal data automatically — it implements Holt-Winters under the hood. FORECAST.LINEAR fits a straight line ignoring seasonality (poor for seasonal data). AVERAGE ignores the time structure entirely. TREND is for linear extrapolation without seasonality. Always pair FORECAST.ETS with FORECAST.ETS.CONFINT to get the confidence interval.
Q5 — A manager presents a quarterly revenue forecast to the board: "Revenue will be exactly $4.2M in Q3." What is the most important missing element?
A
The methodology used to produce the forecast
B
A comparison to last year's Q3
C
A confidence interval — a single-point forecast without a range implies false precision and hides uncertainty the board needs to plan around
D
The historical data the forecast is based on
A point forecast without a confidence interval is analytically dishonest — it implies the model is more precise than it is. The board should receive: "Forecast $4.2M (range: $3.8M–$4.6M, 95% confidence)." This gives them what they need to plan inventory, staffing, and capital allocation under uncertainty — rather than treating $4.2M as a guarantee.