Price Elasticity & Revenue Optimization Engine
A comprehensive econometric analysis designed for retail e-commerce brands to calculate price elasticity of demand across multi-tiered product catalogs. By modeling historical transaction data, seasonal discounts, and cross-category cannibalization, the engine identifies optimal price points that maximize overall revenue and net profit margin.
1. Business Problem & Objective
The client suffered from sub-optimal promotional pricing, resulting in a 14% revenue leakage due to uncalibrated discounts and inaccurate forecasting of customer response to price fluctuations.
2. Dataset Description
2.4 Million POS transaction records spanning 24 months, including SKU level pricing, daily promotional discounts, competitor pricing benchmarks, inventory levels, and customer demographic attributes.
3. Data Cleaning & Preprocessing
- Filtered out extreme outliers, returned goods, and corrupted transaction logs using z-score thresholding.
- Imputed missing competitor pricing benchmarks via KNN multivariate imputation.
- Aggregated hourly POS data to daily and weekly demand series with lag variables to capture inertia.
4. Methodology & Machine Learning Architecture
Analytical Steps
- Log-log linear regression modeling to derive elasticity coefficients (β parameters).
- Instrumental Variable (IV) regression to control for endogeneity in promotional timing.
- Monte Carlo simulations to stress-test revenue yield under volatile inflation scenarios.
Model Development & Evaluation
Built using Python statsmodels and Scikit-Learn. Evaluated log-transformed linear models alongside Ridge regression with L2 regularization to prevent overfitting on highly correlated promo variables.
import numpy as np
import statsmodels.api as sm
# Calculate Log-Log Elasticity of Demand
df['log_price'] = np.log(df['unit_price'])
df['log_quantity'] = np.log(df['quantity_sold'])
X = sm.add_constant(df[['log_price', 'promo_discount', 'competitor_ratio']])
y = df['log_quantity']
model = sm.OLS(y, X).fit()
elasticity_coef = model.params['log_price']
print(f"Price Elasticity Coefficient: {elasticity_coef:.4f}")5. Results & Strategic Business Insights
Key Results Achieved
- Identified 38 inelastic product lines capable of supporting a 7.5% price increase without volume loss.
- Reduced unprofitable discount promotions by 32%.
- Projected gross margin improvement of +$480,000 annually.
Actionable Insights
- Electronics exhibit high price elasticity (-2.14), making steep discounts counter-productive to net profitability.
- Bundling complementary accessories with inelastic core products yielded a 19% boost in Average Order Value (AOV).