Skip to content

Forecasting demonstration · Stats SA retail trade sales

Forecasting South African retail sales: does a model beat last year's pattern?

Two statistical models against two simple baselines, 192 forecasts each, scored only on months they had not seen. Under a rule written down before looking at the data, repeating last year's pattern won, so that is the method we recommend.

The verdict

The simple method won.

  • Last year's patternRecommended0.758
  • Exponential smoothing0.767
  • Seasonal ARIMA0.788
  • Last month repeated1.990

Average error across 192forecasts per method, on months each method hadn't seen. Lower is better.

The question

What is the likely path of real retail sales over the next 12 months, how uncertain is it, and does a model beat simply repeating last year?

It is the question any consumer-facing business faces when it sets a sales plan. “Real” means sales at constant 2019 prices, so the forecast follows volumes rather than price inflation.

The question, the data series and the selection rule were all fixed before any values were analysed.

One official series, chosen by rules set in advance.

The broadest total, unadjusted (seasonality is part of what is forecast), and at constant prices. Exactly one of the release's 32 series met all three.

Data specification

Retail trade sales, total

Publication
Statistics South Africa, Retail trade sales, July 2026 release, published 16 September 2026
Series
Total retail trade sales at constant 2019 prices, actual (not seasonally adjusted) values, R million, monthly
Coverage
January 2002 to July 2026 (295 months)
Refreshed
Rerun on each new Stats SA release

Source: Stats SA. Analysis and results: SA Informatics.

Four methods in the line-up. Two baselines, two statistical models.

A model earns its place only by beating the simple alternatives, so the baselines are in the race from the start.
  • The floor

    Last month repeated

    Repeat the last month. Any method worth using should clear it.

  • The bar to beat

    Last year's pattern

    Repeat the same month last year. Retail sales are strongly seasonal, so this is hard to beat.

  • Candidate

    Exponential smoothing

    Exponential smoothing with a damped trend and monthly seasonality.

  • Candidate

    Seasonal ARIMA

    A statistical model of the series' own trend and seasonal pattern.

The selection rule, fixed in advance.

Recommend a model only ifit beats last year's pattern on months it hasn't seen, and its ranges hold at least 80% of outcomes. Otherwise, recommend last year's pattern.

Any model that failed to fit properly was ruled out before the comparison.

16 forecasts, each scored on a future it hadn't seen.

At 16 points, three months apart from October 2021 to July 2025, each method was fitted only to the data available then and asked for the next 12 months. Those forecasts were scored against what actually happened.

Every method is scored against the same yardstick: how its error compares with simply repeating last year, so methods compare fairly across seasons. The stated uncertainty ranges were checked too.

Sixteen forecasts, each tested on what happened next

Each row is one forecast, made with only the data available at the time. Nov 2021 to Jul 2026 scored.

  • Data the methods were fitted on
  • The 12 months they forecast, then scored
20192020202120222023202420252026Fitted from January 2002 →Oct 2021Forecast made in October 2021: Nov 2021 to Oct 2022Jan 2022Forecast made in January 2022: Feb 2022 to Jan 2023Apr 2022Forecast made in April 2022: May 2022 to Apr 2023Jul 2022Forecast made in July 2022: Aug 2022 to Jul 2023Oct 2022Forecast made in October 2022: Nov 2022 to Oct 2023Jan 2023Forecast made in January 2023: Feb 2023 to Jan 2024Apr 2023Forecast made in April 2023: May 2023 to Apr 2024Jul 2023Forecast made in July 2023: Aug 2023 to Jul 2024Oct 2023Forecast made in October 2023: Nov 2023 to Oct 2024Jan 2024Forecast made in January 2024: Feb 2024 to Jan 2025Apr 2024Forecast made in April 2024: May 2024 to Apr 2025Jul 2024Forecast made in July 2024: Aug 2024 to Jul 2025Oct 2024Forecast made in October 2024: Nov 2024 to Oct 2025Jan 2025Forecast made in January 2025: Feb 2025 to Jan 2026Apr 2025Forecast made in April 2025: May 2025 to Apr 2026Jul 2025Forecast made in July 2025: Aug 2025 to Jul 2026

Result

No statistical model beat the seasonal baseline.

The three seasonal methods finished too close to call. The rule therefore recommends last year's pattern: as accurate, and simpler to run. Repeating last month, which ignores seasonality, was far worse.

Accuracy and range coverage by method
MethodError scoreMAPE80% range95% range
Last year's pattern0.7582.71%95.8%100.0%
Exponential smoothing0.7672.73%95.3%98.4%
Seasonal ARIMA0.7882.90%98.4%99.0%
Last month repeated1.9906.16%95.8%98.4%

Recommended method highlighted. Error score: lower is better. Ranges: the share of actual values inside each method's 80% and 95% prediction intervals.

Forecasts made in July 2025 against what happened next

The most recent of the sixteen tests. Monthly retail trade sales, R billion at constant 2019 prices.

  • Actual
  • Last year's pattern
  • Exponential smoothing
  • Seasonal ARIMA
1001201402024Jul2025Jul2026JulHeld out
Show the data
Held-out forecasts by method and actual values
MonthActualLast year's patternExponential smoothingSeasonal ARIMA
Aug 2025R96.0 bnR94.0 bnR97.1 bnR98.5 bn
Sep 2025R95.9 bnR93.1 bnR97.3 bnR98.1 bn
Oct 2025R98.1 bnR95.3 bnR99.0 bnR99.3 bn
Nov 2025R117.9 bnR113.8 bnR108.2 bnR113.8 bn
Dec 2025R138.8 bnR135.4 bnR136.6 bnR139.2 bn
Jan 2026R97.3 bnR93.2 bnR93.5 bnR95.4 bn
Feb 2026R95.2 bnR93.7 bnR93.6 bnR97.0 bn
Mar 2026R99.4 bnR97.0 bnR98.2 bnR100.8 bn
Apr 2026R96.7 bnR95.6 bnR93.2 bnR93.9 bn
May 2026R100.9 bnR98.8 bnR98.6 bnR101.4 bn
Jun 2026R96.8 bnR95.8 bnR96.6 bnR99.1 bn
Jul 2026R99.4 bnR96.1 bnR95.6 bnR97.5 bn

One month ahead, a model helped. Over a year, it didn't.

Seasonal ARIMA was clearly better one month ahead, with an error score of 0.47 against 0.67for last year's pattern. Beyond the second month, no method was consistently ahead.

A team that only needs next month's figure has a reason to look at it more closely.

Accuracy by how far ahead the forecast reaches

Error score by months ahead, averaged over 16 tests (lower is better).

  • Last year's pattern
  • Exponential smoothing
  • Seasonal ARIMA
0.250.500.751.001.251.50123456789101112
Show the data
Error score by months ahead
Months aheadLast year's patternExponential smoothingSeasonal ARIMALast month repeated
10.670.690.471.60
20.640.550.613.24
31.010.811.170.47
40.700.910.731.95
50.630.650.643.44
60.960.851.350.49
70.720.890.851.88
80.640.630.653.57
90.910.820.890.68
100.750.910.762.08
110.620.670.563.62
120.840.820.760.84

Did the ranges hold?

Share of actual values inside each method's ranges, across 192 test forecasts.

60%70%80%90%100%Last year's pattern80% rangePromised: 80%Last year's pattern: 95.8% of actual values inside the 80% range95.8%95% rangePromised: 95%Last year's pattern: 100.0% of actual values inside the 95% range100.0%Exponential smoothing80% rangePromised: 80%Exponential smoothing: 95.3% of actual values inside the 80% range95.3%95% rangePromised: 95%Exponential smoothing: 98.4% of actual values inside the 95% range98.4%Seasonal ARIMA80% rangePromised: 80%Seasonal ARIMA: 98.4% of actual values inside the 80% range98.4%95% rangePromised: 95%Seasonal ARIMA: 99.0% of actual values inside the 95% range99.0%Last month repeated80% rangePromised: 80%Last month repeated: 95.8% of actual values inside the 80% range95.8%95% rangePromised: 95%Last month repeated: 98.4% of actual values inside the 95% range98.4%
Black tick: the share each range promised to hold. Dot: the share of actual values that landed inside it, across 192 test forecasts. A dot to the right of the tick means the range was wider than it needed to be.

The ranges were wider than they needed to be.

The 95% ranges held 100% of outcomes for the recommended method. The 2020 lockdown inflates the error the ranges are built from.

Planning on these ranges is cautious, not precise, and now you know by how much.

The 12-month forecast. Aug 2026 to Jul 2027.

About R1,232.6 bn over the year, level with the last 12 months, with the seasonal peak in December 2026 at about R138.8 bn.

Retail trade sales: observed, then the recommended method's forecast

R billion at constant 2019 prices, with 80% and 95% prediction ranges. Observed values: Stats SA.

  • Observed (Stats SA)
  • 12-month outlook
  • 95% range
  • 80% range
5075100125150201920202021202220232024202520262027Outlook
Show the data
12-month forecast with prediction intervals
MonthForecast80% range95% range
Aug 2026R96.0 bnR90.0 bn to R102.0 bnR86.8 bn to R105.2 bn
Sep 2026R95.9 bnR89.9 bn to R101.9 bnR86.8 bn to R105.1 bn
Oct 2026R98.1 bnR92.1 bn to R104.1 bnR88.9 bn to R107.3 bn
Nov 2026R117.9 bnR111.9 bn to R123.9 bnR108.7 bn to R127.1 bn
Dec 2026R138.8 bnR132.8 bn to R144.8 bnR129.7 bn to R148.0 bn
Jan 2027R97.3 bnR91.3 bn to R103.3 bnR88.1 bn to R106.5 bn
Feb 2027R95.2 bnR89.2 bn to R101.2 bnR86.0 bn to R104.4 bn
Mar 2027R99.4 bnR93.4 bn to R105.4 bnR90.2 bn to R108.6 bn
Apr 2027R96.7 bnR90.7 bn to R102.7 bnR87.5 bn to R105.9 bn
May 2027R100.9 bnR94.9 bn to R106.9 bnR91.7 bn to R110.1 bn
Jun 2027R96.8 bnR90.8 bn to R102.8 bnR87.7 bn to R106.0 bn
Jul 2027R99.4 bnR93.4 bn to R105.4 bnR90.2 bn to R108.6 bn

Flat or growing? That depends on what you assume.

Will next year come in below the last 12 months (R1,232.6 bn)? Repeating last year says 50/50 by construction, so we also ran the two statistical models to make the trend assumption visible.

Exponential smoothing puts the year slightly ahead (R1,237.5 bn; a 46% chance of a lower year), and further ahead on the last five years alone (29%). Seasonal ARIMA, which carries more trend, puts it about 2.4% ahead (26%; 11% on five years).

How the 12-month outlook depends on the method and the history assumed

Median and 10% to 90% range of the 12-month total, R billion.

1,1901,2201,2501,2801,3101,340Last 12 months observedLast year's patternfull historyLast year's pattern, full history: most likely R1,232.5 bn, eight in ten between R1,211.8 bn and R1,253.1 bn50% chance lowerlast 8 years onlyLast year's pattern, last 8 years only: most likely R1,232.4 bn, eight in ten between R1,199.6 bn and R1,265.3 bn50% chance lowerlast 5 years onlyLast year's pattern, last 5 years only: most likely R1,232.5 bn, eight in ten between R1,220.4 bn and R1,244.7 bn50% chance lowerExponential smoothingfull historyExponential smoothing, full history: most likely R1,237.5 bn, eight in ten between R1,184.1 bn and R1,293.5 bn46% chance lowerlast 8 years onlyExponential smoothing, last 8 years only: most likely R1,238.1 bn, eight in ten between R1,180.5 bn and R1,298.7 bn45% chance lowerlast 5 years onlyExponential smoothing, last 5 years only: most likely R1,242.9 bn, eight in ten between R1,219.1 bn and R1,268.0 bn29% chance lowerSeasonal ARIMAfull historySeasonal ARIMA, full history: most likely R1,261.9 bn, eight in ten between R1,204.6 bn and R1,321.5 bn26% chance lowerlast 8 years onlySeasonal ARIMA, last 8 years only: most likely R1,262.0 bn, eight in ten between R1,189.3 bn and R1,339.5 bn32% chance lowerlast 5 years onlySeasonal ARIMA, last 5 years only: most likely R1,257.9 bn, eight in ten between R1,231.0 bn and R1,284.7 bn11% chance lower
12-month total, R billion at constant 2019 prices. Dot: the most likely total; line: the range it falls in eight times out of ten. “Chance lower”: the chance the next 12 months come in below the last 12.
Show the data
Scenario outcomes by method and history window
Method · historyMedian total10% to 90% rangeChance of a lower year
Last year's pattern · full historyR1,232.5 bnR1,211.8 bn to R1,253.1 bn50%
Last year's pattern · last 8 years onlyR1,232.4 bnR1,199.6 bn to R1,265.3 bn50%
Last year's pattern · last 5 years onlyR1,232.5 bnR1,220.4 bn to R1,244.7 bn50%
Exponential smoothing · full historyR1,237.5 bnR1,184.1 bn to R1,293.5 bn46%
Exponential smoothing · last 8 years onlyR1,238.1 bnR1,180.5 bn to R1,298.7 bn45%
Exponential smoothing · last 5 years onlyR1,242.9 bnR1,219.1 bn to R1,268.0 bn29%
Seasonal ARIMA · full historyR1,261.9 bnR1,204.6 bn to R1,321.5 bn26%
Seasonal ARIMA · last 8 years onlyR1,262.0 bnR1,189.3 bn to R1,339.5 bn32%
Seasonal ARIMA · last 5 years onlyR1,257.9 bnR1,231.0 bn to R1,284.7 bn11%

Chance of a lower year, by an assumed shift in the sales level

Under the recommended method. A shift is a change the model cannot see.

Shift −5%: 100% chance of a lower year100%−5%Shift −4%: 100% chance of a lower year100%−4%Shift −3%: 99% chance of a lower year99%−3%Shift −2%: 94% chance of a lower year94%−2%Shift −1%: 78% chance of a lower year78%−1%Shift None: 50% chance of a lower year50%NoneShift +1%: 23% chance of a lower year23%+1%Shift +2%: 7% chance of a lower year7%+2%Shift +3%: 1% chance of a lower year1%+3%Shift +4%: 0% chance of a lower year0%+4%Shift +5%: 0% chance of a lower year0%+5%
Show the data
Chance of a lower year by assumed level shift
Assumed shiftChance of a lower year
-5%100%
-4%100%
-3%99%
-2%94%
-1%78%
0%50%
+1%23%
+2%7%
+3%1%
+4%0%
+5%0%

A 1% shift moves the answer a lot.

If sales moved 1% lower in a way the model can't see, the chance of a lower year would rise from 50% to 78%, and to 94% at 2% lower. A 1% shift upwards would lower it to 23%. Knowing that before the plan is signed off is the point.

What it means for the decision.

  • For a 12-month plan

    Use last year's pattern as the central estimate. On this evidence, a more complex model does not buy accuracy. Treat its ranges as conservative.

  • If the plan assumes growth

    Record that as an assumption, not a finding. The scenarios show how much it moves the answer.

  • For next month only

    Seasonal ARIMA was clearly better one month ahead, and is worth an evaluation designed for that horizon.

  • On every release

    The pipeline is pinned to a specific Stats SA release and reproduces exactly. Each new release is a fresh run.

Rerun it, get the same answer.

The analysis is pinned to one official release, so a rerun gives exactly the same answer, and the next release slots straight in. The question, the data and the rules for choosing a method were all fixed before any results were seen.
  • Pinned to Stats SA's July 2026 release
  • Reruns end to end from the published data
  • Gives exactly the same results every time
  • Ready to run again when the next release arrives
The Johannesburg skyline at golden hour

Have a forecast you're not sure you can trust?

Tell us what you forecast, how it is done today, and how often you need it. We'll tell you whether a better method is likely to be worth it.