Jul 11, 2026~24 min readPricing

The Pricing Analytics Playbook — Price Image, Elasticity & the Margin Waterfall

A 1% improvement in price realization is worth more than a 1% traffic increase, at zero marketing cost. This is the analytics that finds it: KVIs and price image, competitive indexing done honestly, a practical elasticity recipe with all its traps, and the governance that makes price changes stick.

The Playbook

  1. 1. Price Image ≠ Price Level
  2. 2. KVIs — Finding the SKUs That Carry Your Reputation
  3. 3. The Competitive Price Index, Done Honestly
  4. 4. Elasticity from Historical Data — The Recipe and the Traps
  5. 5. Testing Price Changes Without an A/B Test
  6. 6. The Margin Waterfall — Where Price Realization Leaks
  7. 7. Price Architecture Quick Wins
  8. 8. Governance — The Part That Actually Determines Success

Pricing content online splits into two camps: consulting frameworks with no math (McKinsey-style) and vendor pitches for pricing software. This playbook is the missing middle — what an analyst actually does to measure price position, estimate response, and move prices with confidence, using the data warehouse you already have.

1. Price Image ≠ Price Level

The foundational insight of retail pricing: customers don't know most of your prices. They form a "price image" — cheap, fair, expensive — from a small set of products they buy often and compare actively, then generalize it to your whole catalog. The strategic consequence is enormous:

You can be priced sharp on the ~5–10% of SKUs that build price image and recover margin on the long tail customers never compare — and be perceived as cheaper than a competitor with a lower average price who mismanages their visible items.

This is why blanket strategies ("match competitor X everywhere" or "cost-plus 20% everywhere") are both wrong: the first gives away tail margin for invisible sharpness; the second loses the image battle on the items that decide it. Every serious pricing operation therefore starts by splitting the catalog into KVIs (key value items) and the background assortment.

2. KVIs — Finding the SKUs That Carry Your Reputation

KVI identification is a scoring exercise on signals you already have:

SignalWhy it marks a KVIWhere to get it
Purchase frequencyBought often = price rememberedOrders table
Traffic & search volumeHighly viewed = highly comparedPDP views, search logs
Price-comparison exposurePresent on comparison engines, competitor overlapCompetitor matching (below)
Measured elasticityDemand actually responds to priceSection 4
Basket-starter roleFirst item in baskets → drives the tripOrder item sequence

Score, rank, and take the top slice per category — typically 5–10% of SKUs covering 30–50% of volume. The pricing policy then splits: KVIs get competitive index targets and tight monitoring; the tail gets margin targets and elasticity-informed room. Most of the margin you'll recover in a pricing program comes from the tail items that were needlessly matched to competitors for years.

3. The Competitive Price Index, Done Honestly

The standard metric: CPI = Σ(your price × weight) ÷ Σ(competitor price × weight) — 100 = parity, 102 = you're 2% more expensive. Three decisions determine whether yours means anything:

💡

Report the distribution, not just the average. "CPI 101" can hide "30% of KVIs are >5% overpriced and 25% are needlessly underpriced." The action list lives in the tails: the overpriced visible items (fix for image) and the underpriced ones (harvest quietly).

4. Elasticity from Historical Data — The Recipe and the Traps

Elasticity — % volume change per 1% price change — turns pricing from opinion into arithmetic: an item at elasticity −0.6 gains profit from a price increase; at −2.5 it loses badly. The basic estimation is a log-log regression on your own price history:

# log(units) = a + e·log(price) + controls — the coefficient e IS the elasticity
import statsmodels.formula.api as smf

model = smf.ols(
    "log_units ~ log_price"
    " + promo_flag"          # CRITICAL — see trap 1
    " + stockout_share"      # days item was unavailable
    " + C(month)"            # seasonality
    " + log_comp_price",     # competitor price → cross-elasticity
    data=weekly_sku_data,
).fit()

elasticity = model.params["log_price"]python

The traps, in the order they'll bite you:

  1. Promo confounding (the big one). Historically, low prices came bundled with banners, emails, and homepage slots. A naive regression attributes the visibility effect to price and overstates elasticity 2–5x — leading you to under-price permanently. Control for promo participation at minimum; better, estimate on non-promo price variation only.
  2. Censored demand. Zero sales during a stockout is not zero demand (same issue as forecasting — ML playbook, section 4). Exclude or control stockout periods.
  3. No price variation, no elasticity. If an item's price never moved, no method can estimate its response. Pool to category × price-band level and shrink item estimates toward the pool (hierarchical/empirical-Bayes style) — item-level estimates on sparse data are noise with confidence intervals wider than the answer.
  4. Asymmetry and reference prices. Response to increases ≠ decreases, and customers anchor on the price they last saw. Treat estimated elasticity as a directional planning number, not a precision instrument — and validate the big moves with tests (next section).

5. Testing Price Changes Without an A/B Test

You generally cannot user-split price tests: showing different prices to different users simultaneously is a legal/trust minefield and violates arm independence anyway (the interference problem from the experimentation playbook). The honest alternatives:

MethodHowBest for
Region / market split New price in city A, old in city B; difference-in-differences on the gap vs its pre-period Companies operating multiple comparable markets
Switchback Alternate price levels over time blocks; compare within-item across blocks, controlling day effects Single market; needs demand stability and care with reference-price effects
Matched-item rollout Change price on a treatment set of SKUs; compare vs matched control SKUs (synthetic control) Tail-margin harvesting programs — the workhorse in practice

The matched-item design deserves emphasis because it's the practical default: pick 200 tail SKUs for a +3% move, match each to a control SKU on category, price band, and velocity, then compare volume trends. Report profit delta, not revenue delta — a small volume loss is the expected cost of a correct price increase.

6. The Margin Waterfall — Where Price Realization Leaks

List price is fiction; what matters is pocket price — what's left after every leak. Lay it out as a waterfall per category:

List price                          100.0
  − promo discounts                  −8.2     (promo playbook territory)
  − coupon / voucher stacking        −2.1     (watch stacking rules!)
  − loyalty points liability         −1.4
  − payment fees & COD costs         −1.8     (payments playbook)
  − returns & RTO net cost           −3.6     (returns playbook)
  − shipping subsidy                 −2.9
  = Pocket price                     80.0     → 20pts of leak, each with an ownerthe waterfall

Build this once per category and two things happen: leaks get owners (each line maps to a playbook in this series), and pricing conversations shift from "can we raise prices?" to "which leak do we fix first?" — usually a far easier win. Classic finds: voucher stacking configurations nobody intended, shipping subsidies on orders that would clear the threshold anyway, and loyalty accruals on already-discounted items.

7. Price Architecture Quick Wins

8. Governance — The Part That Actually Determines Success

Pricing analytics fails organizationally before it fails technically. The minimum viable operating model:

The one-sentence version

Sharpen the few prices customers actually see, harvest the many they don't, trust elasticity only after controlling for promos, and fix the waterfall leaks before touching list prices — most pricing money is lying in the leaks.

Sources & Further Reading:
Competera: KVI PricingMcKinsey: Pricing in RetailRevology: Retailer Pricing FrameworksPrice Elasticity: Formula & Pitfalls

Enjoyed this? Leave a clap (or twenty)