Most finance teams build it the same way: the same week last year, times a growth rate. On two and a half years of a real chain's sales, that rule misses the weekly total by 10.09% on average, across 49 test weeks.
Checking a forecast once tells you almost nothing, so this one was checked 49 times. The method sees history up to a point, forecasts the next six weeks, then the real numbers arrive and the error is measured. Everything rolls forward a week and repeats. Eleven methods went through that, from a spreadsheet rule to a daily machine learning (gradient boosting) model. The biggest gain came from a broken comparison.
Most forecast comparisons are decided by the test. A single test window flatters whichever method suits that stretch of calendar. Every method is evaluated on the same rolling windows. Method settings and the four-member combination were chosen using these same 49 weeks, so this is a development comparison. A fresh holdout or prospective run is still needed.
The method learns from history up to a point in time, forecasts six weeks, and only then sees the real numbers. Then everything moves forward one week and repeats.
train ≤ t · forecast t+1 … t+6 · score · t = t+1
Days are added up into weeks ending Sunday. A week counts only if all seven days are present, which leaves 133 complete weeks and 867 shops with a full history. The 248 left out have gaps, all 180 Bavarian shops among them, so Bavaria is absent from every number here.
133 complete weeks × 867 complete shops
49 target weeks, from 24 August 2014 to 26 July 2015, four of them in December. Leaving Christmas out would flatter every method in the test.
254,898 forecasts per method
Absolute error summed over every shop and week, divided by sales summed the same way. Predict 100, sell 93, that is 7.5% wrong (7 on 93). Measured per shop, and on the chain total, which is the number that reaches the board, on the 867 of 1,115 shops with a complete history (81% of sales).
error = Σ |forecast − actual| ÷ Σ actual
The budget rule's errors alternate: plus 32%, minus 26%, plus 35%, minus 26%, week after week. That rhythm is a promotion cycle, and it is the most valuable finding in the study.
The alternating pattern breaks 13 times across two and a half years, with two promotion weeks back to back or two quiet weeks back to back. Each break flips the rhythm from that point on.
So "the same week last year" lands on the same kind of week only 70% of the time. When it matches, the miss is 4.2%. When it has flipped, 29.5%.
Stop comparing to the calendar week. Compare to the nearest week around this time last year that had the same promotion status. It uses the promotion plan and the sales history a company already has.
It moves the comparison week on 16 of the 49 target weeks, and promotion status then matches on 49 of 49. Chain error falls from 10.09% to 4.19%.
The same forecast scores differently depending on what you add up. The gap decides which method you should pick.
Forecast three shops at 100. They come in at 106, 94 and 100. Per shop you were 4% wrong. On the total you were right. The mistakes cancelled.
With 867 real shops that happens less perfectly, but it happens: 5.45% per shop becomes 3.29% on the chain.
The Fourier regression is better per shop than the corrected rule, 7.0% against 7.4%, and worse on the chain, 4.9% against 4.2%. Its errors lean the same way across shops, so they add up instead of cancelling.
Choose the method on the number you report. The budget is a chain total.
The winning method's misses on the chain total, week by week, and by distance ahead.
Four things were tried properly and did not earn a place, and two diagnostic models show what they fail to explain.
The standard implementation wants two full yearly cycles and 78 training weeks hold one and a half. A workaround, the shop's own seasonal index and smoothing on the adjusted series, ran and scored 11.99% on the chain, worse than the budget rule. Other seasonal fits may do better on short history; this one did not.
10.47% on the chain, and 23.4% in December. It has no way to know about promotions or holidays, so it smooths straight through the weeks that decide whether anyone trusts a forecast. Its fit fails on 1.33% of shop-weeks, all in December 2014; it is scored on the rows it produced, and the combination takes the median of the three members that fitted there.
A lost opening day costs 89% of a day, because a public holiday moves demand rather than deleting it. Applied bluntly it repairs three weeks and breaks three others.
Taking the chain total from the rule and the shop split from the model helped while the rule was broken. Once the rule was fixed a plain median beat it, 3.29% against 4.06%.
Everything above is backtesting: scoring a method against weeks that already happened. This is the part a finance team wants, and where the assumptions have to be named.
The backtest above reaches six weeks out. So the same thirteen-week procedure was run at 42 past origins and each quarter scored: pooled error 1.11% on the quarter total, against 1.56% for the budget rule, and 3.4% at seven to thirteen weeks out against 3.7% at one to six. Those numbers use the real calendar of the weeks being forecast. Re-run under this forecast's own assumption that the promotion cycle continues, the same procedure misses the quarter by 2.22% with only the promotion plan assumed and 2.09% with the whole calendar assumed, against 1.56% for the budget rule. With the whole calendar assumed, weekly chain error is 15.66% versus 10.26% for the rule. The actual promotion plan is needed before relying on this method.
10th to 90th percentile of those past misses, applied here: EUR 463m to EUR 484m, or +0.3% to +5.0% against last year, using the assumed-calendar backtest. The 42 windows overlap and span about one year. This describes historical misses, not a calibrated 80% prediction interval.
The forecast assumes the fortnightly promotion cycle continues from the last week in the file. A real company reads its own promotion plan instead. In none of the 42 past windows did the cycle run unbroken for thirteen weeks, and on average the assumed plan was wrong on 7 weeks of 13, so this is a scenario, not a base case.
Flipped from the first week the answer moves by EUR 9.1m, or 2.0%, to EUR 455m. The two rows show how much the answer turns on promotion timing; they do not bound it.
The limits.
One and a half yearly cycles of training is enough to find the promotion problem and to rank methods, and not enough for the standard seasonal smoothing or to separate a trend from a two-year wave. The study says which conclusions depend on that and which do not.
It says what the number is likely to be if nothing is done differently. It cannot price a decision, and it cannot tell you whether a promotion week was worth running. That is the promotion study.
The forward forecast extends the observed fortnightly cycle, because the real plan is not in a public file. A client supplies theirs and that assumption disappears. It is shown with the cycle flipped, so the reader sees what it is worth.
Start with the question. If your export cannot support the study you have in mind, you will know on the first call, and in writing within two days.