K-06
Days of Supply (DOS)
How long would today's stock last — against trailing history or the forward plan, in units or dollars, and what do you report when demand is zero?
There is a reference build of this metric: the Inventory Health & Working Capital dashboard in the showcase runs this definition over frozen, simulated data — not a live client system.
Definitions below are current to the date above — verify against current SAP, Oracle, Microsoft, Infor, and Databricks documentation before you build.
Formula
Formula
In words
DOS = on-hand quantity ÷ average daily demand (declared window)
Where
- item × location in scope
- current on-hand quantity
- average daily demand over the declared trailing window or forward horizon
- Numerator
- Current on-hand at the declared scope
- Denominator
- Demand per day over the declared trailing window or forward horizon
- Grain
- Item × location — portfolio coverage from pooled numerator and denominator, never the average of item-level coverage
- Note
- DIO — average inventory value ÷ COGS per day — is the value-based form of this ratio and is defined under cash-to-cash.
What days of supply measures
Days of supply is on-hand quantity divided by average daily demand over a declared window: how many days current stock would last at the current consumption rate. Coverage for a scope is pooled — summed stock over summed demand — never the average of item-level coverage.
Days of supply is stock divided by a demand rate: how long what you hold would last at the pace you are consuming it. Weeks of supply and days on hand are the same ratio in different units, and days of inventory outstanding (DIO) — the cash-to-cash entry's inventory leg — is the value-based form of the same ratio, defined there rather than here.
The demand basis is the whole argument. Trailing days of supply divides by what actually shipped over some past window; forward coverage divides by what the plan says will ship. They agree in a steady-state portfolio and disagree exactly when it matters — on a ramp, into a season, on an item approaching end of life. Trailing coverage on a product about to be discontinued looks comfortable right up to the moment the demand stops.
The second thing to settle before publishing is what happens where demand is zero. Mathematically the answer is infinite; operationally those items are the most interesting inventory in the portfolio. Letting them drop out of the number, or letting them run to infinity inside an average, are both ways of not looking at them.
Also answers to DOS · DOH · Days on Hand · Weeks of Supply · Forward Coverage
The decision switches
Three switches. The first one has to be labeled on every chart, because trailing and forward coverage answer different questions and look identical.
Demand basis
- dependsTrailing average — stable and defensible, and structurally blind to ramps and end-of-life
- dependsForward forecast — what planners actually steer by — and it inherits every bit of forecast error
Practice default Trailing for scorekeeping, forward for steering — and label which one every chart is.
Units vs value
- dependsUnits — the operational read — how many days the warehouse can keep shipping
- dependsValue — days of inventory outstanding: comparable across items and legible to finance
Practice default Both have a place; never mix them inside a single view.
Zero-demand items
- dependsInfinite or excluded — silently drops the worst inventory in the portfolio out of the number
- dependsCapped and reported separately — keeps the items visible as their own population instead of as an outlier
Practice default Cap at the horizon and report the zero-demand bucket as its own count — that bucket is the excess and obsolete feed.
Common pitfalls
- Averaging coverage across items — The classic never-average-a-ratio failure. A mean of item-level days of supply is dominated by whichever items happen to have thin demand; pool the stock and pool the demand, then divide.
- Infinite days — Items with no demand either blow up the average or get quietly excluded, and both versions lie. Cap the value, and publish the count of capped items beside the number.
- Trailing and forward switched mid-deck — Two slides, two demand bases, one metric name — and an audience that reasonably assumes they are comparing like with like. Label the basis on the chart itself.
- Window sensitivity — A 30-day trailing window and a 90-day trailing window are different metrics that share a name, and the difference is largest exactly where demand is changing. Print the window.
- Coverage read off the planning grid — Coverage read off a planning grid carries two reading rules. The projected-balance row is a closing balance per bucket — a LAST, never a sum down the time axis. Bucket dates are a vendor rule: Oracle dates supply and demand to a non-daily bucket's last working day, firm, implement and input-data dates exempt, so finer coverage is precision the grid does not carry — an inference from that rule, not the grid: SAP's Advanced MD04 dates elements individually. Name your system's bucketing rule before quoting coverage finer than the bucket.
Store the components, not the ratio
Every switch above is a different way of reading the same underlying facts, so the components — quantities, dates, values, flags — are what belongs in the gold layer, never the finished percentage. Bronze keeps the source tables as extracted, silver resolves the encodings once, and gold carries a component-level fact that each variant of Days of Supply (DOS) reads as a SELECT — the pattern worked through in full in the OTIF entry’s landing pattern.