A newspaper seller buys papers in the morning and cannot sell yesterday's. Buy too many and the rest are waste. Buy too few and customers leave empty-handed. The newsvendor model finds the order quantity that makes the most money on average, and it applies to anything with one selling window: bread, flowers, fresh produce, seasonal stock.
From 15 to 17 I helped my father decide what to buy at the Tel Aviv wholesale market twice a week, which I wrote about in a note on a pallet of apples. We never wrote down a formula. This is the one underneath that decision.
The formula: the critical ratio
Two costs drive everything. Cu, the underage cost, is what one unit short costs you: the margin you did not earn. Co, the overage cost, is what one unit left over costs you: what you paid for it, minus anything you get back.
The best stock level q* is the smallest quantity where the probability of covering demand reaches the critical ratio: P(D ≤ q*) ≥ Cu / (Cu + Co).
Why that ratio
Think about adding one more unit to the order. It only sells if demand is above your current stock, which happens with probability P(D > q), and then it earns Cu. Otherwise it is left over, with probability P(D ≤ q), and costs Co.
Keep adding units while the expected gain beats the expected loss: (1 − P(D ≤ q)) × Cu > P(D ≤ q) × Co. Rearrange and the stopping point is exactly where P(D ≤ q) reaches Cu / (Cu + Co). The whole model is that one marginal comparison.
A worked example
Say ten days of demand were 6, 9, 12, 8, 15, 7, 11, 10, 13, 9, average exactly 10, and each day is equally likely to repeat. Each unit sells for 10.
First a low-margin product that costs 6. Then Cu = 4, Co = 6, and the ratio is 4 / 10 = 0.4. From the data, P(D ≤ 8) = 0.3 falls short and P(D ≤ 9) = 0.5 clears it, so stock 9.
Then a high-margin product that costs 3. Now Cu = 7, Co = 3, and the ratio is 0.7. P(D ≤ 10) = 0.6 falls short and P(D ≤ 11) = 0.7 reaches it, so stock 11.
Checking it the long way, by computing the average profit for every stock level over the ten days, gives the same answers:
| Stock | Cost 6: average profit | Cost 3: average profit |
|---|---|---|
| 8 | 29.0 | 53.0 |
| 9 | 30.0 | 57.0 |
| 10 | 29.0 | 59.0 |
| 11 | 27.0 | 60.0 |
| 12 | 24.0 | 60.0 |
For the high-margin product, 11 and 12 tie at 60.0. That happens when P(D ≤ q) lands exactly on the ratio, as it does here at 0.7: the twelfth unit gains and loses the same amount on average. The rule picks the smaller stock, which ties up less money for the same profit.
It tells you to run out
The low-margin product stocks 9, below the average demand of 10. On 5 of the 10 days, demand is higher than 9 and you sell out. That is not a mistake in the plan. It is the plan: when a leftover unit costs more than a missed sale, the most profitable stock sits below the average.
The ratio is below one half whenever Co is larger than Cu, which is the usual case for perishables with thin margins. So the correct policy sells out on most days. That has a side effect for anyone forecasting from sales: on every sell-out day the record shows your stock, not your demand. I worked through what that does to the data in a note on censored demand.
Salvage value
If leftovers can be sold off cheaply, or turned into something else, the overage cost drops. Say the product that costs 6 can be cleared at 3 at the end of the day. Then Co = 6 − 3 = 3, Cu stays 4, and the ratio rises to 4 / 7 ≈ 0.571.
P(D ≤ 9) = 0.5 now falls short and P(D ≤ 10) = 0.6 clears it, so the stock rises from 9 to 10. The average profit at 10 is 32.3, against 31.8 at 9. A way to rescue leftovers is worth more stock, which is the arithmetic behind turning unsold fruit into jam.
With a normal distribution
With more history, demand is often modelled as normal, with mean μ and standard deviation σ. The rule becomes q* = μ + zσ, where z is the point on the standard normal curve with the critical ratio below it.
The ten days have μ = 10 and a sample standard deviation of σ = 2.79. For the ratio 0.4, z = −0.253 and q* = 10 − 0.253 × 2.79 = 9.29. For 0.7, z = 0.524 and q* = 11.46. Rounded, the same 9 and 11 the data gave.
The normal version is convenient, but it is only as good as μ and σ. If they were estimated from sales on days you sold out, both are too small, and the formula will confidently recommend too little.