← All posts

Forecasting

How to tell whether your forecast is any good

Accuracy is a size. What costs money is the direction, and most stores never check which way their forecast leans.

Marcus Volsted Marcus VolstedCo-founder, Restocio Published 10 October 202614 min read

Every source on this page was opened and read, and each one is dated in the Sources section at the foot.

A forecast is good enough when its misses stay well inside the cushion you carry and, if they lean at all, lean high rather than low. You can check both from your own history: take the sales rate each order was sized on, compare it with what actually sold while the goods were on the way, and write down the size and the sign of the gap. Size tells you whether the error matters. Sign tells you whether it is the expensive kind.

This is not a page about making a forecast more accurate. The forecasting pillar argues that pushing a forecast from decent to excellent is slow work with a small payoff for an importer, because the expensive failures are timing failures, and nothing below disagrees with it. What a store does need is a way to tell whether the forecast it already has is wrong in a way worth acting on, or wrong in the ordinary way every forecast is, which the cushion was built to absorb. That is a diagnosis rather than a project, and it ends with a decision about the next order date, not a better model.

How do you measure forecast accuracy?

Start with what an error is. Hyndman and Athanasopoulos, in Forecasting: Principles and Practice, define a forecast error as the observed value minus its forecast, and every accuracy figure you will ever see is a way of summarising a list of those. Two summaries do most of the work in a store.

MeasureWhat it saysWhere it misleads
Mean absolute errorThe typical miss in units, sign ignored. Twelve months of misses averaging 300 units is a mean absolute error of 300.It cannot be compared across products. A miss of 300 is a rounding error on one line and a whole cycle on another.
Mean absolute percentage errorThe same misses, each expressed as a share of what actually sold, then averaged.Undefined for any month that sold nothing, and it treats an over-forecast as worse than an under-forecast of the same size, which for an importer is upside down.

That last cell deserves a number, because it is the reason a percentage can send you the wrong way. Forecast 100 for a month that sells 50 and the percentage error is 100 per cent. Forecast 50 for a month that sells 100 and it reads 50 per cent. The miss is 50 units either way. The textbook, read on 27 September 2026, says plainly that percentage errors "put a heavier penalty on negative errors than on positive errors", and a negative error in that definition is the over-forecast, the one that parks some cash and corrects itself on the next cycle. The miss that empties a shelf is the one the percentage plays down.

Neither summary tells you which way the forecast leans, and that is the figure this page is about. Which formula produced the forecast in the first place is a separate question, and for an importer a less interesting one.

Is it worse to over-forecast or under-forecast?

Every forecast misses. What separates a harmless one from an expensive one is whether the misses cancel out or pile up on one side. The same textbook, in its section on residual diagnostics, puts the test in a sentence: if the errors "have a mean other than zero, then the forecasts are biased." A forecast that runs 15 per cent high one month and 15 per cent low the next has an ugly error score and no bias. One that runs 5 per cent low every month has a flattering score and a problem.

For an importer the two directions are not the same size of problem, and the reason is the freight. Lean high and you ordered more than you needed. The surplus sits on the shelf, costs whatever your money costs, and sells through over the following weeks, after which the next order sees a fuller shelf and shrinks itself. Lean low and you ordered less than you needed. The shelf empties before the boat lands, and the choices at that point are air freight at several times the sea price per kilo, or a run of days with nothing to sell on a product that had customers. One error is measured in weeks of cover. The other is measured in multiples of the freight bill, and it tends to repeat, because a product that sold out is then measured as slower than it is and under-ordered again.

So the question to ask of a forecast is not how accurate it is. It is whether, when it misses, it misses low, and by how much of the cushion. Neither is a mystery once someone looks, and almost nobody looks.

The check, one sitting with your top products

The safety stock audit on this site reads the cover left on the shelf the day a delivery lands. That figure blends two things, how wrong the forecast was and how late the boat was, and for the safety stock question the blend is the point. Here you want the demand half on its own, so the comparison is between the rate you ordered on and what sold, with the delivery date left out entirely.

Pick five to ten products by units sold, and for each one the last two or three orders you placed.

What to pullWhere it comes fromWhat you write down
The daily rate each order was sized onThe purchase order, the spreadsheet as it stood that day, or the app's plan at the timeUnits per day, one figure per order
The stretch the forecast had to coverOrder date to the date the goods went liveDays, one figure per order
What actually sold in that stretchShopify's sales report by variant, filtered to those datesUnits
Days the product sat at zero in that stretchYour own records, or Shopify's adjustment history while it still reaches back that farDays, often none

Then two lines of arithmetic per order. Forecast units are the rate times the days. The miss is what sold minus forecast units, sign kept, so a positive number means you under-forecast and a negative one means you over-forecast. If the product ran out during the stretch, the true miss is at least the positive number you got and probably larger, because the days at zero sold nothing for want of goods rather than want of customers. Mark that order low, with a note.

Convert each miss into days by dividing it by the rate you ordered on. That is the unit the rest of this page uses, because it is the unit your cushion is already in. A miss of 400 units on a product ordered at ten a day is 40 days, and 40 days means something the moment it sits beside a 60-day cushion. Across every order you pulled, count how many came in low and how many high, and note the largest low miss in days. Those two facts are the whole diagnosis.

If you never recorded the rate you ordered on, and many stores did not, rebuild it. Units sold in the 60 days before the order date, divided by the days the product was on the shelf in that window, is what a sensible spreadsheet would have shown that morning. Divide by calendar days if you have no stockout record for the window, and accept that the rebuilt rate runs a little low wherever the product had run out.

Reading the result

Two axes, and the grid below is the decision. Small and large are measured against your cushion, the days of stock you plan to still have on the shelf when a delivery lands, which days of stock separates out of the total. The cushion has to absorb a late boat as well as a demand miss, so a miss that eats more than half of it leaves the boat less than half, and that is the line this page treats as large. Under a third is small. Between the two, keep watching.

 Misses lean high (you over-forecast)Misses lean low (you under-forecast)
Small, under a third of the cushionLeave it alone. A few extra days of cover that sell through on their own. This is what a working forecast looks like.Leave the forecast alone, and confirm the cushion really is absorbing it, which the safety stock audit reads off the cover left at each landing. Nothing changes on the order.
Large, more than half the cushionCash parked, not a stockout risk. Look for a discount week inside the measuring window, or a product that has genuinely slowed, and shorten the cycle on the next order rather than touching the pipeline or cushion days. The forecast method is not the fix.The expensive cell, and the only one that earns any work. Check the divisor first, then growth, in that order, because the first takes ten minutes and the second is where a flat average always fails. Then order earlier. Not more accurately. Earlier.

Three of the four cells change nothing about the forecast, and the fourth ends in a date rather than a model. That is the pillar's asymmetry applied to your own numbers. A forecast that leans high, even badly, is a cash conversation. One that leans low by half a cushion is the one that will eventually put a container's worth of product on a plane.

Where a large low miss usually comes from

When the check lands in the expensive cell, the causes are few, and they rank themselves by how cheap they are to rule out.

The divisor. A rate computed over calendar days, on a product that ran out somewhere in the window, is low by the share of days the shelf sat empty. The pillar works the arithmetic, and the short version is that a product unavailable for two thirds of its window reads at a third of its true pace. Every order sized on that rate misses low, and the miss looks like a forecasting problem when it is a counting one. Shopify's reports divide by calendar days, so if a sales-per-day figure ever went from a report into an order, start here. The calculator applies the correction for you.

Growth. A flat average of a growing product sits below where the product is now, every month, because every older month was smaller. The lean is systematic and it does not fade as history builds, since the average is always describing a version of the product that sold less. The fix is not a fancier model. It is a shorter window on the products that are visibly growing, and an earlier order.

Something history could not contain. A campaign you ran, a first wholesale account, a product that got picked up somewhere. A low miss from one of these is real, and it is not evidence the forecast is broken, because no forecast built from history could have seen it coming. Note it and retune nothing on the strength of it.

Large high misses have a shorter list. A discount week inside the measuring window inflates the rate for every order sized after it, and a product that really has slowed leaves a trailing average lagging behind the fall, which is its own post. Neither needs a better formula, only a window chosen on purpose.

What our own app measures, and what it leaves to you

Because this page is on a vendor's site, here is what our app does with the question. The rate that sizes each product's order in Restocio is a trailing average over the days the product was in stock, 60 days by default, and no per-product error is reported against it. The one place the app scores a forecast is the Demand page, for the shop as a whole, month by month. A flat average, a growth trend and a growth trend with season are each asked to predict months they were never shown. The one with the lowest mean absolute error wins, a tie goes to the simpler method, and the panel says how far off the winner typically was, as a percentage, or in units when any month sold nothing and the percentage would be undefined. It needs four full months to learn from and a fifth to test against before it scores anything, part-months at the edges of the window are dropped rather than scored, and the seasonal method is withheld until two full years exist, because with one year a November spike and ordinary growth look identical. Nothing on that panel changes an order quantity. It exists so the method can be judged before it is trusted.

The limit that matters for this page is direction. The panel tells you the size of the miss and not which way it went. The share of months the winning method predicted too low is computed, and it is not shown on screen, so the lean is a check you run yourself with the table above, and you run it per product, where a whole-shop figure cannot see it. A shop that is flat overall can be growing on its best sellers and fading on its worst, and the whole-shop error would call that accurate.

How sure this makes you

Not very, and it is worth saying plainly. Two or three orders per product is two or three observations, and a rule about a third and a half of the cushion is a rule of thumb, not a statistical test. It will call a genuine lean noise for one more cycle sometimes, and it will occasionally send you looking for growth behind a low miss that was just a strong month. The check also needs the rate you ordered on, which many stores never wrote down, and a rebuilt rate is an approximation of one. Below about a year of history, or below a handful of completed orders on a product, the honest reading of the grid is that you do not know yet, and the useful action is to start recording the rate on every purchase order so that next year you do.

Back to the deadline

If the check puts you in the expensive cell, the fix is still not a project to improve the forecast. Correct the divisor, shorten the window on the products that are growing, and then move the order date earlier. The same lean that eats 20 days of your cushion over the journey has also put your order deadline later than it really is, by at least that many days and usually more, because days of stock is units divided by the rate, and a rate that runs low stretches every day of the projection, the cushion's days as well as the journey's. Moving the date is an afternoon's work rather than a quarter's. Everywhere else in the grid, the forecast you have is doing its job, and the number that decides whether you pay sea or air is the one on the order deadline, not the one on the error score. Watch the date. Let the forecast be a little wrong.

Common questions

How do I measure the accuracy of an inventory forecast?

Compare what the forecast said with what actually sold over the same stretch, order by order. The miss is actual minus forecast, kept with its sign, and dividing it by your daily rate turns it into days so it can be set against your cushion. Do that for your top products over their last two or three orders and you have both the size of the error and which way it leans, and the lean is the number that decides whether anything needs to change.

What is a good forecast accuracy percentage for a store?

There is no universal figure, and anyone quoting one is not looking at your lead time. A miss that stays under about a third of your cushion in days is doing what a forecast is supposed to do, whatever the percentage says. A percentage error also has a known flaw: it reads an over-forecast as worse than an under-forecast of the same size, which for an importer is the wrong way round.

Is it worse to over-forecast or under-forecast inventory?

For a store that imports, under-forecasting, and not by a small margin. An over-forecast parks some cash on the shelf and sells through on its own. An under-forecast empties the shelf before the boat lands, and the choices at that point are air freight at several times the sea price or days with nothing to sell. Weeks of cover on one side, multiples of the freight bill on the other.

My forecast keeps being wrong. Should I switch to a better method?

Check which way it is wrong first. If the misses go both ways and stay inside your cushion, the forecast is fine and the method is beside the point. If they lean low by a large share of the cushion, the usual causes are a rate that counted out-of-stock days as slow days, or growth that a flat average cannot see, and neither is fixed by a fancier model. Correct the divisor, shorten the window, and order earlier.

What is forecast bias?

A forecast that misses in the same direction more often than not. In the textbook definition, the errors have a mean other than zero. Bias matters more than the size of any single error because it does not cancel out: a forecast that runs a few per cent low every month under-orders every cycle, while one that swings high and low by larger amounts averages out to about the right total.

Does Restocio show forecast accuracy?

For the shop as a whole, on the Demand page. Three methods are tested against months they never saw, the one with the lowest mean absolute error is shown with how far off it typically was, and the seasonal method is held back until two full years of history exist. It shows the size of the miss and not its direction, and it does not score the per-product rate that sizes orders, so the check on this page is still yours to run.

Sources

Every source below was opened and read on the date shown against it. Rules, rates and schedules change, so check the current page before you act on a number that matters. If anything here is out of date or wrong, tell us and we will correct it.

Marcus Volsted
Marcus Volsted
Co-founder, Restocio

Marcus co-founded Restocio and works on it daily with a Swedish importer who plans their purchasing in it every working day. Restocio is built in Sweden by two founders, one Swedish and one Danish, and Marcus is the Danish one. Why we are building it.

Related reading

Restocio plans purchasing for Shopify stores that import. It works out what to order, how much, and whether it should travel by sea, rail or air, so you pay air freight only for the units that genuinely cannot wait.

See pricingTalk to us