Skip to content

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.

Verified October 2026

Definitions below are current to the date above — verify against current SAP, Oracle, Microsoft, Infor, and Databricks documentation before you build.

Formula

Formula

DOS=∑iQioh∑idˉi\text{DOS} = \frac{\sum_{i} Q^{\mathrm{oh}}_{i}}{\sum_{i} \bar{d}_{i}}

In words

DOS = on-hand quantity ÷ average daily demand (declared window)

Where

ii
item × location in scope
QiohQ^{\mathrm{oh}}_{i}
current on-hand quantity
dˉi\bar{d}_{i}
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.

Related

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by SAP, Oracle, Microsoft, or Infor. Product names are trademarks of their respective owners.