Costs, and How Well the System Serves

Manuel D. Rossetti, PhD P.E.

Agenda

  • What an inventory model actually charges
  • One test that decides what belongs in a cost parameter
  • Building a carrying charge and an order cost from a real ledger
  • How accurate do these need to be?
  • Service measures, and why they disagree with each other
  • The problem the rest of the course solves

A Rule Has No Cost

What costs money is the behavior the rule produces: orders placed at some rate, stock sitting on a shelf, demands arriving when the shelf is empty.

Every term in every model has the same shape:

\[ \text{cost rate} = \text{price} \times \text{quantity the system exhibits} \]

The quantities are properties of the system, and computing them is the technical content of this course.

The prices are what you supply, and no amount of modeling will produce them.

The Six Terms

Term Price (you supply) Quantity (the model computes)
Ordering \(k\), dollars per order order rate, orders per unit time
Holding \(h\), dollars per unit per unit time average on-hand \(\bar{I}\), units
Backorder \(b\), dollars per unit per unit time average backorders \(\bar{B}\), units
Stockout \(\pi\), dollars per unit rate of demand not filled, units per unit time
Purchase \(c\), dollars per unit demand rate \(\lambda\), units per unit time
Stocking position \(f\), dollars per item per location per unit time none

Check the units as you read down. Every row reduces to dollars per unit time, which is what lets them be added.

Three Features of That Table

Some prices are themselves rates. Holding and backorder prices are quoted per unit per unit time, so they multiply a level, not a rate. This is the commonest source of dimensional error in a first cost model.

The purchase term is inert. \(c\lambda\) is identical under every policy and cannot influence the choice among them. Unit cost matters, but through the holding cost.

The last row has no quantity at all. \(f\) is charged from the moment an item is carried at a location, identically whether one unit or ten thousand pass through. That absence is what makes it the parameter that decides marginal cases.

A Note on Time Units

Every rate in a model must use the same time unit, and every price quoted per period must be converted on entry.

Accounting data arrives annually. Simulations usually run in days.

A missed conversion is the error most likely to survive review, because the answer stays plausible while being wrong by a factor of 365.

The Marginality Test

The test

A cost belongs in a parameter only if it changes when the quantity that parameter multiplies changes.

Applying it means naming the quantity first.

  • \(h\) multiplies \(\bar{I}\), so a cost belongs in \(h\) only if it rises when one more unit is held for one more unit of time
  • \(k\) multiplies the order rate, so a cost belongs in \(k\) only if it rises when one more order is placed

A cost that does neither is a period cost: real, possibly large, and irrelevant to the decision.

The Classic Failure

A fully allocated warehouse cost per unit.

The lease, the depreciation, the heating, and the management are divided by the units that passed through, producing a defensible-looking dollars-per-unit figure.

That figure is correct as an accounting statement and wrong as a model input, because none of those costs change if you hold one more unit.

Charge it as though it did and you overstate holding cost, understate order quantities, and recommend ordering more often than is economical.

This Is Not Ignoring Real Money

Period costs are real and must be paid. They simply do not depend on the decision at hand, so including them changes the answer without changing reality.

An accountant computing the true cost of operating a warehouse, and an analyst computing cost parameters for a lot sizing model, are answering different questions.

They will legitimately produce different numbers from the same ledger.

Neither is wrong. Confusing the two is.

Holding Cost Is Built, Not Measured

\[ h = i\,c \]

\(i\) is the carrying charge, in dollars per dollar of inventory value per unit time.

A carrying charge of 0.20 per year means it costs twenty cents a year to hold a dollar’s worth of stock.

Writing \(h\) this way says the cost of holding is proportional to value, so a single carrying charge serves an entire portfolio of items with different prices.

Which Costs Belong in \(i\)?

Component Belongs? Why
Cost of capital Yes Money in stock is unavailable for anything else
Obsolescence, deterioration, shrinkage Yes Exposure scales with value held and time held
Insurance and inventory taxes Where assessed on value Insurers rate on declared value
Storage and space Only where marginal In an owned facility below capacity, one more unit costs nothing
Handling Rarely Scales with throughput, which customers set, not the policy

The three unqualified Yes rows are the three whose exposure grows with the value held and the time it is held. Exactly what \(h\) multiplies.

Building One, From a Real Ledger

A depot carries $70 million of inventory at cost, in a building it owns and operates at about 60% of capacity.

  • Published cost of capital: 5.0%
  • Write-offs and disposals last year: $4.2 million
  • Insurance attributable to inventory: $180,000
  • Receiving and picking labour: $3.1 million

\[ \text{obsolescence} = \frac{4{,}200{,}000}{70{,}000{,}000} = 6.0\% \]

\[ \text{insurance} = \frac{180{,}000}{70{,}000{,}000} = 0.26\% \]

Adding Up What Survives

Component Value
Cost of capital 5.00%
Obsolescence and shrinkage 6.00%
Insurance 0.26%
Storage excluded: owned, below capacity
Handling excluded: throughput-driven
Carrying charge \(i\) 11.3% per year

Five components listed, three included.

Perform that addition every time. A carrying charge that does not reconcile to the sum of its own table has usually picked up a component twice.

Now Change One Fact

Suppose the same inventory sits in third-party warehousing at $18 per pallet position per month, occupying 8,400 positions.

Space is now bought by the position, and is unambiguously marginal:

\[ \frac{\$18}{\text{position-month}} \times \frac{12\ \text{months}}{\text{year}} \times 8{,}400 = \$1{,}814{,}400 \text{ per year} \]

\[ \text{storage} = \frac{1{,}814{,}400}{70{,}000{,}000} = 2.6\% \]

which raises \(i\) from 11.3% to 13.9%.

The physical inventory has not changed at all.

Against the Rule of Thumb

People quote 20% to 25%. We got 11.3%.

The gap is not an error in either direction. It is the storage and handling components, which the rule of thumb includes and the marginality test excludes.

Which is right depends entirely on whether those costs are marginal in the setting at hand.

This choice is not neutral

Because \(Q^{*}\) varies as \(1/\sqrt{h}\), moving \(i\) from 18% to 11.3% raises order quantities across the portfolio by \(\sqrt{18/11.3}\), about 26%.

An inflated carrying charge does not add noise. It systematically penalizes whichever alternative holds more inventory.

The Fixed Order Cost

\[ k = \frac{\text{annual transaction-driven cost}}{\text{orders placed per year}} \]

A purchasing organization placed 18,000 orders last year.

Component Annual
Purchasing staff time attributable to placing orders $570,000
Receiving and inspection, the per-receipt portion $280,000
Systems, transmission, invoice matching $50,000
Transaction-driven total $900,000

\[ k = \frac{900{,}000}{18{,}000} = \mathbf{\$50} \text{ per order} \]

What That Table Excludes

Management overhead. Facility cost. Contract negotiation that does not vary with how many orders are placed.

Each is a real cost of running a purchasing department. None of them changes if one more order is placed this year.

Had we included all of them, the numerator becomes $1.4 million and

\[ k = \frac{1{,}400{,}000}{18{,}000} = \$77.78 \]

Because \(Q^{*}\) varies as \(\sqrt{k}\), that raises every order quantity by \(\sqrt{77.78/50} = 1.25\), a 25% overstatement, and it does so invisibly.

Do Not Blend Dissimilar Transactions

An automated release against an existing contract, an EDI message, may cost under $5.

A manual procurement action involving sourcing, approval, and inspection commonly runs $30 to $150.

The gap is an order of magnitude, and a single average is wrong for both populations: it makes automated items order too much and manual items order too little.

Where both exist, estimate two values and assign each item by its acquisition method.

How Accurate Do These Need To Be?

The reassuring half: the order quantity depends on \(k/h\) under a square root, so errors are compressed.

Read It From the Minimum Outward

Estimating \(k/h\) at half its true value, or at twice, costs about 6%.

Being wrong by a factor of four still costs only about 25%.

The curve is symmetric on a doubling scale: overestimating and underestimating by the same factor carry the same penalty.

The square root is doing the protecting, and it protects a great deal.

The Uncomfortable Half

The same fact, seen from the other side.

Because the cost surface is flat, a badly wrong parameter produces a cost that looks perfectly acceptable while the policy it recommends is substantially wrong.

The model will not complain.

If the recommendation is a number of units to order, a 6% penalty may be tolerable. If the recommendation is which of two configurations to adopt, such as whether to stock an item at a location at all, a 6% error can flip the decision outright.

Where a parameter is both uncertain and decisive, report the break-even, not a point estimate.

Service Measures

Cost has one property no service measure has: it is a single number, so it ranks alternatives without further judgment.

It also has one weakness, and it is decisive. Two of its six terms require \(b\) or \(\pi\), and most organizations cannot defend either.

A measure that cannot be computed is not a measure.

Service measures are the response. They replace the term that cannot be priced with a constraint that can be stated.

The Distinction That Explains Every Argument

Service measures differ in what they average over

Some average over time. Some over units demanded. Some over demand transactions. Some over replenishment cycles.

Two measures from different families can be far apart on the same history, and neither is wrong.

Four Measures

Ready rate \(\overline{\mathit{RR}}\): the proportion of time the system has stock on hand. Natural when what matters is availability at an arbitrary moment.

Transaction fill rate: the fraction of demand transactions filled completely and immediately.

Unit fill rate: the fraction of units supplied from stock on arrival. Gives partial credit.

Customer wait \(\overline{W} = \bar{B}/\lambda\): how long a demanded unit waits. Often the measure management can state most confidently.

One History, Three Answers

A location opens the window \([0,5]\) with 10 units and receives no replenishment. Unfilled demand is backordered.

\(t\) \(D_t\) On hand before Filled Backordered \(I(t)\) after
1 3 10 3 0 7
2 4 7 4 0 3
3 5 3 3 2 0
4 2 0 0 2 0
5 1 0 0 1 0
Total 15 10 5

Now Compute All Three

On hand is positive over \([0,3)\) and zero over \([3,5]\):

\[ \overline{\mathit{RR}} = \frac{3}{5} = 60\% \]

Of the 15 units demanded, 10 were supplied from stock on arrival:

\[ \overline{\mathit{FR}}_{u} = \frac{10}{15} = 66.7\% \]

Two of the five transactions were filled completely:

\[ \overline{\mathit{FR}} = \frac{2}{5} = 40\% \]

Why They Differ

Three numbers between 40% and 67%, from one history, none of them wrong.

The transaction measure is harshest: it gives no credit for the three units of transaction 3 that were supplied.

The ready rate is highest: it counts the quiet early periods, when the shelf was full and nothing much was being asked of it, as heavily as the busy later ones.

A report claiming “95% service” without saying which of these it means is not telling you very much.

When Do They Agree?

The ready rate and the unit fill rate coincide under one important condition: demand arriving one unit at a time in a Poisson stream.

Poisson arrivals see time averages, so the fraction of arrivals finding the system out of stock equals the fraction of time it is out of stock.

That is why the two are so often used interchangeably, and doing so is usually safe for slow-moving items demanded singly.

It stops being safe as soon as demand arrives in batches, because then a stockout tends to be caused by a large transaction, so the arrivals that find the system short are systematically the big ones.

The Problem the Course Solves

The cost form prices every consequence and minimizes:

\[ \min_{\text{policy}} \;\; k\overline{N} + h\bar{I} + b\bar{B} + \pi\lambda_{\ell} + f \]

The service-constrained form minimizes only what can be defended:

\[ \min_{\text{policy}} \;\; k\overline{N} + h\bar{I} + f \qquad \text{subject to} \qquad \overline{\mathit{FR}} \ge \beta \]

These are the same problem. A shortage cost implies a service level, and a service target implies the shortage cost for which it is optimal.

Which form to use is a question about which input you can defend, not about which is correct.

What We Did Today

Price times quantity. Six terms, all reducing to dollars per unit time, and the units check catches most first models.

The marginality test. A cost belongs in a parameter only if it moves when that parameter’s quantity moves. Everything else is a period cost.

Parameters are built from ledgers, and the judgment is in the numerator. 11.3% or 13.9% turned on one fact about the building.

Flatness protects the cost and hides the policy error.

Service measures differ in what they average over. 40%, 60%, 67%, one history.

For Next Time

Read before next session: The Manager’s Problem, and Grouping and Segmentation.

We now have everything needed to state a policy problem for one item. Next session asks what happens when you have forty thousand of them.

Next session:

  • Why attention, not computation, is the binding constraint
  • ABC classification, and why a single criterion misses in both directions
  • Classifying items by demand pattern, which selects the model
  • What a shared policy costs, measured

Bring the marginality test. It reappears whenever someone proposes a new number.

⌂ Index