Five years of till receipts from ten shops and fifty products, turned into a day-by-day forecast of what sells next. Plus an honest look at how close it gets.
Every shop owner knows the feeling. A pallet of something that will not move, right next to an empty spot where the fast seller should be. Both cost money. The first ties up cash you could have spent elsewhere. The second is a customer who walked out empty-handed.
This chain has ten shops and fifty products, with five years of daily sales behind it. That is five hundred separate questions to answer, every single day: how much of this product will this shop sell? Nobody can hold that in their head, and a gut feeling does not scale to five hundred answers a day.
So we built something that answers all five hundred at once, three months ahead. Then we checked how close it got.
The method is the same whether you are forecasting shop sales, cash flow, or how many people you need on a Saturday. Here is the whole thing in plain terms.
Five years of daily sales for every shop and every product, cleaned up and put into one consistent table. Nothing is thrown away and nothing is invented.
Sales are not random. They climb towards the weekend, dip in January, and grow year on year. We measure each of those patterns instead of guessing at them.
Those patterns get extended into the future. First for every shop and product on its own, then added up into the totals you can explore below.
We hid a full year of real sales, asked the model to predict that year blind, and only then compared. That comparison is the number we report.
The chosen model is a SARIMAX (seasonal ARIMA) fitted on log sales. A weekly seasonal order covers the day-of-week cycle, and Fourier terms cover the annual one. The benchmarks are a seasonal-naive rule, a multiplicative decomposition (level × weekday × month × yearly growth), and Prophet at its defaults.
Validation is time-based. Each model trains only on earlier dates and forecasts a later window it never saw, across three fold years (2015 to 2017). Random shuffling is avoided because it would leak the future into the past. Scores are SMAPE (symmetric mean absolute percentage error). Per-series forecasts are summed into the aggregate views on this page.
Anyone can build one model and call it good. We built four, from a one-line rule of thumb to a full statistical model. All four got exactly the same test.
Average error, lower is better
A statistical model that learns the weekly and yearly rhythm of sales and extends it forward. The one we chose.
Takes a base level and multiplies it by the weekday, the month and the yearly growth. Simple arithmetic, and surprisingly hard to beat.
An open-source forecasting tool, run at its default settings.
Assumes this Tuesday sells exactly what the same Tuesday sold a year ago. It learns nothing. Every real method has to beat it.
Each bar is how far that method was off on average, as a percentage of what actually sold. Shorter is better. A bar at 15% means that when the method predicted 100 units, the true number was usually somewhere around 85 to 115.
The three real models finish close together, and all of them clearly beat simply repeating last year. The simplest one even wins in a particular test year. We still chose SARIMAX, because it held up best in every year we tried. For daily use, being steady matters more than winning once.
Everything below is the real output of the model. No mock-ups, no screenshots. Change the settings and the charts recalculate.
Every product in every shop, added together. The solid line is what actually sold; the dashed line is what the model expects next.
SARIMAX expects 2,164,645 units over the next 90 days (January 1, 2018 to March 31, 2018). There is nothing to hold that dashed line against, because the real sales for those months were never made public. Only complete weeks and months are drawn, so a half-finished one at either end cannot look like a collapse in demand.
Switching the method redraws the dashed line only. The solid history never changes, because that part is not a prediction. Watch how the three real methods stay close together while repeating last year drifts off.
Pick the products you want to see. Compare draws one line per product; Add up merges your whole selection into a single line.
5 products selected. 7,763,986 units sold over five years.
Weekly totals across all ten shops, complete Monday-to-Sunday weeks only. The dashed part is the forecast from the method we chose.
Every number below comes from sales the model had never seen when it made its prediction.
This is what separates a forecast from a guess. We took a stretch of real sales and hid it from the model. The model predicted that period blind. Only then did we put the two side by side.
How to read this chart
The dark line is what actually sold each day. Each coloured line is one method predicting that same period, having never seen it. The closer a coloured line hugs the dark one, the better that method did. Use the buttons above the chart to show or hide methods.
Every score on this page comes from a period we held back while training. The model predicted it blind. Those are the same conditions as real use, so the number is not flattered by data the model had already seen.
Four methods ran side by side, from a one-line rule to a fitted statistical model, scored identically across three separate years. The winner had to earn it.
The simplest method came close to the most advanced one, and we would rather say that than hide it. We picked the method that held up in every year we tested, instead of the one that happened to win a single lucky window.
A forecast is a well-founded estimate, not a promise. It picks up what the data can show: the trend, the weekly rhythm, the season. It cannot see a competitor opening across the street. Used well, it turns guesswork into something you can measure and improve.
This case uses the public Kaggle "Store Item Demand Forecasting Challenge" dataset from 2018. We chose a public benchmark on purpose, so we can show the method without exposing a client's private numbers.
It was a "Knowledge" competition with no ranking, medals or placements, so nothing here is a leaderboard position. The accuracy figures are validation scores on held-out periods, and Kaggle keeps the official test answers private. We only show aggregated views, and do not republish the dataset itself.
Demand, cash flow, capacity, staffing. If it has a history, it can probably be forecast. Tell us what you want to predict and we will say honestly what is realistic.