Chapter 38 of 57
Price Elasticity: Why You Can't Just Regress Quantity on Price
Created Jul 5, 2026 Updated Oct 25, 2026
Price elasticity of demand answers a question every business has: raise the price 1%, and how much does quantity sold drop? It's a single number,
written as an absolute value here, so a larger η means customers are more price-sensitive. The textbook estimate looks trivial — regress log quantity on log price and read off the slope. Run that regression on your sales history and you'll get a number. If your own pricing history is what produced it, that number is probably wrong in a particular direction, and acting on it leaves money on the table.
Why it's wrong: price is endogenous. You didn't set prices at random. The usual pattern is that you raised them when demand was already hot — a holiday, a viral moment — and cut them when it was soft, so price and the unobserved demand shock move together. The regression then sees high prices sitting next to high volumes and concludes customers barely mind the price: in log-log space the fitted demand curve comes out flatter than reality, elasticity biased toward zero, demand looking more captive than it is. The direction isn't a law — price moves driven by cost shocks, or cuts made in anticipation of a strong season, bias it the other way — but this is the case that pricing teams meet most often.
Then the bias compounds through the pricing rule. The profit-maximising price under constant elasticity and a constant marginal cost c is , defined only when η > 1. A smaller η̂ makes the markup factor η̂/(η̂−1) larger, so believing demand is less elastic than it is pushes the chosen price above the true optimum:
Constant-elasticity demand Q = A·P^(−η), profit π(P) = (P−c)·Q(P), markup-rule optimum P* = η·c/(η−1). Slide the bias multiplier λ to set the estimate you act on, η̂ = λ·η; the chart shades the gap between the true optimum (green) and the biased optimum (orange) on the underlying profit curve. The loss card converts that gap into dollars at the chosen revenue scale: at the default settings — η = 2.5 estimated as 1.63 — the chosen price is 2.60 instead of 1.67, and about a fifth of the optimal profit goes with it.
The fix is the same as anywhere endogeneity shows up: find price variation that isn't driven by demand.
- Instrument the price. Cost shifters are the classic instrument — an input-cost change moves price for reasons unrelated to how much customers want the product, tracing out the demand curve. The usual caution applies: a cost shock earns the job only if it has no path to demand of its own, which a commodity price that also moves customers' budgets does not.
- Run experiments. A randomised price test (or a geo holdout) manufactures exogenous price variation, which is why pricing teams lean on A/B tests rather than historical regressions.
- Watch the extrapolation. The constant-elasticity model assumes the same elasticity at every price — that is the model's own property, not an approximation that degrades. Real demand need not behave that way, so an elasticity estimated around today's price can mislead badly about a large move. The widget's default is a 56% price change, which is exactly the range where that assumption starts carrying the result.
None of this is academic: an elasticity wrong by a third moves the chosen price by more than half, and on a large revenue base the forgone profit is a very large number with a dollar sign in front of it. The full capstone — every method above applied to pricing, from IV to experiments to double ML — is in the Pricing and Elasticity note.