learn-economics-with-phoebe / Deep-dive session 3 of 10
Learn Economics with Phoebe · Deep-dive session 3 of 10

Pricing with the number

Deep-dive session 2 ended with a within-product elasticity between -1.5 and -2.2, about -1.8 at the default, with a label on it. Tonight is what a number like that is for. The first use is the smallest and the most valuable: it tells you the sign of a price change's effect on revenue, and on these rows the pooled number and the within-product number give opposite signs for the same 10 percent rise. The second use is the one every marketplace, airline and software company runs on: if buyers differ in how much they would pay, one price leaves money on both sides of it, and there are exactly three ways to charge different buyers different prices. The third is the honest boundary: the thing a pricing team most wants, each buyer's willingness to pay, is never in the data.

🟡 Core Analysts, pricing and growth teams Python, plain arithmetic 45 min
0-3 · Welcome 3-18 · The revenue rule, three degrees, the menu 18-40 · Build-along: the revenue table and the sentence 40-45 · Q&A
Part 0

Where we start

Revenue is price times units. Raise the price by some percent and units fall by the elasticity times that percent, so whether revenue goes up or down depends on whether the elasticity is bigger or smaller than one in absolute value. That is the whole of the revenue rule and it is the reason the number matters: at -0.108 a rise is free money, at -1.788 it costs you. Everything else tonight is the same idea taken further. If some buyers would pay more than the price and some would pay less, then a single price is a compromise, and a seller who can tell the two groups apart, or get them to sort themselves, can do better than any single price. The Olist rows say nothing about that second part directly; they were sold at one price each. But the elasticity is the average of those buyers, and the menu is a way of not averaging them.

🎫 Clear all three quiz questions to stamp your passport Live = presented in the 45 minutes Self-study = the full depth, after class ★ Build-along = run the code yourself

★ What you walk out with tonight. The revenue arithmetic for any price change under any elasticity, in one line of Python; the two-scope sentence for a leader, with the range and not the point; the three degrees of price discrimination as three mechanisms and the test of which one a given price is; versioning and freemium as second-degree discrimination, with the menu drawn; and the reason a price test, not a panel, is what settles a pricing decision.

Part 1 · covers the revenue rule with the real number

The first thing an elasticity buys you is a sign

5 min live

Take the 10 percent rise the catalogue slide from deep-dive session 2 recommended. Under a constant-elasticity demand curve, units change by (1.10 to the power of the elasticity) minus one, and revenue by (1.10 to the power of one plus the elasticity) minus one. Under the pooled -0.108 that is units -1.0 percent and revenue +8.9 percent. Under the within-product -1.788 it is units -15.7 percent and revenue -7.2 percent. Under -1.854 with month effects, units -16.2 and revenue -7.8. All three are modelled numbers: arithmetic on a computed slope under a constant-elasticity assumption, and the page says so wherever they appear.

ONE RISE, TWO ELASTICITIES, OPPOSITE SIGNS modelled: constant elasticity, arithmetic on the deep-dive session 2 slopes +10 percent on every price +9 0 -9 percent +8.9 revenue under -0.108, pooled units -1.0 -7.2 revenue under -1.788, within units -15.7 same rows, same rise pooled says: take it within says: it costs 7.2 with month effects, -1.854: units -16.2, revenue -7.8 the sign is the decision Revenue rises with a price rise only when the elasticity is smaller than one in absolute value. -0.108 is; -1.788 is not; and the range -1.5 to -2.2 is nowhere near the line.
🔍 Click to zoom - the pale bar is what the catalogue slide promised; the amber bar is what the within-product number says the same rise costs
LiveThe revenue rule, and the two-scope sentence3 min▶

The rule. A price rise raises revenue when demand is inelastic (absolute elasticity below one) and lowers it when demand is elastic (above one). Under a constant-elasticity curve the arithmetic is exact: revenue after a rise of p percent is (1 + p/100) to the power (1 + elasticity), minus one. At -0.108 the exponent is 0.892, so a 10 percent rise gives 1.10 to the 0.892, which is +8.9 percent. At -1.788 the exponent is -0.788, and 1.10 to the -0.788 is -7.2 percent. The sign flipped because the elasticity crossed one.

Why the range and not the point. Deep-dive session 2 printed -1.788 at the default, -2.216 weighted by units, -1.881 with freight in the price, -1.480 without single-unit months, and -1.854 with month effects. The sentence for a leader is: on these rows, the within-product elasticity is between -1.5 and -2.2 depending on the weighting and the row filter, about -1.8 at the default; it is not -0.1 and it is not zero. Under every number in that range a 10 percent rise loses revenue, between 4.7 and 10.8 percent. The decision does not depend on which decimal you believe, which is exactly what a range is for.

The assumption, said out loud. Constant elasticity means the same percentage response at every price, which is what the log-log line assumes. It is fine for a 5 or 10 percent move near the prices the panel saw; it is a guess for a 50 percent move, and no panel can tell you what happens at a price nobody was charged.

Self-studyWhere the Olist number sits among published ones, as reported2 min▶

Published elasticities are almost all below one in absolute value, because most of what economists have measured is a necessity bought by everyone. Gasoline: about -0.09 in the short run and about -0.31 in the long run, the publication-bias-corrected figures reported by Havranek, Irsova and Janda 2012, Energy Economics 34(1) 201-207. Food away from home 0.81 and eggs 0.27, in absolute value as the paper reports them, from Andreyeva, Long and Brownell 2010, American Journal of Public Health 100(2). Nobody stops driving to work because petrol rose 10 percent; people do skip a restaurant meal.

A marketplace product with a slope of about -1.8 is a different animal: a bath towel, a phone case or a garden tool with a dozen substitutes one search away. That is why the within-product Olist number is elastic where petrol is not, and it is the reason the sign of a price rise on a marketplace is the opposite of the sign at a petrol station. It is not a general e-commerce elasticity; the panel is 203 products on one marketplace in 2017 and 2018, and no number on this page is a claim about any other market.

Real world

The across-the-board rise. A category manager is asked for 9 percent more revenue next quarter and proposes 10 percent on every price, on the strength of a flat catalogue scatter. On the within-product number the proposal delivers about -7. The alternative the elasticity actually supports is the opposite move on the most elastic lines: under -1.788 a 10 percent cut gains 20.7 percent of units and 8.7 percent of revenue, modelled, constant elasticity. Whether the margin survives the cut is a cost question the elasticity does not answer, and it should be the next slide.

Part 2 · covers first, second and third degree price discrimination

Three ways to charge different buyers different prices

5 min live

An elasticity of -1.8 is an average over buyers who differ. Some would have paid R$ 90 for the towel and got it at R$ 70; some would only have paid R$ 60 and did not buy. One price leaves money with the first group and sales with the second. Price discrimination is any arrangement that charges the two groups differently, and the economics textbooks sort every such arrangement into three degrees by one question: how does the seller find out which group a buyer is in?

FIRST DEGREE SECOND DEGREE THIRD DEGREE a price per person a menu, buyers sort themselves a price per group would pay 90 would pay 60 90 60 seller knows each buyer's ceiling small · 40 medium · 70 large · 120 one menu for all picks the line has the card does not 50 70 card check The degree is decided by how the seller learns who is who: told outright (first), the buyer reveals it by choosing (second), or a marker the buyer cannot fake (third). Prices sketched are invented for the drawing. Airline fares, student tickets and software tiers are the three degrees in the wild, roughly in reverse order.
🔍 Click to zoom - the amber shapes are the price each mechanism sets; only the middle panel sets one thing for everyone and lets the buyer do the sorting
LiveFirst, second, third: what each one needs to work3 min▶

First degree charges each buyer their own ceiling. It needs the seller to know every buyer's willingness to pay, and to stop the R$ 60 buyer reselling to the R$ 90 one. Pure first degree is rare; haggling in a bazaar and a car dealer's negotiated price are the closest real cases, and personalised online prices are the modern attempt. It is the one people mean when they say "they charge what you will pay", and it needs information no seller fully has.

Second degree posts one menu and lets buyers pick. Small, medium, large; economy and business; a free tier and a paid one. The seller does not know who is who, and does not need to: the menu is designed so that the high-ceiling buyer chooses the dear line on their own and the low-ceiling buyer chooses the cheap one. What it needs is that the lines differ in something the high-ceiling buyer cares about and the low-ceiling one can live without. Part 3 is entirely about this one.

Third degree charges by group, using a marker the buyer cannot easily fake: a student card, an age, a postcode, a country, a business email domain. Cinema tickets, regional pricing and educational licences. It needs the marker to correlate with willingness to pay, and it needs the wall to hold: a student cannot buy for a non-student without it becoming first-degree resale.

The test of which degree a price is: who did the sorting? If the seller did it with a marker, third. If the buyer did it by choosing, second. If the seller did it one buyer at a time, first.

Self-studyWhy one price leaves money on both sides, in surplus terms2 min▶

Foundations session 1 introduced surplus: the gap between what a buyer would have paid and what they did pay, summed over buyers. At one price of R$ 70, the buyer whose ceiling was R$ 90 keeps R$ 20 of surplus; the buyer whose ceiling was R$ 60 keeps nothing and buys nothing, and the seller made no sale that would have been worth R$ 60 minus cost. Discrimination moves both: it takes some of the first buyer's R$ 20, and it makes the second sale at R$ 60 happen. Whether that is good or bad for buyers as a group depends on which effect is larger, which is why the same mechanism is called "personalised pricing" by one side and "price gouging" by the other.

The condition all three degrees share is that resale must be hard. If the R$ 60 buyer can sell to the R$ 90 buyer, every degree collapses back to one price. Digital goods, tickets with a name on them and services consumed in person are the cases where resale is hard, which is why they are where discrimination is most visible.

Real world

The seat that costs three prices. An airline sells the same seat at one fare three weeks out, another the day before, and a third to anyone who books a Saturday night stay. None of the three requires the airline to know a single passenger's ceiling. Business travellers book late and refuse Saturday nights; leisure travellers book early and stay the weekend. The fare rules are a menu, the passengers sort themselves, and the rule "Saturday night stay" is the line on the menu that the high-ceiling buyer will not cross. Second degree, at scale, since the 1980s.

Part 3 · covers versioning and freemium

Versioning: the menu that sorts customers

5 min live

Shapiro and Varian's Information Rules (1998, Harvard Business School Press, as reported) put a name on the software version of second-degree discrimination: versioning. An information good costs almost nothing to copy, so the seller can offer several versions of the same thing at different prices, and the versions are designed so that customers sort themselves by how much they value the differences. A free tier is the bottom line of that menu. Freemium is not a marketing tactic bolted onto pricing; it is second-degree price discrimination with a price of zero on the lowest version.

SEVEN CUSTOMERS, ONE MENU, THREE SHELVES each customer picks the dearest version below their own ceiling; prices invented for the drawing WILLINGNESS TO PAY 0 12 40 80 seven ceilings the seller never sees free · 0 two customers pro · 12 three customers team · 40 two customers what team has what pro has and free lacks The seller posts three prices and learns seven ceilings, roughly, from which shelf each customer lands on. That is why a free tier is worth having even at zero revenue: it is the line that catches the customers a single price would have lost.
🔍 Click to zoom - the shelves do not move; the customers do, and the gaps between shelves are the features that stop a high-ceiling customer dropping down
LiveDesigning the menu, and why the cheap version is often made worse on purpose3 min▶

The menu works when nobody wants to move down. The high-ceiling customer must prefer the dear version at its price to the cheap version at its price. That is the whole design constraint: the gap in features between two lines has to be worth at least the gap in price to the customer you want on the upper line. If it is not, they drop down and the upper line earns nothing. This is why the difference between a free tier and a paid one is so often a limit that a heavy user hits and a light user never does: seats, storage, history, an export button.

The cheap version is sometimes the dear one with something removed. Shapiro and Varian's examples, as reported, include software shipped with features switched off and a printer sold in a slower version at a lower price. It looks perverse to spend money making a product worse. It is not: the worse version exists to make the low-ceiling sale without giving the high-ceiling customer a reason to take it. The cost of the damage is the price of the sorting.

Freemium, said plainly. A free tier is a version with a price of zero. It is second-degree discrimination whose bottom line is set where the marginal cost of one more user is close to nothing, which is true of information goods and not of towels. Its job is to catch every customer whose ceiling is above zero and below the first paid price, and its design question is the same as any other line's: what does the paid line have that a customer with a real ceiling will not do without?

Self-studyWillingness to pay is unobservable, so what settles a price is a test3 min▶

Every mechanism on this page is a way of working around one fact: a customer's ceiling is inside their head and nothing in a transaction table records it. A sale at R$ 70 says the ceiling was at least 70; a non-sale says nothing, because the non-buyer is not in the table at all. Surveys ask, and people answer strategically or wrongly. The elasticity from deep-dive session 2 is the best a panel can do: the average response of the customers who were there to the prices that were charged. It cannot say what the customers who were not there would have paid, and it cannot say what happens at a price nobody was charged.

What settles a pricing decision is a price test: the same product shown at two prices to two comparable groups, with the assignment decided by a random draw rather than by a seller looking at demand. That removes the thing the panel could not, the seller's choice, and the difference in units between the groups is a causal elasticity at those two prices. How to size, run and read that test is the subject of learn-experimentation-with-phoebe. And where a customer's value over time rather than in one purchase comes into a pricing decision, the lifetime value that a free tier is betting on, that arithmetic lives in learn-customer-retention-with-phoebe, which owns customer acquisition cost and lifetime value; a menu is designed on the elasticity, and paid for on the lifetime.

Real world

The export button. A note-taking product offers a free tier with everything except export and version history. Neither feature costs the company anything to switch on. A student never exports and is happy for free; a consultant who bills by the document hits the missing export in the first week and pays. The company never asked either of them what the product was worth. It posted two lines and watched where they landed. The feature it withheld was chosen because it is the one the consultant will not do without and the student will not notice, which is the only design rule a menu has.

Build-along

The revenue table, and the sentence with the range in it

★ 22 min · everyone builds

No data tonight, only the number and the arithmetic on it. Four steps: the constant-elasticity revenue function, the check that it reproduces the three modelled numbers from the map, the table for price changes of -10, -5, +5 and +10 percent under four elasticities, and the sentence for a leader that carries the range rather than the point. Every printed figure is modelled: arithmetic on the deep-dive session 2 slopes under a constant-elasticity assumption.

REVENUE CHANGE, PERCENT, UNDER FOUR ELASTICITIES modelled, constant elasticity; -1.8 stands for the default -1.788 elasticity price -10 price -5 price +5 price +10 -0.108 pooled -9.0 -4.5 +4.4 +8.9 -1.5 low end +5.4 +2.6 -2.4 -4.7 -1.8 default +8.8 +4.2 -3.8 -7.3 -2.2 high end +13.5 +6.3 -5.7 -10.8 The hatched row is the pooled number and it is the only row where a rise pays. Every row in the within-product range points the same way, which is what lets a leader act on a range. At exactly -1.788 the +10 cell is -7.2 and the -10 cell is +8.7; the -1.8 row rounds them to -7.3 and +8.8.
🔍 Click to zoom - read down the amber column: the sign flips once, between the pooled row and the rest, and never again

The revenue function. Under constant elasticity b, a price change of pct percent multiplies units by (1 + pct/100) to the power b, and revenue by one more power of the same base. Two lines, no data.

★ Step 1 · constant-elasticity arithmeticdef rev(b, pct): """Revenue change (fraction) for a pct percent price change under elasticity b.""" return (1 + pct / 100) ** (1 + b) - 1 def units(b, pct): """Units change (fraction) for the same move.""" return (1 + pct / 100) ** b - 1 # modelled, constant elasticity: the same percentage response at every price

Check it against the map's three numbers. The three modelled figures for a 10 percent rise must come out exactly before the function is trusted with anything else.

★ Step 2 · the three modelled numbersfor b in [-0.108, -1.788, -1.854]: print(f"b {b:+.3f}: units {units(b, 10)*100:+.1f}% revenue {rev(b, 10)*100:+.1f}%") # b -0.108: units -1.0% revenue +8.9% # b -1.788: units -15.7% revenue -7.2% # b -1.854: units -16.2% revenue -7.8%

The table. Four price moves across, four elasticities down: the pooled number, the two ends of the within-product range, and the default. Print it as one block; the block is the argument.

★ Step 3 · the revenue tablePCTS = [-10, -5, 5, 10] BS = [-0.108, -1.5, -1.788, -2.2] # pooled, low end, default, high end print("elasticity " + "".join(f"{p:+6d}%" for p in PCTS)) for b in BS: print(f"{b:+10.3f} " + "".join(f"{rev(b, p)*100:+6.1f} " for p in PCTS)) # elasticity -10% -5% +5% +10% # -0.108 -9.0 -4.5 +4.4 +8.9 # -1.500 +5.4 +2.6 -2.4 -4.7 # -1.788 +8.7 +4.1 -3.8 -7.2 # -2.200 +13.5 +6.3 -5.7 -10.8

The sentence. A leader does not need the decimal; they need the sign and how sure it is. Compute the two ends of the range and write the sentence from them, never from the point.

★ Step 4 · the sentence with the rangelow, high = rev(-2.2, 10) * 100, rev(-1.5, 10) * 100 print(f"a 10 percent rise: revenue between {low:+.1f} and {high:+.1f} percent") # a 10 percent rise: revenue between -10.8 and -4.7 percent # The sentence for a leader, with the label from deep-dive session 2 kept on: # "On these rows the within-product elasticity is between -1.5 and -2.2, about -1.8 # at the default. A 10 percent rise loses between 5 and 11 percent of revenue under # a constant-elasticity assumption. It is an association with a placebo behind it, # not an experiment; a price test would settle it."

Print the range's two ends before the point, every time. If both ends of the range give the same sign, the decision is safe and the decimal is a detail. If they straddle zero, no decimal will rescue it and the honest answer is a price test. The table makes that visible in one glance; a single number hides it.

Homework

Before deep-dive session 4

30 min
  1. Extend the table to price changes of -20 and +20 percent and add the weighted -2.216 and the freight-inclusive -1.881 as rows. Write one line on whether the sign changes anywhere in the within-product rows.
  2. Classify five prices you paid this month by degree: who did the sorting, the seller with a marker, you by choosing, or the seller one buyer at a time? At least one will be hard to place; say why.
  3. Draw the menu for a product you know with a free tier: the lines, the prices, and the one feature on each step that stops a customer dropping down. Mark which step you think catches the most revenue.
  4. Write the price test in three sentences: what two prices, what two groups, and what you would measure. Do not run it; the point is to notice what the panel could not give you.
Check yourself

Three questions

Clear all three and deep-dive session 3 gets stamped in your passport.

1 · Under the pooled -0.108 a 10 percent rise gives revenue +8.9 percent; under the within-product -1.788 it gives -7.2 percent. Why do the signs differ?

Both fits use the same 2,216 rows; the pooled one compares products with products and the within one compares each product with itself. Under -1.5 the rise costs 4.7 percent and under -2.2 it costs 10.8, modelled, so the sign is settled by the range and not by any one decimal.

2 · A cinema charges students less on showing a card; a software company posts free, pro and team tiers; a market trader haggles each sale. Which degree is each?

The test is who did the sorting. A marker the seller checks is third degree; a menu the buyer picks from is second; a price negotiated per buyer is first. Freemium is the software case with a zero on the bottom line.

3 · A pricing team wants each customer's willingness to pay. What can the Olist panel give them, and what settles the decision?

A sale at R$ 70 says the ceiling was at least 70 and a non-sale is not in the table at all. The panel's elasticity is the best a panel can do; a test replaces the seller's choice of price with a random draw, which is the thing deep-dive session 2 said no fixed effect could remove.

Sources covered

What this session teaches, and where it came from

✓The revenue rule and the constant-elasticity arithmetic; a 10 percent rise gives units -1.0 and revenue +8.9 percent under -0.108, units -15.7 and revenue -7.2 under -1.788, units -16.2 and revenue -7.8 under -1.854Modelled: arithmetic on slopes computed from the Brazilian E-Commerce Public Dataset by Olist (Kaggle, CC BY-NC-SA 4.0), under a constant-elasticity assumption
✓The revenue table under -0.108, -1.5, -1.788 and -2.2 for -10, -5, +5 and +10 percent; the two-scope statement, -1.5 to -2.2, about -1.8Modelled on computed numbers; the range comes from the deep-dive session 2 robustness rows
✓Price discrimination, first, second and third degree; surplus; resale as the shared conditionStandard economics, no single source
✓Versioning and damaged goods; freemium as second-degree discrimination with a zero price on the lowest versionShapiro and Varian 1998, Information Rules, Harvard Business School Press, as reported; the freemium framing is the page's application of it
✓Published elasticities: gasoline about -0.09 short run and -0.31 long run; food away from home 0.81 and eggs 0.27 in absolute valueHavranek, Irsova and Janda 2012, Energy Economics 34(1) 201-207, as reported; Andreyeva, Long and Brownell 2010, American Journal of Public Health 100(2), primary
◐The price test, and customer acquisition cost and lifetime valueNamed and linked to the experimentation and customer retention courses; not taught here

Every fact on this page, and its verification tier, is recorded in the course's source map.

Deep-dive session 3 cheat sheet · pin this

The revenue ruleA rise pays only when the elasticity is below 1 in absolute value. -0.108: +8.9. -1.788: -7.2. Modelled.
The sentenceBetween -1.5 and -2.2, about -1.8. A 10 percent rise loses 5 to 11 percent of revenue. Not an experiment.
Who did the sorting?Seller, one buyer at a time: first. Buyer, by choosing: second. Seller, with a marker: third.
The menu's one ruleThe feature gap must be worth the price gap to the customer you want on the upper line.
Freemium is a priceSecond degree with zero on the bottom line. It catches ceilings above zero and below the first paid tier.
Willingness to pay is not in the dataA sale is a floor, a non-sale is absent. A price test with a random draw settles it.