Pricing on Causal Elasticity
A structural causal model separates true price elasticity from promotion lift and seasonality — replacing a regression engine that couldn't tell the two apart.
The challenge
The legacy pricing engine fit a regression against three years of observational sales data — price, volume, and whatever else happened that week. It had no way to separate a price cut from the in-store display that usually accompanied it, which meant:
- Price and promotion effects blended into a single elasticity coefficient per SKU
- Recommendations that flipped sign quarter over quarter for the same product
- Category managers manually overriding roughly a third of the model's outputs
- No mechanism to test a hypothetical price move before committing shelf-reset budget
- Margin erosion concentrated on high-velocity SKUs where competitors promoted often
A controlled holdout audit found 18% of the model's price-direction calls were wrong — not imprecise, but pointed the wrong way.
How it works
Isolating price from everything that moves with it
The fix wasn't a better regression — it was a different question: what would volume have done if price alone had changed?
- 01
Three years of price, promotion, and volume history assembled across roughly 40 retail partners
- 02
Known confounders catalogued: display flags, feature ads, competitor stockouts, holiday seasonality
- 03
A double machine learning model estimated price elasticity net of those confounders for each SKU
- 04
Instrumental variables built from cost-driven price changes that had no relationship to promotion calendars
- 05
Model validated against a holdout of natural price experiments the retail partners had already run
- 06
Recommendations wired into the revenue management system's weekly repricing cycle
- 07
Category managers given an attribution view splitting each SKU's sales lift into price effect vs. promotion effect
What we built
Key capabilities
Elasticity, isolated
The model separates the causal effect of price from promotion, display, and seasonality instead of blending them into one number.
Weekly refresh
Elasticity estimates retrain weekly against the latest price and promotion data, so recommendations don't go stale mid-quarter.
Attribution category managers trust
Every recommendation ships with a price-vs-promotion breakdown, not just a number to accept or override.
Validated against real experiments
Held out against natural price experiments the retailers already ran, not just a backtest on the training data.
Before vs after
What changed in the pricing engine
- Price-direction accuracy
- 82% → 97%
- Manual analyst overrides
- ~33% → 6% of SKUs
- Margin per SKU (season over season)
- Flat → +5.4%
- Time to a price recommendation
- Days → same-day
Business impact
What it changed
5.4% margin lift in one season
Correcting the 18% of price calls that had the wrong sign, concentrated in high-velocity SKUs, delivered the bulk of the gain within a single 26-week selling season.
Override rate cut by more than 4x
Category managers now override roughly 1 in 16 recommendations, down from 1 in 3 — freeing analyst time for the exceptions that actually need judgment.
Testable price moves
Category managers can simulate a hypothetical price change against the causal model before committing shelf-reset budget, instead of finding out after the reset.
Technology stack
“Better data wasn't the constraint — asking a causal question of it was. The model that answers 'what would volume have done' outperforms the one that only knows what volume did.”
Keep reading

