The Analyst's Path

Price elasticity of demand

Price elasticity: How much volume changes when price changes. A 10% price rise that costs 6% of volume implies an elasticity of minus 0.6. With inelastic demand, meaning an elasticity between zero and minus one, price increases raise revenue. Any commercial decision needs the margin as well as the elasticity, and the thinner the margin, the more volume a price rise can afford to lose. Elasticity is estimated from history and changes with the competitive situation.

7 min readPart of Microeconomics & Market Structures for AnalystsOpen in course mode

Advertisement

Here is the fulcrum of the whole module, stated as plainly as it can be stated: the price elasticity of demand is the formal, numerical definition of pricing power. Everything Phase 4 asked you to eyeball, does a price increase stick, does volume collapse when price rises, can this company raise prices without losing customers, is a question about one number: how much quantity demanded moves, in percentage terms, for a given percentage move in price.

How do you calculate price elasticity of demand?

Point elasticity, the calculus version, is E = (dQ/dP) × (P/Q), the slope of the demand curve times the ratio of price to quantity at the specific point you are evaluating. It is always negative for an ordinary downward-sloping demand curve (price up, quantity down), so analysts almost always report its magnitude and say "elastic" or "inelastic" rather than carry the sign. Demand is elastic when |E| > 1 (quantity responds more than proportionally to price, a small price change moves a lot of volume); inelastic when |E| < 1 (quantity barely moves); and unit elastic at exactly |E| = 1. The arc (midpoint) formula does the same job from two observed points without calculus, useful when you only have a price table, not an equation: E = [(Q2−Q1)/((Q1+Q2)/2)] ÷ [(P2−P1)/((P1+P2)/2)], dividing the percentage change in quantity by the percentage change in price, each measured against the average of the two values so the answer does not depend on which direction you happened to move.

Advertisement

How does elasticity affect revenue?

Elasticity's payoff is immediate and mechanical: it tells you, without any further judgment, which way total revenue (R = P × Q) moves when price changes. If demand is elastic, a price increase loses revenue (the percentage fall in quantity outruns the percentage rise in price) and a price cut gains it. If demand is inelastic, the opposite holds, a price increase gains revenue, because quantity barely responds. This is precisely the mechanism behind a moat's numbers test: when M4.04 shows a company's gross margin holding through an input-cost spike because a price hike "stuck," it is showing you, in balance-sheet language, that the company was operating on the inelastic part of its demand curve, exactly what the pricing-power section makes explicit by name. Along a straight-line demand curve, elasticity is not constant: it is large (elastic) near the choke price, falls through unit elasticity exactly at the curve's midpoint, and becomes small (inelastic) near the quantity axis, the reason a linear demand curve's revenue, a downward-opening parabola in price, is maximized precisely where |E| = 1. Worked Example 2 computes this by hand for a specific curve, and it is worth committing the shape of that result to memory: it is the reason "just raise the price" is sound advice in some parts of a demand curve and value-destroying in others, and no amount of intuition substitutes for actually checking which part you are on.

What are cross-price and income elasticity?

Two close cousins finish the family. Cross-price elasticity of demand, Exy = %ΔQx / %ΔPy, measures how the quantity demanded of good X responds to a change in the price of a different good, Y. A positive cross-price elasticity means the goods are substitutes (Y's price rises, buyers shift toward X, a rise in a competing brand's price lifting your own volume, say a 10% rise in a rival's price associated with a 4% rise in your own quantity, Exy = 0.4); a negative one means complements (Y's price rises, X's quantity falls with it, because the two are consumed together). Income elasticity of demand, Em = %ΔQ / %ΔM, measures the response to a change in buyer income, M, holding prices fixed. A normal good has positive income elasticity, split further into a necessity (0 < Em < 1, quantity rises but less than proportionally to income, a 20% income rise producing only a 6% rise in quantity, Em = 0.3) and a luxury (Em > 1, quantity rises more than proportionally, the same 20% income rise producing a 30% quantity rise, Em = 1.5). An inferior good has negative income elasticity: quantity demanded falls as income rises, because buyers substitute toward better alternatives the moment they can afford to (Practice P5 computes exactly this case). Every one of these numbers is a straightforward ratio of two percentage changes, trivial arithmetic that is nonetheless recomputed and checked in this module's scratch script, per R3, because a sign error here (substitute mistaken for complement, necessity mistaken for inferior) silently inverts the entire economic story.

{
  "skill": "Building a quick, checkable elasticity-and-revenue calculator for a pricing question",
  "use": "Ask an AI assistant to scaffold a short Python function that takes a linear (or log-log) demand specification and returns point elasticity, arc elasticity from a price/quantity table, and the revenue-maximizing price — then verify every output against a hand-solved case before trusting it on a real pricing decision.",
  "tools": ["Chat assistants -- Claude, ChatGPT, Gemini (for drafting and explaining the code)", "A Python/Jupyter or Pyodide notebook to actually run and check the numbers"],
  "prompt": "Write a Python function elasticity_report(a, b, P) that, for a linear demand curve Q = a - b*P, returns Q, point elasticity at P, whether demand is elastic/unit-elastic/inelastic at that price, and total revenue at P. Then write a second function revenue_max_price(a, b) that returns the price maximizing revenue via calculus, and show that its elasticity is exactly -1. Run both on a=200, b=8, P=20.",
  "verify": "Recompute at least one case by hand first (a=200,b=8,P=20 should give Q=40, E=-4.0, elastic, R=800) and confirm the code's revenue-maximizing price (12.5) gives elasticity exactly -1.0 -- the textbook identity this module teaches. Never accept an AI-drafted elasticity number for a real pricing decision without an independent hand check (Guardrail 1-5, AI0.01).",
  "diy": "You must already be able to compute point elasticity by hand from dQ/dP x P/Q and know, without being told, that a linear demand curve's revenue peaks exactly at unit elasticity -- that is what this section teaches, and no tool should be allowed to substitute for holding it in your head.",
  "market": "US"
}

How do you estimate price elasticity from data?

Modern Data Analysis note. Everything in this section is one formula applied to one number at a time by hand; at scale, an analyst rarely has a clean equation for demand, instead there is a table of historical price-and-quantity observations. The Python/pandas way to estimate elasticity from real data: run an ordinary-least-squares regression of log(Q) on log(P) (and any control variables, income, a competitor's price, a season dummy) over a pandas DataFrame; the coefficient on log(P) is a constant-elasticity estimate, directly comparable to the point elasticities computed by hand above. QM1.02 owns the regression mechanics (coefficients, standard errors, R², the diagnostics that tell you whether to trust the fit) this module does not re-derive them, only names the hand-off; the coded regression pipeline itself (data cleaning, log transforms, out-of-sample validation) belongs to the quant-code region's DA branch. The discipline that survives the move to code unchanged: an elasticity estimated from a regression is still just a number pretending to be a fact until you have checked its sign, its statistical significance, and its plausibility against a hand-built demand story like the ones in this section.

Advertisement

Part of the course

This page is part of Microeconomics & Market Structures for Analysts (EC1.01), in Phase 12: Finance Plus, AI and the quant-code track. The module's flashcards and its quiz are in the app.