Jul 10, 2026~23 min readInventory & Retail Ops

The Inventory Health Playbook — Aging, Markdowns & the Economics of Letting Go

Every retailer has a mountain of stock that stopped selling, and a P&L quietly bleeding storage cost, trapped cash, and eventual write-downs. This is the analytics playbook for seeing the problem clearly, pricing the exit correctly, and — the hard part — acting early enough.

The Playbook

  1. 1. Why Inventory Health Is a P&L Problem, Not a Warehouse Problem
  2. 2. The Metrics That Actually Describe Health
  3. 3. Segmenting the Problem — The Health Matrix
  4. 4. The Economics of Waiting — Why Early Markdowns Win
  5. 5. Markdown Ladders & Depth Logic
  6. 6. The Exit Channel Stack
  7. 7. Provisions & NRV — Where Finance Meets the Warehouse
  8. 8. Prevention — The Buying-Side Fixes
  9. 9. The Operating Rhythm

Inventory health is the least written-about serious topic in e-commerce. Search for it and you'll find 3PL marketing posts and consulting one-pagers — nothing that shows the actual metrics, the actual economics, or the actual decision cadence. Which is strange, because for any retailer holding stock (1P retail, hybrid marketplaces, brands), slow-moving inventory is routinely the largest hidden loss line in the business: trapped working capital, storage fees, opportunity cost of warehouse space, and the write-down at the end.

This playbook is the missing document. It's written from the analyst's seat: what to measure, how to price the exit, and how to build the operating rhythm that stops the mountain from re-forming.

1. Why Inventory Health Is a P&L Problem, Not a Warehouse Problem

The cost of a unit that isn't selling has four parts, and only one of them is visible in most reports:

CostNatureTypical magnitude
Storage & handling Visible, recurring — per-cubic-meter fees, insurance, counts 15–30% of unit cost per year for slow movers
Cost of capital Invisible — cash in stock is cash not funding growth 8–15% of inventory value per year (your WACC)
Value erosion Invisible until realized — electronics obsolete, fashion out-of-season, expiry dates approach Category-dependent: 1–5% per month for electronics/fashion
Space opportunity cost Invisible — every pallet of dead stock displaces a pallet of A-SKUs during peak Spikes brutally in Q4 when warehouse capacity binds

Add them up and a typical slow-moving unit costs 2–4% of its cost value per month just by existing. That number is the engine behind every recommendation in this playbook: the option of "waiting for it to sell at full price" is not free — it has a precise, compounding price.

2. The Metrics That Actually Describe Health

Five metrics, each answering a distinct question. Most companies track only the first.

MetricDefinitionQuestion it answers
Aging brackets Stock value by time-in-warehouse: 0–30 / 31–90 / 91–180 / 180+ days How old is the problem?
Weeks of cover (WOC) Current units ÷ recent weekly run-rate How long until this sells out at current velocity? (∞ = never)
Sell-through rate Units sold ÷ (units received) over a season/window Did the buy match demand?
Inventory turns / DOH COGS ÷ average inventory; days-on-hand is the inverse The board-level capital efficiency number
Healthy stock % Share of inventory value that is <90 days old AND has WOC < threshold The single KPI to put on the exec dashboard
⚠️

The classic measurement mistake: aging alone. A 200-day-old SKU with 3 weeks of cover is fine — it's old stock that found its velocity. A 40-day-old SKU with 80 weeks of cover is a disaster in progress. Age tells you what already went wrong; cover tells you what's about to. Health = the two together, which is exactly what the matrix below does.

One implementation detail that matters: compute WOC on a recent velocity window (last 4 weeks, excluding stockout days — a zero-sales day with zero stock is not zero demand), and treat promo-driven spikes separately, or your "healthy" classification will flip-flop with every campaign.

3. Segmenting the Problem — The Health Matrix

Cross age with cover and every SKU lands in one of four boxes, each with one obvious action:

Low weeks of cover (selling)High weeks of cover (stuck)
Young stock Healthy. Protect availability, replenish, stockout-alert the A-SKUs 🟡 Overbought. Stop reordering NOW; mild price action; investigate the buy — this box is where disasters are cheap to fix
Old stock 🟢 Slow but alive. Let it drain; no panic markdowns; exclude from reorder 🔴 Dead stock. Exit program: markdown ladder → channel stack (section 6). Every week of delay costs 2–4%

Then rank within the red box by value at risk = cost value × monthly erosion rate, and work the list top-down. Ten SKUs usually cover half the problem value — inventory pain is always Pareto-shaped (see the SQL cookbook for the aging and ABC queries that produce this list).

4. The Economics of Waiting — Why Early Markdowns Win

Here's the argument that wins the markdown budget, laid out with real numbers. Take a unit that cost 100, priced at 140, that has stopped selling:

StrategyTimelineRecoveryHolding cost paidNet
Act early: −20% at day 90 Sells within ~6 weeks 112 ~8 (4 months total) +104
Wait and hope: hold until day 240, forced −50% Sells at ~month 9 70 ~22 (9 months) +48
Deny until liquidation: bulk exit at day 365 Liquidator pays 20–30% of cost 25 ~30 −5

The early markdown recovers more than twice the wait-and-hope path. This asymmetry has a name in fashion retail — "the first markdown is the cheapest markdown" — and it exists because two clocks run against you simultaneously: holding cost accrues, and the product's market value decays (season passes, newer models launch, competitors clear their own stock). Yet organizations systematically choose the middle row. Why?

The sentence to put on a slide

Aged inventory is a melting ice cube: every week of delay simultaneously raises what you've spent and lowers what you can recover. The markdown you're avoiding is almost always cheaper than the one you'll eventually take.

5. Markdown Ladders & Depth Logic

A markdown ladder is a pre-agreed escalation schedule — it removes the weekly renegotiation and the loss aversion from the process:

# A typical age-triggered ladder (tune brackets per category)
#   age 90+  and WOC > 26 :  -15%
#   age 150+ and still WOC > 26 :  -25%
#   age 210+ :  -40% + eligible for bundle/outlet
#   age 300+ :  exit channels (B2B/liquidation), any recovery > 0 beats holding

def markdown_step(age_days: int, woc: float, sell_through_7d: float) -> float:
    # escalate only if the previous step didn't restart velocity
    if sell_through_7d > 0.05:      # it's moving again — hold depth
        return 0.0
    if age_days >= 210: return 0.40
    if age_days >= 150 and woc > 26: return 0.25
    if age_days >= 90  and woc > 26: return 0.15
    return 0.0python

Principles that make ladders work in practice:

6. The Exit Channel Stack

Markdowns on your own storefront are only the first rung. The full stack, ordered by recovery rate:

ChannelTypical recovery (of cost)Best forWatch out
Own-site markdown 70–110% Anything with residual demand Cannibalization; brand-tier dilution
Flash sales / deal events 55–85% Mid-tail with deal appeal Deal-training your regulars (promo playbook, section 4)
Bundles ("free gift", multi-buy) 50–80% (hidden in the bundle) Low-value accessories & long tail; clears units without a visible price cut Operational picking complexity
Outlet section / outlet marketplace 40–70% Fashion, seasonal, cosmetically damaged / open-box Keep it separated from the premium storefront
B2B / wholesale exit 30–50% Large homogeneous lots; export to price-insulated markets Contractual channel restrictions from brands
Liquidators 10–30% The final 5% nothing else moved Grey-market resurfacing of branded goods
Donation / recycling 0% (+ possible tax relief, − disposal cost) Expired, unsellable, or when handling cost > recovery Do the math — sometimes this genuinely beats a 10% liquidator offer net of logistics

The operating principle: every SKU in the red box gets an assigned channel and a deadline. The stack is a waterfall — items that fail a channel's timeline drop to the next. What kills recovery is not choosing a low channel; it's items floating channel-less for months while their value melts.

7. Provisions & NRV — Where Finance Meets the Warehouse

This is the part analytics people usually don't know, and it's why finance suddenly cares about your aging report at quarter-end. Accounting standards (IAS 2) require inventory to be held at the lower of cost and NRV — net realizable value: the price you can actually sell it for, minus the costs of selling it. When expected recovery falls below cost, the company must book a provision (write-down) — a direct P&L expense, now.

💡

Career note for analysts: being the person who connects the warehouse view (aging, WOC) to the finance view (provisions, NRV, working capital) makes you unusually valuable — that bridge is chronically understaffed in most retail organizations, and it's where inventory decisions actually get made.

8. Prevention — The Buying-Side Fixes

Exit programs treat symptoms. The disease is over-buying, and it has known analytics fixes:

  1. Close the loop to the buyer. Sell-through by buy decision, per buyer, per season — reviewed openly. Most organizations never show buyers the aged outcome of their purchase orders; the feedback loop alone changes behavior.
  2. Buy to quantiles, not averages. Order quantity should come from the demand distribution and the newsvendor logic (overage cost vs underage cost), which is exactly what quantile forecasts provide — see the ML playbook, section 4.
  3. Smaller first buys, faster re-buys. Where supplier lead times allow, shift from one season-sized bet to test-and-chase: initial buy covers the lead time, re-order the winners. Inventory risk drops roughly with the square root of order frequency.
  4. New-item WOC alerts at day 30–45. The yellow box (young + overbought) is where intervention is cheapest — a supplier return, order cancellation, or early mild markdown at day 40 beats any liquidation at day 300.
  5. Assortment discipline on the C-tail. Every quarter, the ABC analysis (SQL cookbook, pattern 5) should kill SKUs. A catalog that only grows is a warehouse that only ages.

9. The Operating Rhythm

The analytics is necessary but not sufficient — the cadence is what makes it work:

CadenceRitualOutput
Weekly Health matrix refresh; ladder triggers fire; new entries to the red box flagged Automated markdown list + channel assignments
Monthly Aged-stock review: value by bracket vs target, recovery rate by channel, top-20 value-at-risk items with owners Decisions on escalations; buyer feedback loop
Quarterly Provision alignment with finance; ladder depth calibration from realized elasticities; C-tail assortment kill list Updated policy parameters; catalog pruning

And one scoreboard metric over it all: healthy stock % of total inventory value, trended weekly, target agreed with leadership. When that number is on the exec dashboard, everything else in this playbook acquires an owner.

💬

This is the playbook I wish existed when I started working on liquidation analytics. If you're building one inside your company and want to compare notes: sharmavikas.9798@gmail.com.

Sources & Further Reading:
Umbrex: Markdown OptimizationInventory Aging ReportsBoF: Managing MarkdownsThe Newsvendor Model

Enjoyed this? Leave a clap (or twenty)