Drugstore chain, 1,115 shops· 2026· Forecast audit, time series

Can you trust the number in the budget?

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.

The study's cover: Forecasting the budget. Most budgets start from last year's week, times a growth rate. On a real chain, that rule misses the total by 10%.
The full deck, 15 slides Eleven methods, what failed and why, and a thirteen-week forecast past the end of the data Open PDF
The story

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.

Chapter 01

The test comes before the methods

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.

01

No method sees data past its forecast date

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
02

Weeks, because finance plans in weeks

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
03

December is in the test, on purpose

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
04

Scored two ways

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
Within the six weeks tested, distance barely matters. The same-week-last-year rule is 10.10% wrong one week ahead and 10.10% wrong six weeks ahead; the winning method 3.33% and 3.22%. Thirteen weeks out is tested separately, in chapter 05.
Chapter 02

The comparison week is often the wrong week

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 eight weeks the budget rule got most wrong, before and after correction. Most improve; residual misses include plus 7.3% and minus 10.3%.
The eight weeks it got most wrong, before and after. 25 January 2015 goes from +39.9% to +3.9%. 14 September 2014 from +35.2% to +0.3%. 24 August 2014 from −28.0% to +2.6%. Large misses remain: +7.3% on 21 September and −10.3% on 31 August 2014. Growth and calendar adjustments apply to all weeks.

The chain promotes every second week, mostly.

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%.

Nobody notices. The annual total still comes out about right, so the error hides inside the year and only shows up when someone is asked to explain a single bad week.

The fix uses data you already have

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%.

Then the rest of the calendar. School and public holidays get the same treatment, per shop, because German states run different dates. On the 23 weeks whose calendar differs from the comparison week, the miss falls again, from 3.99% to 3.76%, with the growth adjustment held fixed.
Chapter 03

Eleven methods, and two numbers for each

The same forecast scores differently depending on what you add up. The gap decides which method you should pick.

The scoreboard: error on the chain total by method, from the budget rule at 10.09% down to all four combined at 3.29%.
The best result came from combining four methods: the median of the corrected rule, a Fourier regression, Theta and a daily gradient boosting model, taken shop by shop and week by week. It scores better on these development windows. The choice of members and settings used the same weeks; this is not an independent test of the selected combination.
Forecast against actual on the chain total, month by month across the 49 test weeks, with the difference below: 11 of 12 months within 3%.
The winning method, month by month. A monthly summary of the rolling backtest, not a forecast issued on one date: each week's forecast is the average of the six made for it, one to six weeks ahead, then the 49 weeks are grouped by the month of their Sunday (August 2014 has two). 11 of 12 months land within 3%; the largest miss is January 2015, at +7.8%. Week by week the miss is 3.29%, the scoreboard number.

Why the total beats the parts

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.

On this chain the summed budget beat almost every shop line inside it. 3.29% against a median shop of 5.3%, and only 3 of 867 shops did better, because the shop errors mostly point different ways. Worth saying to anyone held to a shop-level target.

Picking the wrong one picks the wrong method

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.

And the machine learning model is the fourth thing to build. The corrected spreadsheet rule reaches 4.16% on its own, and a finance team can read it, argue with it and sign it.
Chapter 04

Technical note: what the errors look like

The winning method's misses on the chain total, week by week, and by distance ahead.

Technical note: the distribution of weekly errors on the chain total, and the error by weeks ahead, flat from one to six.
Bias +0.25%, spread 4.2 points, 82% of weeks within ±5%. Flat across the six horizons tested: 3.33% one week out, 3.22% six weeks out. Week-to-week correlation of the errors is low (+0.15 on 48 pairs), which is not proof they are independent. Against the same-week-last-year rule on the same weeks the method's mean absolute error is 0.32 of the rule's; on the textbook MASE scale, against the rule's error over the 78 training weeks, 0.24.
Per shop. Median 5.3%, 10th to 90th percentile 4.2% to 7.1%. Shop-level bias is small (median −0.2%, 4% of shops beyond ±5%) and does not depend on shop size. Error = |forecast − actual| ÷ actual per week, each week's forecast the average of its six; the scoreboard's 3.29% pools all 294 week-horizon pairs (3.24% on the 49 averaged weeks). Bias = the mean signed error. The 0.32 is a relative error against the seasonal naive on the same test weeks, not the textbook MASE.
Chapter 05

What failed, and what the diagnostics show

Four things were tried properly and did not earn a place, and two diagnostic models show what they fail to explain.

Seasonal smoothing had to be worked around

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.

Theta struggled with promotions and holidays

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.

The trading-day correction over-corrects

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.

The chain-total trick stopped helping

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%.

The budget rule at 12.62% per shop, the best method at 5.45%, and two forecasters given future information at 6.23% and 4.25%.
Then two forecasters given information nobody has in advance. Told the true chain total for the week, each shop is still 6.23% wrong: worse than the method, because it gives every shop a fixed share of the chain, with no trend and no calendar of its own. Also told the shop's own future drift, still 4.25%. Their remaining error shows what these two diagnostics fail to explain, not a floor any method must respect.
What the second diagnostic still misses is local. 99% of its variance is shop-specific rather than a chain-wide week effect, measured after a third diagnostic that also fits opening and promotion days. Shopper counts vary more week to week than basket size, 7.6 points against 3.7, which is a property of those two series and not a split of the error. Weather, roadworks or a local event would fit; none was measured here.
Chapter 06

Then forecast weeks that have not happened

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 forecast for 27 July to 25 October 2015, month by month after twelve months of actuals, with the spread of the same procedure's past misses on each block and last year's months in gold, totalling EUR 464m.
EUR 464m for 27 July to 25 October 2015, +0.6% on the same thirteen weeks last year, on the 867 shops with a complete history: five weeks to 30 August 186, September 141, four weeks to 25 October 137. Shown month by month as the average week, with the 10th to 90th percentile of what the same thirteen-week procedure missed on each block across 42 past origins with the calendar assumed, and last year's months in gold.

The spread is measured, at this horizon

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.

Checked at the horizon it is used for. A spread measured against real misses of the same procedure is worth more than a single number, and its limits are stated.

The one assumption that matters

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.

Holidays and opening days for the forecast weeks are copied from the same week one year earlier, per shop. The one public holiday the file flags in the window, 3 October, falls in the same week both years; school holidays differ by state and are assumed, and the rule's fitted weight on a school-holiday day is -0.6%, so the base number barely depends on them. The four-member scenario totals EUR 464m. The uncertainty depends on the assumed promotion calendar.
Chapter 07

What this cannot tell you

The limits.

Two and a half years is short

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.

A forecast is not a plan

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 promotion calendar was mine to assume

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.

To run this on your own data

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.

Send one email

  • No system access, no IT project, one export
  • Signed engagement letter and data processing agreement
  • France & Hong Kong, in English or French
kevin.larretche@squ.solutions How the first conversation works

What to put in the first email

The question. What you would do differently if you knew the answer.
The data. Roughly how many products, stores or channels, how far back, and whether a promotion calendar exists anywhere.
The timing. When a decision has to be made.