Demand Forecasting Without a Data Science Team
You can forecast demand well enough to order against without a data scientist. Start from a simple benchmark such as the same week last year, replace the weeks you were out of stock instead of treating them as low sales, forecast over the window your order has to cover, and switch to a more complex method only when it beats the benchmark on your own history.
You do not need a data scientist to forecast demand well enough to order against. You need four habits: start from a simple benchmark, stop treating stockout weeks as low sales, forecast over the window your order actually has to cover, and switch methods only when the new one beats the benchmark on your own history. Everything below runs in a spreadsheet, provided you have one thing many systems do not keep by default: a history of how much stock you had, not just what you sold. If your system only knows today's on-hand, start exporting a daily snapshot now, or rebuild it from receipts and shipments.
The habit that matters most is the second one. Your sales history is not your demand history, and the gap is largest on the items you most need to get right.
What window does the forecast have to cover?
For purchasing, the useful question is: how many units will we sell before the order after this one arrives? The same forecast, summed across items, also drives labour and dock planning, but the window comes from purchasing.
If you order on a fixed schedule, say every Monday, the stock you order today has to last until the next order is placed and then until that one arrives. A Georgia Tech inventory course puts it this way: in periodic review "the time between orders is fixed and the order quantity varies," and safety stock has to cover "the variability of demand in a period determined by the sum of the time between orders and the lead time." MIT's logistics course works an example sizing the order-up-to level on demand over the review period plus lead time.
So a supplier with a six-week lead time on a weekly order cycle needs a seven-week forecast. That forecast sets your order-up-to level, and the forecast's error over the same seven weeks sets your safety stock. If instead you reorder whenever stock falls to a trigger, the window is the lead time alone; that is the reorder point method.
Which forecasting methods can you run in a spreadsheet?
The standard open textbook, Forecasting: Principles and Practice by Hyndman and Athanasopoulos, uses four simple methods as benchmarks throughout:
- Average. "The forecasts of all future values are equal to the average (or "mean") of the historical data." The NIST engineering statistics handbook adds the limit: a simple average is "only a useful estimate for forecasting when there are no trends."
- Naive. "We simply set all forecasts to be the value of the last observation."
- Seasonal naive. Each forecast is "equal to the last observed value from the same season of the year": the same week last year.
- Drift. A naive forecast allowed "to increase or decrease over time" at the average rate in the history.
One step up is simple exponential smoothing, which NIST describes as weighting "past observations with exponentially decreasing weights." Each new forecast is "the old one plus an adjustment for the error that occurred in the last forecast." It suits data "with no clear trend or seasonal pattern."
Excel's FORECAST.ETS function runs a fuller version of the same family. Microsoft documents that it uses "the AAA version of the Exponential Smoothing (ETS) algorithm," which handles trend and seasonality, and that it detects seasonality automatically by default. Three operating details: it "supports up to 30% missing data," it returns #NUM! "if a constant step can't be identified in the provided timeline," and it returns #VALUE! if a date repeats. On slow items it can return a negative number, so clip results at zero.
How do you know if a forecast is any good?
Measure its error against what happened, and compare that with a benchmark's error.
The textbook defines a forecast error as "the difference between an observed value and its forecast." Mean absolute error is "popular as it is easy to both understand and compute," and it is in units. Two warnings apply.
First, percentage errors such as MAPE have "the disadvantage of being infinite or undefined" when actual demand is zero. In the M5 forecasting competition, built on Walmart's unit sales by item and store, the organisers wrote that "many of the competition's series are characterized by intermittency, involving sporadic unit sales with lots of zeros." A slow catalogue usually looks the same, and a MAPE dashboard over it is dominated by its slowest items.
Second, absolute error has its own trap on those items. The M5 paper notes that absolute errors are optimised for the median and so favour forecasts close to zero; that is why the competition scored on squared error instead. On an item that sells nothing in most weeks, a forecast of zero can win on mean absolute error and still leave you with nothing on the shelf. For slow items, compare methods on total units over the replenishment window, or on squared error.
Error also only means something against an alternative. Hyndman and Koehler proposed the mean absolute scaled error, which divides your error by a naive forecast's. A simpler version of the same idea: score the seasonal naive forecast and your method over the same quarter, at the same horizon you order on, and keep the one that wins. The textbook's verdict on a method that cannot beat the simple benchmarks: it "is not worth considering."
Are simple methods really good enough?
For most teams, the benchmark is harder to beat than it looks. The M5 competition drew 5,507 teams forecasting 42,840 Walmart sales series. The paper reports that only "415 (7.5%) beat the top-performing benchmark," an exponential smoothing model automatically selected for each product-store series and added up.
That cuts both ways. The winners did beat it: the top methods were machine-learning models "significantly better than all statistical benchmarks," and the journal's editorial notes the winning approach "was based on multiple direct and recursive LightGBM models." What M5 does not support is the idea that complexity improves a forecast by default. About 92% of teams did worse than a well-chosen exponential smoothing method, which is the family FORECAST.ETS belongs to. Make anything fancier earn its place on your own numbers.
Why your sales history is not your demand history
When an item is out of stock, sales stop. Demand does not. A customer who could not buy leaves no row in the sales export.
Forecasting researchers call this censored demand. A 2024 paper from the Universidad de Castilla-La Mancha states that "sales represent a constrained demand with regards to the underlying (unconstrained) demand," and "in the presence of stockouts sales underestimate demand." A 2025 retail dataset paper gives the plain version: a store can "record only 100 units sold despite genuine demand for 200 units," and models that "process censored demand signals as accurate observations" carry that bias forward.
On a warehouse floor this becomes a loop. The fast seller runs out mid-week. The forecast learns that week was slow, the next order is smaller, the stockout comes earlier, and the history gets worse every cycle. The forecast ends up weakest exactly where a miss costs most.
A fix that needs no statistics:
- Find the stockout days. Flag any day that ended or started at zero available to sell. Use available, not on-hand: allocated, damaged or quarantined units still show as on-hand but cannot be sold.
- Adjust the week. If an item was out for a day or two, scale that week's sales by seven divided by the days it was in stock. If it was out for more than two days, mark the whole week censored and fill it in a separate column, for example with the same week last year scaled to this year's level. Forecast from that column, so the fill is visible.
- Flag the item. If more than about a quarter of an item's weeks are censored, no fill is trustworthy. Tell the buyer the forecast is a floor.
- Watch the other locations. If orders reroute to a second warehouse when the first is out, the first location's history is censored and the second's is inflated. Forecast at network level, where a week is censored only if the item could not be bought anywhere, then split by each location's in-stock share. Expect substitute items to sell more during a stockout, and do not read that as new demand.
What about items that sell once a fortnight?
Slow, lumpy items need different handling. The textbook notes that when data contains "small counts (0, 1, 2, …)," standard methods do not fit well. The common specialist approach is Croston's method, which "involves separate simple exponential smoothing forecasts" on the size of each non-zero sale and the gap between them. It is not a free win: its forecasts "are also known to be biased," and Syntetos and Boylan published a correction to the derivation for that reason.
The simpler route for a small team is to separate items by how often they sell, not only by value. An ABC analysis ranks by value, and an expensive slow item can be an A. Forecast the slow, lumpy group with a plain average over a long window, and let safety stock carry the uncertainty. Cheap items still need cover when their absence holds up a multi-line order.
How should seasonality be handled?
The swing can be large. US Census figures for retail e-commerce, not seasonally adjusted, were $365.2 billion in the fourth quarter of 2025 against $299.7 billion in the third, roughly 22% higher. A twelve-week moving average walks into a peak like that late and out of it late.
Seasonal naive needs a full year of history, so new items get the average or FORECAST.ETS instead. One year shows a pattern once; treat it as provisional until a second year repeats it. Line up moving events such as Easter and Black Friday by event rather than week number. And clean last year's stockout weeks before copying last year forward, because peak weeks are where they cluster.
A forecasting routine a small team can keep
- One row per item per week, from sales and stock history together.
- Adjust partly censored weeks and fill fully censored ones in a visible column.
- Forecast each item with seasonal naive (if it has a year of history) and with FORECAST.ETS, clipped at zero.
- Every quarter, score both at your order horizon on the weeks that were not censored. Switch an item's method only when the other wins consistently.
- Use the forecast over review period plus lead time for the order-up-to level, and its error over the same window for safety stock.
- Review the biggest misses for causes the data cannot see: a promotion, a listing change, a supplier delay.
None of this needs a model server. It needs clean stock history, an honest benchmark, and the discipline to keep the simpler method when it wins.
Frequently asked questions
What is the simplest demand forecasting method that actually works?
Seasonal naive: forecast each week as equal to the same week last year. The Forecasting: Principles and Practice textbook uses it as one of four simple benchmarks, and says a new method that cannot beat them is not worth considering. It needs a year of history, and moving events such as Easter or Black Friday should be lined up by event, not by week number, before you copy last year forward.
Why are sales numbers a bad forecast input after a stockout?
Because sales stop when stock runs out, even if customers keep wanting the item. Forecasting research calls this censored demand: in the presence of stockouts, sales underestimate demand. A forecast built on those weeks learns that the item sells less than it does, so the next order is smaller and the next stockout comes sooner. Mark stockout weeks as censored and replace them with an estimate rather than recording them as low sales.
Should I measure forecast accuracy with MAPE?
Not on slow-moving items. Percentage errors become infinite or undefined when actual demand is zero, and slow items have many zero weeks. Mean absolute error has its own trap there: it rewards forecasting zero. For slow items, compare methods on total units over the whole replenishment window instead, leave stockout weeks out of the scoring, and never accept a method that forecasts zero for an item you intend to keep in stock.
Run your warehouse without losing a single unit.
Binlogic is the warehouse management system for brands and retailers who run their own fulfillment. Receive, count, pick, pack and ship, with every move scanned. See it in a 30-minute demo.
Get a demo