Four sources carry essentially everything needed:
Notice what is absent: no new measurement, no study. The work is selection and arithmetic, and the marginality test governs the selection. Every figure is annual; converting to the model’s time unit is the last step, not the first.
An item’s records show a standard price of $7.35, what internal customers are billed, and a latest acquisition cost of $6.11, what the organization paid.
\[ \begin{aligned} \frac{7.35}{6.11} &= 1.203 &&\text{a 20.3}\%\text{ cost-recovery markup}\\ h = ic &\;\Rightarrow\; \text{$h$ overstated by 20.3}\%\text{ if $c = \$7.35$} &&\text{holding is proportional to value} \end{aligned} \]
That error does not stay put. Holding cost is one of the two quantities the order quantity balances, so an inflated \(h\) produces order quantities that are too small, for every item priced this way.
If only the standard price is available, divide by one plus the cost-recovery rate in force, and record the adjustment as an explicit assumption: a single multiplier, easy to revise.
A depot carries $70 million at cost, in a building it owns, at about 60% of capacity. Published cost of capital 5.0%; last year’s write-offs and disposals $4.2 million; insurance attributable to inventory $180,000; receiving and picking labor $3.1 million.
| Component | Computation | Value |
|---|---|---|
| Cost of capital | read off the published rate | 5.00% |
| Obsolescence and shrinkage | \(4{,}200{,}000/70{,}000{,}000\) | 6.00% |
| Insurance | \(180{,}000/70{,}000{,}000\) | 0.26% |
| Storage | excluded: owned, below capacity | |
| Handling | excluded: the $3.1 million scales with throughput | |
| Carrying charge \(i\) | \(5.00 + 6.00 + 0.26 = 11.26\) | 11.3% a year |
The check: the charge must reconcile to the sum of its own table. You should perform that addition every time, because a carrying charge that does not usually picked up a component twice.
Suppose the same inventory sits in third-party warehousing at $18 per pallet position per month, occupying 8,400 positions. Space is bought by the position, so it is marginal:
\[ \begin{aligned} \left(\frac{\$18}{\text{position-month}}\right)\left(\frac{12 \text{ months}}{\text{year}}\right)(8{,}400 \text{ positions}) &= \frac{\$1{,}814{,}400}{\text{year}} &&\text{a dimensional chain}\\ \frac{1{,}814{,}400}{70{,}000{,}000} &= 2.6\% &&\text{storage, as a fraction of value}\\ 11.3\% + 2.6\% &= 13.9\% \text{ a year} &&\text{the new carrying charge} \end{aligned} \]
The physical inventory has not changed at all. What changed is whether holding one more unit costs anything in space, and that alone moves the charge by a quarter.
This choice is not neutral
The 20 to 25% rule of thumb includes storage and handling. Order quantities vary as \(1/\sqrt{h}\), so moving \(i\) from 18% to 11.3% raises them by \(\sqrt{18/11.3} = 1.26\), about 26%. An inflated charge systematically penalizes whichever alternative holds more stock.
\[ 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 |
\[ \begin{aligned} k &= 900{,}000/18{,}000 = \$50 \text{ per order} &&\text{only what moves with the order count}\\ k' &= 1{,}400{,}000/18{,}000 = \$77.78 &&\text{if overhead were included}\\ \sqrt{77.78/50} &= 1.25 &&\text{every order quantity 25}\%\text{ too large, invisibly} \end{aligned} \]
An automated release against an existing contract, an EDI message or an automatic replenishment signal, may cost under $5, sometimes a fraction of a dollar. A manual procurement action with 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.
The same logic applies across echelons: an internal requisition from a branch to its own warehouse is usually far cheaper than an external purchase, and should carry its own \(k\).
There is no ledger account for a disappointed customer. Three approaches, in increasing order of practicality:
Enumerate the consequences. An emergency shipment at a known premium, a line idled at a known hourly cost, a contractual late penalty. The unit falls out: an expedite fee is a one-time charge, so \(\pi\); an idled line accrues by the hour, so \(b\). Works in narrow settings and fails in most.
Substitute a service target. Specify the fill rate, ready rate or tolerable wait, and choose the cheapest policy meeting it. It moves judgment from a dollar figure nobody can defend to a service statement management already makes. A tolerable wait converts directly, since \(\bar{B} = \lambda\overline{W}\).
Invert an existing policy. A rule the organization already runs, a service target or “do not stock at a branch below 12 demands a year”, embodies a shortage cost. Solving for the \(\pi\) or \(b\) that reproduces it recovers the organization’s own revealed valuation, and if the implied value is absurd, the rule deserves scrutiny.
| Overlap | The test |
|---|---|
| \(k\) against inbound freight | If \(k\) already bundles freight, do not charge freight again as a separate term |
| \(i\) against \(f\) | \(i\) scales with inventory value, \(f\) with nothing; subtract any flat per-item storage allocation from \(i\) before setting \(f\) |
| \(\pi\) against \(b\) | \(b\) charges the waiting; a per-unit \(\pi\) on top charges the same failure twice, unless it prices a separate one-time consequence |
| Obsolescence | Belongs in \(i\), not \(f\): write-off exposure scales with value, not with the item being listed |
Every row is resolved the same way, by asking which quantity the disputed dollar scales with:
| Scales with | Value | Orders | Units owed \(\times\) time | Nothing | Throughput |
|---|---|---|---|---|---|
| Goes in | \(i\) | \(k\) | \(b\) | \(f\) | none of them |
Some parameters resist estimation however the ledger is interrogated; \(f\) usually does, because its costs are recorded as departmental totals. A mid-value item: \(c = \$6.11\), \(i = 0.18\), \(\bar{I} = 10\) units.
\[ \begin{aligned} h\bar{I} = ic\bar{I} &= (0.18)(6.11)(10) = \$11.00 \text{ a year} &&\text{computable to the cent}\\ f / h\bar{I} &= 20/11.00 = 1.8 &&\text{a plausible } f = \$20 \end{aligned} \]
The cost of having a slot exceeds the cost of the inventory in it. The stocking decision turns almost entirely on \(f\), the hardest parameter to estimate.
Defending $20 over $15 would be false precision. Report the break-even instead: forward stocking this item pays as long as a stocking position costs less than $X a year. Where a parameter is both uncertain and decisive, report the break-even.
Let \(\overline{N}\) represent the average number of orders per unit time. The terms assemble into one rate:
\[ \begin{aligned} \mathit{TC} &= k\overline{N} + h\bar{I} + b\bar{B} + \pi\lambda_{\ell} + c\lambda + f &&\text{each term in dollars per unit time}\\ C &= k\overline{N} + h\bar{I} + b\bar{B} + \pi\lambda_{\ell} &&\text{the relevant cost: drop the inert } c\lambda \text{ and } f \end{aligned} \]
The shortage terms are alternatives: under backordering \(\lambda_\ell = 0\); under lost sales \(\bar{B} = 0\); both appear only under partial backordering. Two terms are inert in a comparison of replenishment policies, with one exception: tiered prices make \(c\) depend on the order quantity.
Cost ranks alternatives without further judgment, which is why it is the objective. Its one decisive weakness: two terms need \(b\) or \(\pi\), which most organizations cannot defend. A measure that cannot be computed is not a measure.
| Measure | Definition | Averages over |
|---|---|---|
| Ready rate \(\overline{\mathit{RR}}\) | \(1 - \overline{\mathit{SO}}\): the fraction of time with stock | time |
| Transaction fill rate \(\overline{\mathit{FR}}\) | \(\frac{1}{n}\sum_i Y_i\), with \(Y_i = 1\) if transaction \(i\) is filled completely | transactions |
| Unit fill rate \(\overline{\mathit{FR}}_u\) | units filled from stock on arrival over units demanded | units |
| Cycle service level \(\mathit{CSL}\) | fraction of replenishment cycles with no stockout | cycles |
| Customer wait \(\overline{W}\) | \(\bar{B}/\lambda\), counting zero for units filled at once | units, by time |
A ten-unit order filled to nine scores 0.9 on the unit fill rate and 0 on the transaction fill rate. Which is right depends on the customer: ten independent issues, or a kit.
The cycle service level is the odd one: a cycle is defined by the policy, so it is a property of the system together with its policy. Convenient for setting a reorder point; treacherous for comparing alternatives, since a policy ordering more often is exposed to more cycles.
A location opens \([0, 5]\) with 10 units, receives nothing, and backorders unmet demand:
| \(t_i\) | \(D_i\) | On hand before | Filled now | Backordered | \(I(t)\) after | \(Y_i\) |
|---|---|---|---|---|---|---|
| 1 | 3 | 10 | 3 | 0 | 7 | 1 |
| 2 | 4 | 7 | 4 | 0 | 3 | 1 |
| 3 | 5 | 3 | 3 | 2 | 0 | 0 |
| 4 | 2 | 0 | 0 | 2 | 0 | 0 |
| 5 | 1 | 0 | 0 | 1 | 0 | 0 |
| Total | 15 | 10 | 5 | 2 |
\[ \overline{\mathit{RR}} = \frac{3}{5} = 60\%, \qquad \overline{\mathit{FR}}_{u} = \frac{10}{15} = 66.7\%, \qquad \overline{\mathit{FR}} = \frac{1}{5}\sum_{i=1}^{5} Y_i = \frac{2}{5} = 40\% \]
Three numbers from one history, none of them wrong. A report claiming “95% service” without saying which it means is not telling you very much.
The ready rate and the unit fill rate coincide when demand arrives one unit at a time in a Poisson stream: Poisson arrivals see time averages, so the fraction of arrivals finding the shelf empty equals the fraction of time it is empty. That is why they are used interchangeably for slow items demanded singly.
It stops being safe with batch demand: a stockout tends to be caused by a large transaction, so the arrivals that find the system short are systematically the big ones, and demand-weighted measures fall below the time-weighted one, as in the history just worked.
Choosing. What does the customer experience? A useless partial order: transaction fill rate. Units consumed independently: unit fill rate. Availability whenever needed: ready rate. Waiting that matters by its length: \(\overline{W}\). And what can the organization state without inventing a number? A tolerable wait and a fill rate are the two statements made most readily.
\[ \begin{aligned} &\min_{\text{policy}} \; k\overline{N} + h\bar{I} + b\bar{B} + \pi\lambda_{\ell} + f &&\text{the cost form}\\ &\min_{\text{policy}} \; k\overline{N} + h\bar{I} + f \quad \text{subject to} \quad \overline{\mathit{FR}} \ge \beta &&\text{the service-constrained form} \end{aligned} \]
These are the same problem: a shortage cost implies a service level and a target implies a shortage cost. Use whichever input the organization can defend.
| Chapter | Policy parameters | Terms that remain |
|---|---|---|
| Deterministic lot sizing | \(Q\) | \(k\overline{N} + h\bar{I}\), plus \(b\bar{B}\) with backorders |
| Dynamic lot sizing | An order quantity per period | \(k\overline{N} + h\bar{I}\), demand varying by period |
| Single period | \(Q\), chosen once | Overage against underage; \(k\) irrelevant |
| Continuous review | \(r\) and \(Q\) | All of it, or the service form |
| Multi-echelon | Levels at every location | Backorders summed, under a budget on stock |
Every parameter can be built from data already kept, and the marginality test decides each line: 11.3% for an owned depot, 13.9% once space is rented by the position.
\(k\) counts only what moves with the order count: $50, not $77.78, which would inflate every order quantity by 25%.
Shortage costs are replaced by service targets or recovered from existing rules; the four double counts are resolved by what each dollar scales with; and where a parameter is uncertain and decisive, report the break-even.
Service measures differ in what they average over: 60%, 66.7% and 40% from one history.
One problem, two forms, specialized chapter by chapter.
Read before next session: The Manager’s Problem and Grouping and Segmentation.
Today’s material was Estimating Cost Parameters from Standard Data and Performance Measures.
Next session:
Every model in the course is for one item. Next session asks what a manager does with forty thousand.