Causal Inference in Retail: Using Synthetic Control for Trade Promotion Optimization

Any straightforward attempt to calculate Trade Promotion Optimization (TPO) efficiency usually results in a financial disaster. Businesses are accustomed to measuring discount success using a primitive delta: comparing how much was sold before the promotion versus how much is sold now. This is engineering negligence that leads to margin burnout. To stop burning budgets, one must abandon direct time-series analytics and shift to noise isolation and causal inference.

Let us break down the anatomy of an unprofitable promotion step by step: from naive expectations to rigorous data engineering.

1. Introduction: The Illusion of Growth

Imagine an abstract point of sale; let it be an ordinary bakery. Its anchor product is a classic croissant. In a standard operational mode, the bakery sells 100 croissants per day at a price of $2. The stable daily revenue is $200.

At some point, marketing decides to “capture the market” and launches an aggressive promotional campaign with a 50% discount. The croissant now costs $1. By evening, the shelves are empty, with 150 units sold. On paper and in basic reports, this looks like an absolute triumph: a 50% growth in unit sales. Managers are opening champagne.

Now let us examine these figures through the lens of a real P&L (Profit and Loss) statement.

The revenue amounted to only $150. The business lost $50 gross, despite the production workload increasing by a factor of 1.5. What is even worse, the absolute majority of those 150 cheap croissants were purchased by loyal customers who visited daily anyway and were ready to pay their $2. The bakery simply sponsored their lunch out of its own pocket. This is a classic example of a negative promotional ROI.

To stop this leakage, we must mathematically and accurately calculate the Baseline—a counterfactual scenario showing how much product would have been sold if the promotion had not existed at all.

2. The First (Simple) Solution: Historical Average

The most obvious and cheapest engineering thought when searching for a Baseline is to look into the past. This method relies on calculating a Moving Average.

The algorithm takes historical sales data for $X$ weeks prior to the promotion’s launch, smooths out random spikes, and outputs an averaged indicator of normal demand.

MetricValueCalculation Logic
Historical Demand100 units/dayAverage over 4 weeks before the promo
Promo Sales150 units/dayActual sales with the discounted price tag
Incremental Effect+50 units/dayDifference between actual and historical data

Advantages of the approach: This solution is easily implemented at the SQL pipeline level using standard window functions (AVG() OVER()). It does not require complex cluster computing power and runs quickly.

The advantages end there. As soon as we bring this algorithm into a real business context, it breaks down immediately.

3. Colliding with Reality: Why Naive Math is Toxic

Raw receipt data is toxic. Simple mathematics is blind to the physical world of retail. If you feed the raw database to a moving average algorithm, it will produce a beautiful but completely useless illusion. Let us analyze the factors that destroy these calculations.

Business FactorWhat the Simple Algorithm SeesReal State of Affairs
Out-of-Stock (OOS)Zero sales indicate a drop in demand; the Baseline is underestimated.The product physically did not arrive from the warehouse; there was demand, but the shelf was empty.
CannibalizationSales of the promo croissant increased; the promotion is successful.The customer bought a croissant instead of a high-margin eclair. The store operates at a loss.
Pull-forward EffectAn immediate explosive growth in sales during the promotion.The customer bought 10 units for the future and froze them. There will be no sales for the next month.
Vendor FundingThe receipt’s margin dropped sharply; the promotion generated a loss.The flour supplier fully compensated for the discount. For the store, this is super-profitable.

The naive algorithm cannot link products together and does not understand the reasons behind missing receipts. It requires a strict data quarantine.

4. A New Solution: Architecture Adjusted for Reality

To truly solve the problem, we transition from primitive time-series forecasting to noise isolation and Causal Inference methods.

Step 1. Strict Quarantine (OOS Isolation)

Before any calculations, the pipeline must clean the historical data. All days when the stock balance was zero or fell below the minimum shelf visibility threshold are forcibly excluded from the Baseline calculation. They are converted to NULL to avoid distorting regression weights.

Step 2. True ROI Calculation (The Full Equation)

We stop evaluating efficiency in the vacuum of a single product and move to assessing the entire basket, factoring in cross-elasticity.

$$\text{True ROI} = \frac{\text{Promo Margin} – \text{Baseline Margin} + \text{Halo} – \text{Cannibalization} + \text{Vendor Funds}}{\text{Promo Costs}}$$

Here, we mathematically penalize the promotion for Cannibalization (devoured sales of adjacent products) and reward it for the Halo effect (when a cheap coffee compelled the customer to also buy an expensive sandwich).

5. Synthetic Control Scenarios

The main problem with the historical average is that it ignores what is happening today (weather, inflation, traffic). To understand the real temperature background, we apply Synthetic Control. Important: we do not engage in corporate espionage and do not access competitors’ databases. All counterfactuals are built exclusively on our own closed data.

Scenario A: Cross-Store (Network Analysis)

Applicable if the business operates an extensive physical network.

We deliberately divide the network into test and control groups. The product promotion is launched in “Store No. 1” (Kyiv) but blocked in “Store No. 2” (Lviv), which historically shares a mathematically identical sales curve. External shocks hit both locations simultaneously. The difference in croissant sales between these two points today is the crystal-clear incremental effect, purged of weather and day-of-the-week errors.

Scenario B: Cross-SKU (Mathematical Twins Within One Location)

Applicable for e-commerce or single stores where the promotion rolls out to all customers at once.

Comparing stores is impossible, so the algorithm creates a “digital twin” for the promotional item from a pool of products that currently have no discount.

The system analyzes history and determines that the croissant’s sales dynamics correlate by 95% with the sales dynamics of a basket containing “2 baguettes + 1 espresso + 0.5 cake.” On day X, we apply a discount to the croissant. To find its Baseline today, we observe how baguettes and espressos are selling at full price. If they are swept off the shelves (organic traffic is high), it means the croissant would have shown excellent results today even without the red price tag. The algorithm subtracts this high organic background from the final promotional sales.

Trade Promotion Optimization (TPO) is not a marketing task, but an engineering one. Attempts to stretch simple mathematics over complex retail operations inevitably lead to survivorship bias and margin cannibalization. The true effect can only be obtained through rigorous preliminary data cleaning (OOS) and the application of isolated synthetic control models that evaluate the promotion’s P&L taking into account the behavior of all related items in the receipt, rather than a single specific SKU.

Similar Posts