Lessons

The Price Curve

  1. 1Elasticity, in plain English
  2. 2Read your own history
  3. 3The fit, and how sure it is
  4. 4The price that makes the most
  5. 5The raise that's probably free
  6. 6What a discount gives away
  7. 7Move it, and measure it
  8. 8Every SKU, in order
The template (.xlsx) ↓ The course on one page →
Free course · 8 lessons · 1 spreadsheet

The Price Curve

Read your own price elasticity from your sales history, find the price that makes the most, and walk toward it in steps you can measure. Then price every discount before you run it.

TrailerA two-minute trailer of the whole course will play here.

  • Read your elasticity from your own sales, with how sure it is.
  • Know when the data cannot name a price, and what it can still tell you.
  • Find the price that makes the most, with Amazon's fees split the way they move.
  • Price a raise and a discount before you run them: what each has to sell to pay.
  • Walk toward the best price in steps of at most 5%, and measure each one.
  • Rank your whole catalogue by what its next step is worth.

Start lesson 1 Every lesson and the spreadsheet are open. No email, no account. The course on one page

No email is needed to read it. Leave one and we send the link and the spreadsheet, then a short note only when a fee card the courses use changes or a new course opens. One click unsubscribes. How we handle your email.

What is inside

  1. Elasticity, in plain English. How far your units move when your price does.
  2. Read your own history. Where the numbers are, and the two rules before any fit.
  3. The fit, and how sure it is. The line, its interval, and when it cannot name a price.
  4. The price that makes the most. One formula, with the fees split the way they move.
  5. The raise that's probably free. How many units a raise can lose and still pay.
  6. What a discount gives away. How many units a sale has to sell to pay for itself.
  7. Move it, and measure it. Steps of at most 5%, called before, measured after.
  8. Every SKU, in order. The whole catalogue, ranked by what its next step is worth.
Lesson 1 of 8

Elasticity, in plain English

Your price elasticity is how far your units move when your price does. It is one number per SKU, and every price you have ever set was a guess at it.

The templateThis lesson: Start here, and the example the file opens on.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

If a SKU's elasticity is −2, a 1% raise loses about 2% of its units. At −0.5 it loses about half a percent. The sign is always negative: a higher price sells fewer units. The size is the whole question.

Why it decides the price

Revenue is price times units. Profit is contribution times units, and contribution moves faster than price: a dollar added to the price lands in the margin whole, less the referral fee, while landed cost and the fulfilment fee stay where they were. So a raise that loses units can still make more money. Elasticity says how many units, and so which way to move.

Three kinds of SKU

  • Between 0 and −1: inelastic. A raise loses a smaller share of units than it adds to the price. Profit keeps rising with the price, so there is no best price to find: walk up, and measure each step.
  • Below −1: elastic. There is one price where profit peaks. Lesson 4 finds it.
  • Near −1: the hard case. The best price could be a little above today's or several times it. Lesson 3 says when the data cannot tell, and what it tells you instead.

The example all the way through is an invented listing: an invented stainless garlic press at $24.99, selling about 523 units a month. Its history is invented and its fees are Amazon's. By lesson 3 its elasticity reads about −1.86: a 1% raise loses about 1.86% of its units.

Check yourself

  1. A SKU's elasticity is −0.7. A 5% raise loses about what share of its units, and does profit rise or fall?

    The answer

    About 3.4% of its units, less than the 5% added to the price, and the added price lands in the margin: profit rises. Between 0 and −1 there is no best price; walk up and measure.

  2. Why can a raise that loses units still make more money?

    The answer

    Because the raise lands in the margin whole, less the referral fee, while landed cost and the fixed fees stay where they were. Contribution per unit grows faster than the price, so the units lost have to pass a break-even before profit falls (lesson 5).

Do this now

  1. Pick your three SKUs with the most units.
  2. For each, write down what you think a 5% raise would do to its units. Keep the note: lesson 5 checks it.
Lesson 2 of 8

Read your own history

Elasticity comes from your own sales: periods when your price was different, and what your units did in each.

The templateThis lesson: Your history, the yellow cells.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

Where the numbers are

On Amazon, Business Reports has "Detail Page Sales and Traffic by Child Item". Set a date range and it gives each SKU's units ordered and ordered product sales. On Shopify, the Sales by product report gives the same two numbers for any range. The average price for a period is sales divided by units, so coupons and promotions are already in it.

One row per period

Half-months work well: long enough to sell, short enough to catch a change. For each period type the days in it, the units and the average price. Twelve half-months, six months of history, is a good start.

Units a day, not units a period

A 16-day period sells more than a 15-day one at the same price. If the long periods happen to fall at one price, a fit reads the extra day as that price's effect. Hubricon's engine measured the trap on calendar half-months: more than a whole unit of elasticity, wrong. The sheet divides units by days before anything else.

Two rules before any fit

At least 5 periods. And the price has to have moved: at least 2% variation, the standard deviation of the prices over their mean. Below either, the sheet says so and fits nothing, because a price that never moved cannot tell you what a different one would do. These are the engine's own rules.

Periods to leave out

  • Stockouts: the units were capped by stock, not by price.
  • Big event deals: a different customer arrives on Prime Day.
  • A launch, or a listing change: the product was not the same one.

Leave those rows blank rather than adjusting them. A period with no sales is ignored.

The invented listing's history: twelve half-months, February to July 2026. The seller tried prices between $21.99 and $27.49, so the price varied 6.6%: well clear of the 2% rule.

PeriodDaysUnitsAverage priceUnits a day
Feb 1–1414237$24.9916.9
Feb 15–2814252$24.9918.0
Mar 1–1515313$22.9920.9
Mar 16–3116299$22.9918.7
Apr 1–1515211$26.9914.1
Apr 16–3015213$26.9914.2
May 1–1515256$23.9917.1
May 16–3116216$27.4913.5
Jun 1–1515300$21.9920.0
Jun 16–3015237$25.4915.8
Jul 1–1515258$24.9917.2
Jul 16–3116282$24.9917.6

An invented listing · not a client · not a result.

Check yourself

  1. Your periods are 15 and 16 days long. Why does the fit use units a day?

    The answer

    A 16-day period sells more than a 15-day one at the same price. If the long periods fall at one price, the fit reads the extra day as that price's effect. Units a day takes the length out.

  2. Your price was the same in every period. What can the fit tell you?

    The answer

    Nothing: a price that never moved cannot say what a different one would do. The sheet needs at least 2% variation (the standard deviation of the prices over their mean) and says so instead of fitting. Lesson 7 is how to move it on purpose.

Do this now

  1. Pull twelve half-months for your best seller and type them into Your numbers above, or into Your history in the spreadsheet.
  2. If the sheet says the price has not moved enough, that is the finding: lesson 7 is how to move it on purpose.
Lesson 3 of 8

The fit, and how sure it is

A straight line through the logs gives the elasticity. The interval around it answers the question nobody asks: how sure?

The templateThis lesson: Your history, "The fit", and the grey working beside your rows.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

The line

Take the log of each period's price and of its units a day, and draw the straight line that fits them best. Its slope is the elasticity: on logs, a slope is a percentage per percentage. Drawn back on ordinary axes, the line becomes the demand curve.

An invented listing · Not a client · Not a result
One listing's sales history and the demand curve fitted to itEach dot is one period's average price and units sold a day. The line is the demand curve the log-log fit draws through them: Elasticity −1.86, interval −2.48 to −1.24.12.51517.52022.5$22$24$26$28Units a dayElasticity −1.86, interval −2.48 to −1.24
One listing's sales history and the demand curve fitted to itEach dot is one period's average price and units sold a day. The line is the demand curve the log-log fit draws through them: Elasticity −1.86, interval −2.48 to −1.24.12.51517.52022.5$22$24$26$28Units a dayElasticity −1.86, interval −2.48 to −1.24
Each dot is one half-month: its average price and the units it sold a day. The curve is the fit.

How sure

Every period is a noisy draw, so the slope is too. Its standard error says how far another twelve periods like these could put it. The sheet computes it the way Hubricon's engine does, HC3, which lets a period at an unusual price carry more noise than the rest instead of quietly steering the line. On this history that is 0.28, against 0.22 the simple way: the honest interval is the wider one.

With few periods, a 95% interval is not plus or minus two standard errors. On 12 periods it is plus or minus 2.23; on five it is plus or minus 3.18. The sheet uses the right multiplier for your count.

The invented listing's fit: elasticity −1.86, standard error 0.28, 95% interval −2.48 to −1.24, on 12 periods. The line explains 0.88 of the variation (R²).

What one history can and cannot tell you

Hubricon's engine ran this exact price test 200 times on a listing whose true elasticity is −1.6, each time with fresh noise. The median standard error was 0.28; one run in ten came out under 0.18 and one in ten over 0.45. In 50% of the runs the interval sat too close to −1 to name a price at all. In 95% of them, the direction came out right: up.

That is the shape of pricing one SKU from its own history. The direction is usually knowable long before the distance is.

Too close to −1

Lesson 4's formula multiplies by elasticity ÷ (1 + elasticity), and that factor runs away near −1: at −1.15 it is already 7.7. An interval from −1.66 to −0.64 covers best prices from a few percent above today's to no limit at all. A price printed to the cent there would be a guess with a decimal point on it.

So the sheet, like the engine, names no best price when the interval includes −1, when the estimate sits within two standard errors of −1, or when one standard error would move the best price by more than 50%. Then it works the formula at the estimate alone. If that puts the best price above today's, the direction is up: near −1 the top runs off to the right, and the estimate agrees. If it puts the best price below today's, the estimate says down while the range cannot rule out far up, so the sheet says hold. The engine forces no direction there either.

Check yourself

  1. A fit reads −1.4, with a 95% interval from −2.3 to −0.5. Can it name a best price?

    The answer

    No. The interval includes −1, where the best price runs away to no limit. It works the formula at −1.4 instead: if that best price is above today's, the direction is up; if it is below, hold.

  2. Two fits have the same standard error, one on 5 periods and one on 12. Why is the first one's interval wider?

    The answer

    With 5 periods there are 3 degrees of freedom, and the 95% multiplier is 3.18; with 12 it is 2.23. Fewer periods, less certainty, a wider interval.

Do this now

  1. Read your fit and write down the interval, not only the number.
  2. If the sheet says "Too close to −1", you have learned the direction: up. Lesson 7 is how to learn the distance.
Lesson 4 of 8

The price that makes the most

For an elastic SKU there is one price where profit peaks. It takes three costs and your elasticity, and it is flatter at the top than you would think.

The templateThis lesson: Your price, the yellow cells and "Best price".

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

Split the fees the way they move

Amazon's referral fee is a percentage of the price, so it grows when the price does. The fulfilment fee is fixed per unit by size and weight, and storage is fixed per unit too. Treat the fixed fees like landed cost, and gross the whole thing up by the percentage. Lumping every fee into one percentage moves the best price the wrong way.

On Shopify the split is the same. Shopify Payments takes a share of the price, 2.9% on the Basic plan, plus $0.30 an order, on a standard card (Shopify's pricing); shipping and packing are fixed per unit. The share goes where the referral rate goes, and the fixed costs, the per-order fee included, go with the fulfilment fee.

Best price = (landed cost + fixed fees per unit) ÷ (1 − referral rate) × elasticity ÷ (1 + elasticity)

Valid for elasticity below −1. It is the price where one more cent loses exactly as much in units as it adds in margin.

The invented listing: landed cost $6.20; fulfilment fee $4.35, from Amazon's 2026 non-peak card for a 12-ounce large standard unit priced $10 to $50; referral 15%.

Costs that do not move with price: $10.55. Grossed up for the referral fee: $12.41. At elasticity −1.86 the factor is 2.16, so the best price is $26.84, 7.4% above today's $24.99.

An invented listing · Not a client · Not a result
Profit a month against price, at the fitted elasticity and at the ends of its intervalProfit a month against price. The solid line uses the fitted elasticity, −1.86; the dashed lines use the ends of its interval. All three pass through today's price. The solid line is flat across the top: a few percent either side of the best price costs little.$5k$6k$20$25$30Profit a month−1.24−1.86, the estimate−2.48Today $24.99Next $26.24Best $26.84
Profit a month against price, at the fitted elasticity and at the ends of its intervalProfit a month against price. The solid line uses the fitted elasticity, −1.86; the dashed lines use the ends of its interval. All three pass through today's price. The solid line is flat across the top: a few percent either side of the best price costs little.$5k$6k$20$25$30Profit a monthToday $24.99Next $26.24Best $26.84
Profit a month against price. Solid: at the fitted elasticity. Dashed: at the two ends of its interval, which put the best price anywhere from $20.79 to $64.39. All three pass through today's price.

The lesson in the flat top

At the best price this listing makes +$25 a month more than today, on $5,593. Near the peak, a few percent either way costs little. Far from it, or on a discount, the curve falls away fast. That is why the next two lessons matter more than the cent.

When there is no best price

An inelastic SKU, between 0 and −1, has no peak: profit rises with the price until something the model does not see stops it, like a competitor, the Buy Box on Amazon, or conversion on Shopify. And a SKU too close to −1 has a peak nobody can locate. In both cases the sheet says "none" and points up; lesson 7 is how to walk.

What the formula assumes

That the fees per unit stay the same between today's price and the new one. Amazon's fulfilment fee changes where a price crosses $10 or $50. If a move crosses one, the sheet says so: price both sides with The Fee Staircase.

Check yourself

  1. Take the exercise SKU ($20, landed cost $5, fixed fees $4 a unit, referral 15%), with an elasticity of −2. What is its best price?

    The answer

    Costs that do not move with price: $9. Grossed up for the referral fee: $10.59. At −2 the factor is −2 ÷ (1 − 2) = 2, so the best price is $21.18, a little above today's $20.

  2. Why must the referral fee be kept apart from the fulfilment fee?

    The answer

    The referral fee is a percentage of the price, so it grows with it; the fulfilment fee does not. Treat the fixed fee like landed cost and gross the whole thing up by the percentage. Lumping every fee into one percentage moves the best price the wrong way.

Do this now

  1. Type your landed cost, your fulfilment fee (Seller Central's Fee Preview report on Amazon; your shipping and packing per unit on Shopify), and your referral or payment rate into Your price.
  2. Read the best price, and the interval's two ends beside it in your head: the distance is only as good as the interval.
Lesson 5 of 8

The raise that's probably free

Before you raise a price, work out how many units it can lose and still make the same money. It is usually more than the fear says.

The templateThis lesson: Your price, the table under the best price.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

A raise makes the same money if the units it loses are exactly paid for by the margin it adds. That gives the break-even in one line, and it needs no elasticity at all:

Units can fall by = 1 − contribution per unit today ÷ contribution per unit at the new price

The invented listing makes $10.69 a unit today. A 5% raise breaks even if its units fall 9.0%. Its elasticity says they fall 8.7%, so the raise makes +$22 a month.

ChangePricePer unitBreak-even unitsElasticity saysProfit a month
−10%$22.49$8.57+24.8%+21.6%−$141
−5%$23.74$9.63+11.0%+10.0%−$51
−2%$24.49$10.27+4.1%+3.8%−$17
+2%$25.49$11.12−3.8%−3.6%+$12
+5%$26.24$11.76−9.0%−8.7%+$22
+10%$27.49$12.82−16.6%−16.2%+$22

An invented listing · not a client · not a result. "Break-even units" is how far units can fall (or must rise) before profit moves; "Elasticity says" is what the fit expects them to do.

Why a raise is usually safer than it feels

The fear prices a raise in revenue: 5% more per unit against some share of the units. The break-even prices it in margin, and every dollar of a raise lands in the margin. The thinner the margin, the more units a raise can lose and still pay, because the same dollar is a bigger share of a small contribution.

And the asymmetry

Read the table the other way. A 10% cut on this listing has to sell 24.8% more units just to stand still; its elasticity says it sells 21.6% more. The cut costs −$141 a month. A raise has to be badly wrong to lose money. A cut has to be right to break even.

Check yourself

  1. The exercise SKU ($20, landed cost $5, fixed fees $4 a unit, referral 15%) makes how much a unit, and how far can its units fall on a 5% raise before profit does?

    The answer

    It makes $8.00 a unit; at $21 it makes $8.85. Units can fall 9.6% before the raise loses money: 1 − $8.00 ÷ $8.85.

  2. Why does a cut have to be right to break even, when a raise has to be badly wrong to lose?

    The answer

    A cut takes the whole change out of the margin, so it must sell a larger share of extra units than the share of price it gave up. A raise puts the change into the margin, so it can lose a larger share of units than it added in price before it stops paying.

Do this now

  1. Take the note from lesson 1. For each SKU, read the +5% row: how far units can fall before the raise loses money.
  2. If what you feared is less than the break-even, the raise is free money on your own numbers.
Lesson 6 of 8

What a discount gives away

A discount is a raise in reverse, and the arithmetic is harsher: every dollar off comes out of the margin, not out of the price.

The templateThis lesson: Discount.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

Extra units it must sell = contribution per unit today ÷ contribution per unit on the discount − 1

A 20% sale on the invented listing: $19.99, which leaves $6.45 a unit. It has to sell 66% more units to make the same money. Its elasticity says it sells 51% more. Run for a month, the sale costs −$488.

An invented listing · not a client · not a result.

Add what the deal itself costs

A coupon or a deal can carry its own fee per unit sold. The sheet has a cell for it: it comes straight off the contribution, so it raises the units the sale must sell.

What the sheet does not price

  • Rank. A sale that lifts your sales rank can sell more at full price afterwards. That is a bet on rank. It may be a good one, but it is a separate bet, and it should be made knowing what the sale itself cost.
  • Stock that is about to age. Sometimes a discount is cheaper than the storage it saves: The Fee Staircase, lesson 7, prices the 271-day cliff.

Check yourself

  1. A 25% coupon on the exercise SKU: what is left a unit, and how many more units must it sell to make the same money?

    The answer

    At $15 it keeps $3.75 a unit, against $8.00 at full price. It has to sell 113% more units: more than twice as many, just to stand still.

  2. What two things can a sale buy that the Discount sheet does not price?

    The answer

    A better sales rank afterwards, which is a separate bet on rank; and clearing stock before it ages past the 271-day cliff, which The Fee Staircase prices in its lesson 7.

Do this now

  1. Before your next promotion, type its discount into the Discount sheet.
  2. Compare "must sell" with "your elasticity says". If the second is smaller, decide what else the sale is buying, and whether it is worth the difference.
Lesson 7 of 8

Move it, and measure it

Walk toward the best price; never jump. Write down what you expect before each step, and measure it after.

The templateThis lesson: Your price, "Next price" and "Change a month".

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

At most 5% at a time

The fit describes prices near the ones you have tried, not prices far beyond them. On Amazon the Buy Box weighs your price against other sellers'; on Shopify every shopper weighs it against the tabs they have open. So a step is never more than 5%, and the next one waits for the measurement. The invented listing's best price is $26.84; its next step stops at $26.24.

Called before, measured after

  1. Before it goes live, write down three things: the new price, the units a day you expect, and the change a month the sheet expects. Writing it first is what stops a result from being explained after the fact.
  2. While it is live, watch your Buy Box share on Amazon, or your conversion rate on Shopify. If either drops, reverse the step: the model cannot see that, and you can.
  3. After two weeks, add the period to Your history. The fit moves, the interval tightens, and the next step starts from the new reading.

Each step is also an experiment. A history whose price never moved becomes one that can be read.

What one sheet cannot do

Three things lie beyond a single SKU's spreadsheet. Each is in Hubricon's engine, and each is worth knowing about even if you never use it:

  • Borrowing strength. A SKU with a thin history is pulled toward its catalogue's common elasticity, by exactly as much as its own estimate is noisy. A single SKU has nothing to be pulled toward.
  • Prices set because demand moved. If you raised a price because it was selling fast, the history mixes your decision with the market's, and the fit reads demand too steep or too flat. That has to be tested for and corrected.
  • A range on the profit. The sheet gives one number for the change. The engine draws the elasticity, the volume and the fees thousands of times and sizes the step so that the bad end stays inside a budget: double the uncertainty, and the step shrinks.

Check yourself

  1. The best price for the exercise SKU is 12% above today's $20. What is the next price?

    The answer

    The cap is 5% a step: $21.00. Write down what you expect, then measure for two weeks before the next step.

  2. Your Buy Box share on Amazon, or your conversion rate on Shopify, drops while a step is live. What do you do?

    The answer

    Reverse the step. The model cannot see either; you can.

Do this now

  1. Take your best seller's "Next price" and write down the expected change a month beside it, dated.
  2. Make the move, watch the Buy Box or your conversion rate for two weeks, then add the period to Your history.
Lesson 8 of 8

Every SKU, in order

Fit each SKU that has the history for it, put the readings in one table, and start where the next step is worth the most.

The templateThis lesson: Catalogue.

Download (.xlsx) ↓

VideoThis lesson, taught on screen on its own charts, will play here.

  1. Fit each SKU. Run its history through Your history, one SKU at a time, and copy four readings into Catalogue: the elasticity, its standard error and the interval's two ends.
  2. Add its economics. Price, units a month, landed cost, referral rate, and the fixed fees per unit.
  3. Read the ranking. The sheet names each SKU's best price where it can, its direction, the next step, and what that step is worth a month, ranked.

Where to start

At the top of the ranking. Then the SKUs marked "Too close to −1" whose direction reads up: a 5% step is the cheapest way to learn the distance. Those that read hold, leave until more history says which way.

Where to stop

At SKUs without five periods or with a price that never moved. They are not wrong; they are unread. Moving them on purpose, one 5% step at a time, is how they get a reading.

How often

Every two weeks: one step for each SKU at the top, one new period into each history, the ranking read again. A catalogue walked this way finds its prices, and the record of each step is the proof of what pricing earned.

Check yourself

  1. One SKU is at the top of the ranking; another is marked "Too close to −1". Which do you move first?

    The answer

    The one at the top of the ranking. Then the one near −1, if its direction reads up: a 5% step is the cheapest way to learn the distance. If it reads hold, it waits for more history.

  2. A SKU has three periods of history. What do you do with it?

    The answer

    It is unread, not wrong: no fit, so no best price. Move its price on purpose, one 5% step at a time, until it has five periods and a price that moved.

Do this now

  1. Put your top ten SKUs into Catalogue.
  2. Take the top three steps this fortnight. Write the expected change beside each, and check it in two weeks.

Keep it current

The fee cards these courses use change about once a year, and Amazon adds a holiday card every autumn. Leave an email and you hear when that happens, and when the next course opens. Nothing else.

No email is needed to read it. Leave one and we send the link and the spreadsheet, then a short note only when a fee card the courses use changes or a new course opens. One click unsubscribes. How we handle your email.