Markdown Optimisation
Finite-season pricing · Stochastic DP
A retailer starts a season with inventory \(I_0\) and chooses a nonincreasing price path \(p_1 \geq p_2 \geq \cdots \geq p_T\) to clear stock at maximum revenue. Exact solution is a stochastic dynamic program over (period, inventory, price-level) states. Foundational papers: Smith & Achabal (1998); Bitran & Mondschein (1997); Caro & Gallien (2012) on Zara.
Why it matters
Scale of markdown in retail · documented operational lift
Where the decision sits
Fashion season · seasonal merchandise · end-of-life electronics
Markdown decisions apply whenever a retailer holds a fixed starting inventory facing a fixed selling window. Price can be cut but typically not raised (regulatory + customer-expectation constraint); demand responds to price; inventory not sold by the season end has only salvage value. Examples: fashion apparel (8-12 week season), seasonal holiday goods, end-of-life electronics, produce approaching its sell-by date, event merchandise. In a multi-period (s,S) replenishable setting the markdown question disappears; in single-lot settings it is often the dominant revenue lever.
Problem & formulation
Stochastic DP with nonincreasing price constraint
Sets and indices
| Symbol | Meaning | Domain |
|---|---|---|
| \(t \in \{1, \ldots, T\}\) | Period in the finite selling season | discrete |
| \(p \in P\) | Allowed price level (full, −30%, −50%, −70%, clearance) | discrete, ordered |
Parameters
| Symbol | Meaning | Unit |
|---|---|---|
| \(I_0\) | Initial season inventory (buy quantity) | units |
| \(d(p)\) | Expected single-period demand at price \(p\) | units / period |
| \(v\) | Salvage value per unit not sold by \(T\) | $ / unit |
| \(\gamma\) | Discount factor per period (often 1 within one season) | \(\in (0, 1]\) |
Decision variable
| Symbol | Meaning | Domain |
|---|---|---|
| \(p_t \in P\) | Price chosen for period \(t\) (possibly depending on observed state) | discrete |
State and Bellman equation
State is the triple (period, remaining inventory, current price level) — the last needed to enforce the nonincreasing constraint. Under the expected-demand approximation (replace random demand by mean \(d(p)\)):
Boundary: \(V(T+1, I, \cdot) = v \cdot I\). Solve backwards from \(t = T\).
Stochastic variant
When demand is random \(D_t(p)\), take expectations inside:
Demand model
The three families used most in the markdown literature:
Smith & Achabal use linear; Bitran & Mondschein use exponential and iso-elastic.
Deterministic LP relaxation
Drop the nonincreasing constraint and the min with inventory:
When demand functions are identical across periods, the LP yields a constant price. Markdowns emerge only when inventory is too deep for the constant-price plan to clear by \(T\).
Real-world → OR mapping
How a merchant’s vocabulary translates to the DP
| On the sales floor | In the DP |
|---|---|
| Season length (weeks) | \(T\) |
| Pre-season buy quantity | \(I_0\) |
| Allowed markdown depths (list, 30% off, 50% off, clearance) | \(P\) |
| Sell-through at price \(p\) | \(d(p)\) |
| Clearance / liquidation per unit | \(v\) |
| Weekly price decision | \(p_t\) |
| Season-end leftover | \(I_T\) |
Interactive solver
Expected-demand DP on a discrete price ladder; re-solve in browser
Under the hood
We discretise the state space over \((t, I, p_{\text{prev}})\) with \(I \in \{0, 1, \ldots, I_0\}\) and iterate the Bellman equation backward from \(t = T+1\) (salvage) to \(t = 1\). At each state we evaluate all admissible prices \(p \leq p_{\text{prev}}\), compute per-period sales as \(\min(\max(d(p), 0), I)\) using linear demand \(d(p) = a - b\,p\), and keep the price that maximises period revenue plus continuation value. The optimal policy \(p^{\ast}_t(I)\) is extracted by a forward pass. Full DP runs in \(\mathcal{O}(T \cdot I_0 \cdot |P|^2)\); for \(T=6\), \(I_0=200\), \(|P|=5\) that’s ~30,000 operations — sub-millisecond in the browser.
Reading the solution
What a merchant actually does with the optimal policy
Three patterns to watch for
- Hold-at-full vs markdown-early. When demand at full price is strong relative to inventory, the policy holds full price most of the season and marks down only at the end. When inventory is deep, the policy moves to middle price levels early.
- Monotone steps down. Because of the nonincreasing constraint, the policy is always a step function. Gaps between levels tend to be wide — one 30%-off, one 50%-off — because the discrete menu \(P\) forces jumps.
- Endgame clearance. In the last one or two periods, if inventory remains above what full price can sell, the DP skips intermediate levels and goes straight to the deepest price. This is the “clearance rush” every retailer recognises.
Sensitivity questions the model answers instantly
- Add a depth between 30% and 50%? — finer \(P\) often lifts revenue; try \(p_{2.5} = 25\).
- Tighter pre-season forecast (lower \(I_0\))? — the policy holds full price longer and marks down less. Inventory discipline beats pricing discipline.
- Salvage drops to zero (destruction instead of outlet resale)? — optimal policy becomes more aggressive in early markdowns.
Model extensions
From single-SKU baseline to retail-OR variants that matter
Stochastic demand
Replace expected-demand recursion with expectation over the demand distribution. State unchanged; value function becomes an expectation.
Multi-product markdown
Shared promotion budget or shared shelf constraint across SKUs. Cross-product cannibalisation makes the problem a stochastic program or approximate DP.
Clearance-deadline constraint
Force \(I_T = 0\) (regulatory or contractual end-of-season clean-out). Adds terminal penalty; optimal policy marks down faster.
Markdown with demand learning
Price probes demand. Bayesian updating of \(a, b\) after observed sales. See Dynamic Pricing with Learning.
Strategic consumers
Customers anticipate markdowns and wait. Caro & Gallien 2012; Cachon & Swinney 2011. Quick-response inventory mitigates the strategic wait.
Fashion buying →Competitive markdown
Competitor pricing affects demand; problem becomes a stochastic game. Nash-Markov equilibria are the standard solution concept.
Pre-season buy + markdown
Jointly decide \(I_0\) and the markdown schedule before observing demand. Link to newsvendor.
Newsvendor →Revenue-management framing
Finite capacity (= inventory) plus intensity-based demand gives the classical RM formulation. Talluri-van Ryzin 2004.
Revenue management →Key references
Foundational markdown and clearance-pricing literature
Back to the retail domain
Markdown optimisation sits in the Price × Tactical cell of the 4P decision matrix — the revenue lever that rescues seasonal inventory from total loss.
Open Retail Landing