Financial
Price Elasticity of Demand (Midpoint / Arc formula) & revenue impact check
Calculate symmetric Arc Price Elasticity ((Q2-Q1)/AvgQ) / ((P2-P1)/AvgP) to classify Elastic vs Inelastic demand and revenue change.
Why point elasticity changes when you reverse P1 and P2—and Midpoint Arc fixes it!
Percentage changes measured relative to the starting value differ when you reverse the starting and ending observations. The midpoint method instead uses the average of each pair, giving the same arc elasticity in either direction.
For prices 100 and 120 and quantities 1000 and 700, the midpoint calculation gives (-300/850)/(20/110) = -1.9412. Revenues at those two observations are 100000 and 84000. These two observations alone do not establish that the price change caused the quantity change.
| Pricing Experiment | Arc Elasticity Ed | Demand Regime | Revenue Impact (P2*Q2 - P1*Q1) |
|---|---|---|---|
| $100 -> $120, Qty 1,000 -> 700 | -1.9412 (|Ed| > 1) | Elastic | -$16,000 ($100k -> $84k) |
| $100 -> $120, Qty 1,000 -> 950 | -0.2821 (|Ed| < 1) | Inelastic | +$14,000 ($100k -> $114k!) |
| $120 -> $100, Qty 700 -> 1,000 | -1.9412 (Exact same!) | Symmetric! | +$16,000 |
Symmetric Midpoint (Arc) Price Elasticity of Demand formula
Dividing by midpoint averages (D2+C2)/2 and (B2+A2)/2 guarantees identical elasticity whether testing a price hike or a discount.
=IF(OR(COUNT(A2:D2)<>4,A2<=0,B2<=0,C2<0,D2<0,C2+D2=0,A2=B2),"Invalid inputs",ROUND(((D2-C2)/((D2+C2)/2))/((B2-A2)/((B2+A2)/2)),4))Classify Elastic (|Ed| > 1), Unit Elastic (|Ed| = 1), or Inelastic (|Ed| < 1)
The labels use the magnitude of the arc elasticity. The usual price/revenue interpretation assumes a downward-sloping demand relationship with other factors unchanged. Compute actual endpoint revenue directly; do not treat a two-point estimate as a forecast. Values within 1e-10 of magnitude 1 are classified as Unit Elastic.
=IF(OR(COUNT(A2:D2)<>4,A2<=0,B2<=0,C2<0,D2<0,C2+D2=0,A2=B2),"Invalid inputs",LET(elasticity,ABS(((D2-C2)/((D2+C2)/2))/((B2-A2)/((B2+A2)/2))),IF(ABS(elasticity-1)<0.0000000001,"Unit Elastic",IF(elasticity>1,"Elastic","Inelastic"))))Try the example
Use the original values or change them to test your understanding.