Two mistakes, two costs
An order for the peak can miss in two directions. If the shop runs out, it loses the profit on every unit it could have sold. If stock is left over, it loses whatever the clearance sale fails to recover, plus the money tied up in the leftover until next season.
These two losses are rarely equal, and their ratio decides how much to add to the forecast. Call them:
- Cu: the profit on a unit you ran out of. Price minus purchase cost minus the variable costs of an order (delivery paid by the shop, the payment fee, packaging). How to collect these costs is covered in the article on online shop unit economics.
- Co: the loss on a unit left after the peak. Purchase cost minus what a clearance sale brings back, plus storage and the cost of money.
The illustrative example used throughout this article: a product priced at UAH 800, bought for UAH 480, with UAH 80 of variable costs per order. Cu = 800 − 480 − 80 = UAH 240.
Co depends on what kind of product it is:
| Product | What happens to the leftover | Co |
|---|---|---|
| A 2027 calendar | Does not sell after the holidays and is written off | UAH 480 |
| A gift set | Sells at half price in January: 400 − 80 = UAH 320 back out of 480 paid | UAH 160 |
| A year-round product | Sells at full price within two months; the loss is the cost of money, 4% of UAH 480 | UAH 19 |
The 4% cost of money for two months is the top of the range from our calculation on closing a cash gap: at bank rates as of 30 October 2026, UAH 100,000 for 60 days cost between 0.5% and 4.4% of the amount. If the stock is paid for with your own money, use what that money would have earned over the same period in another product.
A forecast from last year's sales and the latest weeks
The forecast needs two lines from your records: the product's sales in the peak weeks last year, and its sales in the four weeks before the peak, last year and this year. The peak in the example is 28 days, from 30 November to 27 December 2026.
| Step | Calculation | Result |
|---|---|---|
| Sold in the 28 peak days last year | from records | 126 units |
| Correction for days out of stock | 126 × 28 ÷ 21 | 168 units |
| Growth this year | 45 ÷ 36 (the four weeks before the peak, this year and last) | × 1.25 |
| Demand forecast | 168 × 1.25 | 210 units |
| Forecast error of 25% | 210 × 0.25 | ± 52.5 units |
The second row is the one most often skipped. Last year's sales show how much the shop managed to sell, which is less than what buyers wanted whenever the shelf was empty. In the example the product was in stock for 21 days out of 28, so 126 units sold correspond to demand of roughly 168. The correction is crude: it assumes buyers would have bought on the empty days at the same rate as on the stocked ones. If the product ran out in the last week before the holiday, real demand was higher still.
Take the growth factor from the same product or from its product group. Four weeks before the peak give a steadier number than one: a single week can land on a promotion or an advertising outage.
Where the forecast error comes from. If you have records for two past seasons, use this same method to forecast last December from the data of the year before, and compare it with what actually happened. The percentage deviation is your error. If the records hold only one season, calculate the order for three values, say 15%, 25% and 40%, and see how much the answer moves. As shown below, for a seasonal product it barely moves.
Safety stock depends on what happens to the leftover
One more unit is worth ordering while the expected profit from it exceeds the expected loss: the probability of selling it × Cu is greater than the probability of not selling it × Co. That gives the rule: the order should cover demand with a probability of
Cu ÷ (Cu + Co)
That share is then converted into units. If the forecast error is normally distributed, the order equals the forecast plus z × the error in units, where z is the standard normal quantile for that share. In Google Sheets and Excel the function NORM.S.INV returns it: for example, =NORM.S.INV(0.6) gives 0.25.
| Cu ÷ (Cu + Co) | z | Order with a forecast of 210 and a 25% error |
|---|---|---|
| 20% | −0.84 | 166 units |
| 30% | −0.52 | 182 units |
| 40% | −0.25 | 197 units |
| 50% | 0 | 210 units |
| 60% | 0.25 | 223 units |
| 70% | 0.52 | 238 units |
| 80% | 0.84 | 254 units |
| 90% | 1.28 | 277 units |
| 95% | 1.64 | 296 units |
For the three products in the example the share comes out at 33% (240 ÷ 720), 60% (240 ÷ 400) and 93% (240 ÷ 259). The forecast is the same for all three; the order is not:
Illustrative example: price UAH 800, purchase cost UAH 480, variable costs UAH 80 per order. Calculated with Cu ÷ (Cu + Co) and a normally distributed forecast error, 9 November 2026.
For the calendar the safety stock is negative. A unit left over costs the shop UAH 480 and a unit it ran out of costs UAH 240, so selling 23 units fewer is the better deal than risking a write-off.
The forecast error affects the three products differently. With 15% or 40% in place of 25%, the gift set order moves from 223 to 218 or 231 units, while the year-round product moves from 286 to 256 or 332. A precise estimate of the error matters where the reserve is large.
The cost of a mistake in hryvnias
Here is what each order size for the gift set yields if demand deviates from the forecast. The result is the profit on units sold minus the loss on the leftover (UAH 160 per unit).
| Ordered | Demand 150 | Demand 180 | Demand 210 | Demand 240 | Demand 270 |
|---|---|---|---|---|---|
| 210 units | 26,400 | 38,400 | 50,400 | 50,400 | 50,400 |
| 223 units | 24,320 | 36,320 | 48,320 | 53,520 | 53,520 |
| 286 units | 14,240 | 26,240 | 38,240 | 50,240 | 62,240 |
The order of 286 units wins in only one column out of five, and at a demand of 150 it yields barely half of what an order of 210 does. To compare the options with a single number, the scenarios are weighted by probability. Below is the expected result with the same 25% forecast error for all three products.
| Ordered | Calendar (Co = 480) | Gift set (Co = 160) | Year-round product (Co = 19) |
|---|---|---|---|
| 187 units | 36,656 | 40,311 | 41,921 |
| 210 units | 35,320 | 42,022 | 44,975 |
| 223 units | 33,300 | 42,287 | 46,246 |
| 286 units | 12,673 | 37,547 | 48,507 |
The table shows two things. Near its own optimum the result changes slowly: for the gift set, orders of 210 and 223 units differ by UAH 265, so rounding to the supplier's pack size does no harm. What costs real money is applying another product's rule. A gift set ordered with the reserve of a year-round product (286 units) brings in UAH 4,740 less than the optimum. Calendars in the same quantity yield UAH 12,673 where 187 units would have yielded 36,656.
The calculation leaves out the buyer who did not find the product and left for a competitor for good. If that is typical in your niche, Cu is larger than the profit on one order and the share shifts upward. We have not measured how many such buyers there are; that number exists only in your own repeat-purchase records.
Lead time: one order or several
The formula above sizes one order for the whole peak. That is the only option when the supplier takes longer to deliver than the peak lasts. If delivery takes a few days, the risk can be split: the first order covers the start of the peak, and the second is placed on actual sales.
The last date to order is counted back from the end: the last day on which the product is still worth selling, minus the days needed to receive the goods, minus the lead time. In the illustrative example the last selling day is 23 December and receiving takes two days.
| Lead time | Last date to order | What it means |
|---|---|---|
| 3 days | Friday, 18 December | You can reorder every week |
| 7 days | Monday, 14 December | One reorder after the first week of the peak |
| 14 days | Monday, 7 December | A reorder on first-week data only |
| 25 days | Thursday, 26 November | One order for the whole peak, placed before it starts |
Every shop has its own last selling day: it depends on the carrier's pre-holiday schedule and on when buyers stop ordering gifts. Check this December's schedule on the carrier's site, because last year's may not match.
The second order uses the same forecast, corrected for what actually happened. If the first week of the peak accounted for 20% of sales last year, the plan for the first week is 42 units out of 210. If 50 were sold, the forecast for the whole peak becomes 210 × 50 ÷ 42 = 250 units, and the reorder is counted from that, less what has been sold and what is in stock.
- Can the supplier deliver before the last date if you order after the first week of the peak?Then the forecast error can be corrected on actual sales. Yes → a first order for part of the peak, a second on actual sales
- Does the leftover sell at full price after the peak?Then the loss per unit is only the cost of money and shelf space. Yes → order with a large reserve, as far as the money allows
- Does the leftover sell at a discount?Work out Co from the clearance price. Yes → a small reserve from Cu ÷ (Cu + Co)
- Will the leftover have to be written off?Co equals the purchase cost or exceeds Cu. Yes → order less than the forecast
Check the money before sending the order to the supplier. 223 gift sets mean UAH 107,040 of purchases; 286 units of the year-round product mean UAH 137,280. Put the payment into a payment calendar in the week the supplier requires it, and see whether the account balance goes negative before sales begin. If the goods are bought in foreign currency, add the buffer from the article on currency risk in a product price to the purchase cost.
Calculator
Enter the data for one product. The default values are the gift set from the example. For the calendar, set the leftover discount to 100%; for the year-round product, set the discount to 0% and enter UAH 19 in the storage and cost of money field.
Our position
Do not add the same percentage of reserve to the forecast across the whole range. Split products by what happens to the leftover and size the reserve separately: large for year-round items, small for seasonal ones, negative for those written off after the holidays. If the supplier delivers fast, order for the start of the peak and reorder on the first week's actual sales.
The position does not hold in three cases. First, when an out-of-stock product costs the shop more than the profit on one order, because the buyer leaves with the whole basket or never comes back. Then Cu has to be raised by that loss, and the reserve grows. Second, when there is no money for the calculated order. The budget becomes the constraint, and it is allocated across products by profit per hryvnia of purchases. Third, when the product is new and has no sales from last year. The formula has nothing to rest on, and the first order is better placed at the smallest batch the supplier offers.
The formulas and all figures were recalculated in code on 9 November 2026; weekdays were checked against the calendar, and the NORM.S.INV function against the Google Sheets and Microsoft Excel help pages on the same day. The cost of money comes from a calculation at bank rates as of 30 October 2026. The examples are illustrative and are not data from any particular shop.
