For a seasonal-collection fast-fashion retail chain, a fresh-food chain, or a short-shelf-life retailer, the decision of monotonically reducing price over the selling season to clear stock — when and by what percentage. In the operations research literature: Markdown Pricing — Smith-Achabal (1998), Bitran-Mondschein (1997), Caro-Gallien (2012).
In plain words
Sound familiar?
- We're a seasonal-collection fast-fashion retail chain with 200-1,000 SKUs; each season (summer/winter) a new collection arrives, after 4-12 weeks we have to clear unsold stock — we use 'add 10% off each week' as a rule and don't know how far we are from optimal.
- We run a 30-100 store apparel-shoes-accessories chain; end-of-season unsold stock turns into dead stock at 20-35%, sold at salvage prices or donated.
- We're a fresh-food chain (greengrocer, bakery, butcher, ready-meals) operator; daily items have to be cleared near shelf-life expiry — '30% off after 6 pm' is rule-based; which SKU clears at what hour with what discount is not analysed.
- We're an e-commerce retailer; fashion-sensitive SKU prices can be updated daily — but 'what price on which day' is set by the planner's intuition, price elasticity is not quantified.
- Mid-season a competitor suddenly opened 40% off; we responded with 30% off, but which SKU at what percentage was optimal — were we late or early — we cannot measure.
- We have a brand-image concern: management worries 'deep discounts erode premium perception', but 'how deep is the acceptable end-of-season dead-stock floor' is not numerically answered.
- Each end-of-season closing 'what was the actual gross margin this season' is intuitive — a simulation of 'what if markdown timing had been optimal' does not exist.
- We rely on a single-vendor retail pricing platform; a 'markdown optimisation' module is included but which academic approach (Smith-Achabal, Bitran-Mondschein, Bayesian) it uses is not transparent.
Why it matters
How it's solved
Technical depth
How it's solved
Technical depthIn one sentence: At season start, estimate the price elasticity of demand for each SKU (how much does a 1% discount lift demand); over the remaining weeks until season end, choose the per-week price by dynamic programming (backward induction — from end to start) — total profit (including residual end-of-season recovery value) is maximised under a brand-protecting maximum-discount cap.
In Operations Research (the discipline that uses math and computers to solve business decisions) and retail-pricing literature this problem is called Markdown Pricing or Dynamic Pricing for Perishables. The academic foundations were laid in the late 1990s and early 2000s: deterministic dynamic programming, Poisson-demand stochastic DP, comprehensive surveys and real-world pilots at fast-fashion retailers. The solution runs in three stages:
1. Modelling — season calendar + demand-price curve + monotone-decrease constraint. Input data: (a) season calendar — start date (e.g. summer collection March, winter collection September), end date (4-12 weeks later), weekly or daily decision points, (b) SKU data — initial stock per SKU (store + warehouse total), full price (start-of-season list), cost, category (fashion-sensitive / basic, season-specific / continuous, retailer-exclusive / brand), (c) demand-price curve — for each SKU expected weekly demand at full price plus price elasticity (a 1% price drop raises demand by what %); elasticity is estimated from past-season data (at least 4-8 seasons of history) via regression or similar-product analogy, (d) dead-stock salvage value — what an unsold unit recovers after season (salvage, donation value, disposal cost), (e) constraints — markdown step (e.g. 10/20/30/40/50% panel), maximum discount cap for image protection (e.g. ≤50%), monotone markdown (price decreases over time, does not bounce — the core distinction from Revenue Management), minimum-price (no below-cost sales, or capped at how low). Decision variables: per SKU × per week, the markdown percentage from the panel; or a simpler form, ‘when first markdown, what percentage; when second, what percentage’. Objective: maximise total season profit = sum over (SKU, week) of (price - cost) × sales[SKU, week] + end-of-season salvage value.
2. Solution — Smith-Achabal deterministic, Bitran-Mondschein stochastic, Bayesian learning + Thompson sampling. Smith and Achabal (1998) deterministic dynamic programming — demand curve is taken as deterministic, backward induction computes the optimum price for each week; simple and fast, hand-computable at single-SKU + single-store scale; solved per SKU (multi-product cannibalisation ignored). Bitran and Mondschein (1997) stochastic dynamic programming — demand is Poisson, prices update weekly, backward induction sets the optimum policy; mid-scale (50-300 SKUs) solves in minutes on a solver. Multi-product MIP — cannibalisation effects (mark-down on SKU X also hits sales of SKU Y) included; an MIP over season calendar × SKU panel × markdown panel solves in minutes-hours on a mature commercial or open-source solver (200-1,000 SKUs). Bayesian dynamic pricing + Thompson sampling — demand elasticity uncertain, Bayesian updates as each week’s sales come in, Thompson sampling balances exploration-exploitation; the modern approach for daily e-commerce repricing; Caro-Gallien (2012) applied this class in a fast-fashion pilot. Heuristic markdown + simulation — a simple rule (e.g. ‘mark down 20% when sell-through falls below x’, ‘30% off three weeks before season-end’) is tested in simulation — not as good as the academic optimum, but a practitioner-favourite middle ground for implementation simplicity. End-of-season disposal policy — where unsold stock goes (outlet, donation, disposal, carry-over to next season) is a separate decision; in the markdown model this enters as the salvage value.
3. Field integration — price panel + approval workflow + end-of-season calibration. The output is four-layered: (a) weekly price recommendation panel — for each SKU × each week, suggested price, expected sales, expected end-of-season stock, gross-margin contribution; store manager and category manager see it, (b) markdown calendar visualisation — Gantt-like view: which SKU is on which discount band in which week; approved at season start, revised on ETA deviations, (c) competitor-pricing tracker report — daily or weekly competitor-price signal, alerts when deviation > X% along with recommendation revision, (d) end-of-season performance + calibration report — actual vs forecast sales, price-elasticity deviation, dead-stock ratio, gross margin; this report updates next season’s model. Upper-layer integration: product information management (PIM — SKU catalogue), point-of-sale (POS — actual sales feed), e-commerce platform (online pricing API), warehouse/store stock system (WMS), category-manager approval workflow. Approval workflow is critical: optimal suggestions are not auto-applied — the category manager approves (especially for changes over X%); brand-image and brand-positioning remain human judgments. End-of-season committee (quarterly — after every season): actual vs plan gross margin, dead-stock ratio, elasticity calibration, lessons for the next season’s model.
Alternatives
Manual + spreadsheet markdown rule
FreeZero license
Who it fits: Small retailer (single store, <100 SKUs/season), simple collection
- + Zero software cost
- + Category manager's field instinct foregrounded
- + Single-number markdown rule (e.g. 10% at week 4, 20% at week 6, 30% at week 8) applied quickly
- + Short approval cycle
- − Beyond 100 SKUs an SKU-level time-price curve cannot be built manually
- − Price elasticity not estimated, only intuitive
- − Dead-stock ratio 20-35% — an optimum rule could cut it 20-30%, but is not measured
- − Competitor-price tracking is lagged — manual store visits / online scans
- − End-of-season calibration (actual vs plan analysis) is not written down
Open-source solver + custom markdown model
Open SourceLicense free; 12-24 weeks internal development or 500K-1.5M TRY consulting
Who it fits: Mid-size retailer with a tech team, PIM/POS integration desired
- + No licence cost
- + Deterministic and stochastic markdown schedules plus Bayesian dynamic-pricing approaches are mature in the open-source literature
- + Price-elasticity model can be calibrated from the retailer's own data
- + Multi-product cannibalisation module extendable
- + Open code — transparency auditable
- − Internal OR + data-science + integration teams required
- − Carrying an academic prototype to a production system takes 6-12 months
- − Approval workflow + UI need to be built
- − Maintenance responsibility on the retailer
Retail pricing platform with a markdown module
Enterprise400K-2M TRY licence + 150K-600K TRY/year maintenance (regional SMB pricing)
Who it fits: Mid-large retail chain (30-150 stores, 500-3,000 SKUs/season), PIM/POS/e-commerce integrated
- + Markdown module ready (academic libraries inside)
- + PIM + POS + e-commerce + WMS integrated
- + Approval workflow + competitor-pricing tracker integrated
- + Operational support + training
- + Local-language interface and support
- − Which academic approach is used may not be transparent
- − Elasticity calibration model is often a black box — negotiable
- − High licence + long (9-15 month) rollout
- − Local-regulation customisation adds project length
- − Single-vendor lock-in risk
International retail OR platform + custom markdown model
Enterprise1-4M EUR licence + 300K-1M EUR/year maintenance
Who it fits: Large retail chain (150+ stores, 3,000+ SKUs/season, multi-country + e-commerce + multi-brand)
- + Deterministic markdown DP + stochastic markdown DP + Bayesian dynamic pricing + exploration-exploitation sampling integrated
- + Mature multi-product cannibalisation module
- + Multi-channel coordination (store + e-commerce + outlet)
- + Rich competitor-price scrape + signal module
- + Transparent methodology — margin and dead-stock gain claims can be independently verified
- − High licence + long (12-24 month) rollout
- − Local-regulation customisation adds project length
- − Internal OR + integration teams required
- − Broad scope — may be overkill at mid-size
Recommendation
Ask in the meeting
- What does the markdown optimisation engine run underneath — a deterministic dynamic program, a Poisson-demand stochastic dynamic program, Bayesian learning with exploration-exploitation sampling, a multi-product MIP, or a heuristic/rule-based engine? Is the chosen variant documented in the spec?
- How is price elasticity estimated — past-season regression, similar-product analogy, or user-entered? How is estimation error reported?
- How is the monotone-decrease constraint (price falls over time, does not rebound) expressed in the model? Are rebound exceptions (campaign ends, price returns) supported?
- Is multi-product cannibalisation (markdown on SKU X also affects sales of SKU Y) modelled, or do SKUs solve independently?
- Is the image-protection maximum-discount cap (e.g. ≤50%) supported? How is the dead-stock acceptance floor set under the cap?
- Is there a competitor-price tracker — is daily/weekly competitor signal auto-integrated or user-entered? Are signal-triggered markdown revisions generated?
- In a pilot using real operational data (12-16 weeks including one season-end), how would the platform present savings vs the prior manual rule — gross margin +X%, dead stock -X%, clearance rate +X%?
- If the contract ends, in what standard format can we export markdown history, price-elasticity calibration record, end-of-season performance data, and algorithm parameter choices?
Technical details
Editor’s note
On the operations floor this problem is called “end-of-season discount”, “outlet pricing”, “clearance”, or “stock clearing”. The academic name is Markdown Pricing or Dynamic Pricing for Perishables; the classical references are Smith-Achabal (1998) deterministic and Bitran-Mondschein (1997) stochastic formulations. The modern survey is Elmaghraby-Keskinocak (2003), the canonical book is Talluri-van Ryzin (2004), and the famous application paper is Caro-Gallien (2012) — a real pilot and rollout at a fast-fashion retailer.
Distinction from #006 Revenue Management: Revenue Management sets prices for fixed-capacity + perish-on-time products (airline seats, hotel rooms, event tickets) with a dynamic up-down trajectory (up when demand is high, down when low); the capacity does not deplete at season-end but is reset every day. Markdown Pricing sets prices for stock-bound + season-bound products with a monotone-decreasing trajectory (down over time, no rebound); the stock does not reset at season-end and the surplus turns into dead stock. The two problems sit next to each other in the same RM book but their mathematical formulations differ.
Distinction from #011 Newsvendor: Newsvendor is the single-period order-quantity-before-the-season decision (‘how many shall I order at the start’); markdown is the within-season decision (‘at what price shall I sell, when to mark down’). They are sequential: first newsvendor sets the order quantity, then markdown sets the price trajectory within the season.
Distinction from #017 Assortment Planning: Assortment Planning is the ‘which SKUs are on the shelf’ decision (start-of-season listing); markdown is the ‘at what price are the shelved SKUs being sold’ decision (within-season pricing). The assortment decision happens first, then the markdown trajectory is built.
The point most often missed in the field: price elasticity estimation. Academic markdown models take price elasticity (a 1% price drop raises demand by what %) as input; practitioners do not compute it, they use intuition. Caro and Gallien (2012) showed at a fast-fashion retailer that elasticity estimation + dynamic optimum lifted clearance margin by 5-8% above the ‘add 10% off weekly’ rule — pure margin recovered from the practitioner rule. Elasticity can be category-level (fashion-sensitive items have high elasticity, basic items low), SKU-level, or segment-level; estimated from past-season regression or similar-product analogy. Unless estimation error is measured, the algorithm ’looks optimal’ but recommends the wrong action on the ground; end-of-season calibration is mandatory.
Second overlooked point: the importance of the monotone-decrease constraint. In the markdown literature, price is monotonically decreasing over time (does not rebound); this constraint comes from customer waiting behaviour — if customers expect ’the price will fall later’, they wait, and a buyer who paid full price will regret it. Rebound exceptions (campaign ends, price returned to base) exist, but the academic baseline formulation assumes monotone decrease — this is the core mathematical distinction from Revenue Management (dynamic up-down).
Third overlooked point: multi-product cannibalisation. A markdown on one SKU also affects sales of other SKUs in the same category (‘I’ll take the discounted jumper, skip the full-price one’). When SKUs are solved independently, total-profit forecasts are wrong. Modelled via multi-product MIP or a cross-elasticity matrix; computation cost grows with scale but mid-size problems remain solvable.
Fourth overlooked point: brand-image constraint. Very deep discounts erode the premium perception; academic markdown models express this as a maximum-discount cap (e.g. ≤50%). Below the cap a certain dead-stock fraction is accepted; above the cap, outlet transfer or donation. Practitioners adjust this balance intuitively, never quantitatively; an academic formulation makes the image-protection vs dead-stock-clearance trade-off explicit.
A step-by-step path for an SMB
Stage 1 — Measure first, plan later. At least 4-8 seasons of past data (summer/winter collections): for each SKU, weekly sales quantity, weekly price (full price + applied markdown percentages), end-of-season residual stock, end-of-season disposition (outlet, donation, disposal), cost. Category taxonomy: fashion-sensitive / basic, season-specific / continuous, retailer-exclusive / brand. Has a competitor-pricing data feed been set up — if not, start with weekly manual rounds.
Stage 2 — Estimate price elasticity. Category-level regression on past-season data: across same-category SKUs measure the demand response to price change. Fashion-sensitive categories have high elasticity (typically -2 to -4), basic categories low (typically -0.5 to -1.5). Report estimation error (R² or MAPE). Knowledge capital: category × markdown-percentage × week matrix.
Stage 3 — Pilot. 12-16 weeks (including one season-end). For a sub-set (e.g. 50-100 SKUs, single category) run a Smith-Achabal deterministic markdown recommendation system in parallel with the current manual rule. The category manager still decides; the algorithm makes recommendations through the approval workflow. Written success criteria, before the pilot: gross margin +5% minimum, dead stock -15% minimum, end-of-season clearance rate +20% minimum.
Stage 4 — Rollout. Over 12-18 months expand to full SKU scope + multi-product cannibalisation + competitor-pricing signal + e-commerce integration. End-of-season committee (quarterly): actual vs plan gross-margin analysis, elasticity calibration update (after every season), brand-image cap revision, lessons for next season’s model.
Risks — what can go wrong
Price-elasticity estimation deviation. Elasticity estimated wrongly at the category or SKU level — the algorithm finds a wrong optimum. E.g. ‘fashion-sensitive jumper category elasticity is -3’ was assumed, but reality is -1.5; the algorithm recommends overly-early markdowns and margin erodes. Fix: end-of-season calibration (actual vs estimate deviation), separate calibration per category, R² > 0.6 minimum threshold.
Competitor-pricing lag. A competitor opened a discount 1-2 weeks ago and the system missed it — our prices became uncompetitive so sell-through dropped dramatically, the algorithm interpreted ‘demand is weak’ and suggested even-deeper markdowns. Fix: daily competitor-price scrape/signal module, signal-triggered revisions, hourly fast-approval authority for the category manager.
Brand-image erosion. The optimum markdown fully clears dead stock at season-end but requires 60-70% off; premium perception erodes over 1-2 seasons, future full-price sales also drop (long-term image damage). Fix: maximum-discount cap (≤50%), transfer above-cap items to outlet / donation channels; the image-vs-dead-stock trade-off is set in writing with the category manager.
Single-vendor retail pricing platform lock-in. If the contract has no “annual export of markdown history, elasticity calibration, end-of-season performance data, competitor-pricing signal archive in standard format” clause, changing vendor costs the retailer its cross-season calibration memory. Markdown systems run 5-15 years — single-vendor dependence is a long-term risk.
A technical view of the solution method
| Approach | Typical scale | Solve time | Guarantees optimum? |
|---|---|---|---|
| Manual rule (‘add 10% each week’) | Small (<100 SKUs) | instant | No, 50-70% optimum |
| Smith-Achabal deterministic DP | Mid (100-500 SKUs) | seconds-minutes | Yes (under deterministic demand) |
| Bitran-Mondschein stochastic DP (Poisson) | Mid (100-500 SKUs) | minutes | Yes (under Poisson assumption) |
| Multi-product MIP (cannibalisation) | Mid-large (200-1,000 SKUs) | minutes-hours | Yes (within bound) |
| Bayesian dynamic pricing + Thompson sampling | E-commerce daily, large SKU pool | continuous | No, regret-bound guaranteed |
| Heuristic markdown + simulation | Any scale | seconds-minutes | No, practical quality |
Objective function choice:
- Objective 1 — Season profit maximum: Classical; markdown + full-price + end-of-season salvage sum.
- Objective 2 — Gross-margin percentage maximum: Premium-image focus.
- Objective 3 — Dead stock minimum (end-of-season clearance): When the acceptable end-of-season residual is low.
- Objective 4 — Multi-objective (profit + image + dead stock): Pareto-front or weighted sum.
Markdown variants — pick by field:
- Classical Markdown (Smith-Achabal): Single-SKU + single-store, deterministic demand curve, backward-induction DP.
- Stochastic Markdown (Bitran-Mondschein): Poisson demand, stochastic DP, expected profit maximisation.
- Multi-product Markdown: Cannibalisation-aware, MIP or cross-elasticity matrix.
- Multi-store Markdown: Inter-store stock transfer + local-price differentiation.
- Online / e-commerce Markdown: Bayesian learning + Thompson sampling, daily repricing.
- Promotion-based Markdown: Discount not continuous but in campaign windows; season-calendar + campaign-calendar.
- Markdown + End-of-season Disposition: Outlet / donation / carry-over decisions integrated.
- Markdown + Stock Redistribution: Inter-store transfer + markdown jointly optimised.
Academic references
Listed in the sources block of this page’s frontmatter. Smith and Achabal (1998) and Bitran and Mondschein (1997) in Management Science — the two foundational markdown-pricing references; Elmaghraby and Keskinocak (2003) the comprehensive survey; Talluri and van Ryzin (2004) the canonical book; Caro and Gallien (2012) in Operations Research — a real pilot at a fast-fashion retailer, very famous in the OR application literature. INFORMS Interfaces and Operations Research archives carry many retail-markdown field cases.
Sources
- Smith, S. A. and Achabal, D. D. (1998). Clearance pricing and inventory policies for retail chains. Management Science, 44(3), 285-300. The foundational empirical study of markdown pricing on US large retail chains.
- Bitran, G. R. and Mondschein, S. V. (1997). Periodic pricing of seasonal products in retailing. Management Science, 43(1), 64-79. Stochastic dynamic program with Poisson demand.
- Elmaghraby, W. and Keskinocak, P. (2003). Dynamic pricing in the presence of inventory considerations: Research overview, current practices, and future directions. Management Science, 49(10), 1287-1309. Comprehensive survey.
- Talluri, K. T. and van Ryzin, G. J. (2004). The Theory and Practice of Revenue Management. Springer. Canonical revenue-management reference (includes a markdown chapter).
- Caro, F. and Gallien, J. (2012). Clearance pricing optimization for a fast-fashion retailer. Operations Research, 60(6), 1404-1422. Real pilot and rollout at a fast-fashion retailer — a very famous OR application paper.
- YÖK Thesis Centre — keyword: ‘markdown’, ‘season-end pricing’, ‘dynamic pricing’ — 15+ theses from TR academia. tez.yok.gov.tr
Glossary
- Markdown Pricing
- Retail OR practice of setting a typically monotone-decreasing price trajectory over the selling horizon of a seasonal or perishable item to balance margin against end-of-season dead-stock risk.
- Dynamic Pricing for Perishables
- Broader class of OR pricing problems where item value declines over time (fresh food, fashion, electronics with new generations, hotel rooms past arrival date) and prices must adapt — monotonically decreasing or up-down.
- Revenue Management
- Setting dynamic prices for fixed-capacity, perishable inventory (hotel rooms, airline seats, event tickets) based on demand.
- Newsvendor
- Classical single-period inventory model that gives the optimal order quantity for perishables, balancing spoilage and lost-sale costs.
Related problems
Dozens of SKUs from the Same Supplier — At What Frequency Do I Order Each So Trucks and Stock Cost Are Minimum Together?
This page is for an SMB wholesaler, importer or manufacturer pulling 50-500 SKUs from the same supplier — typically across 3-15 main suppliers. The weekly question is the same: from this supplier, which products should ship today and which can wait until next week? If every product triggers its own order, the same supplier ends up sending three trucks and three customs filings a week; one truck, one customs filing and one setup cost can cover all of it if the groups are right. Manual planning falls apart past 50 SKUs: some weeks a half-empty truck, others three back-to-back orders — fixed costs come back as 5-15% of unit product cost.
How Much of Each Product Should I Order So I Neither Run Out Nor Pile Up?
Written for retail, e-commerce, or manufacturing SMBs managing 500-5,000 SKUs. If your purchasing team still places orders every month from a spreadsheet using last-three-months average plus ten percent, and yet you see empty shelves and clogged warehouses at the same time, you are in this problem. When the same company carries both stockouts (5-15% lost sales) and dead inventory (10-25% capital tied up), intuition has hit its limit: seasonality, lead-time uncertainty, and slow-moving SKUs cannot be corrected by hand item-by-item. Systematic forecasting paired with an inventory policy typically frees 1.8-5.4M TRY/year of working capital on 50M TRY revenue and lifts the service level from roughly 85% to 95%.