← Back to Blog
Quantitative MarketingBehavioral EconomicsMarketing PsychologyRetention

Loss Aversion Is a Number: Pricing a Streak Freeze With Prospect Theory

Prospect theory puts the loss aversion coefficient at about 2.25. That turns a streak into a computable liability in the user mind, and it says flat-priced streak freezes leave most of their value uncollected.

SPSantosh Paudel· July 31, 2026· 8 min read
Table of contents

Kahneman and Tversky formalised in 1979 what everyone already suspected: losses hurt more than equivalent gains feel good. The useful part is that later work put a number on it. In cumulative prospect theory (Tversky and Kahneman, 1992) the loss aversion coefficient sits at roughly 2.25.

A coefficient turns a vague psychological principle into something you can multiply.

The short answer

If a user assigns value v to each day banked in a streak, breaking an n-day streak feels like losing 2.25 x n x v. That is their willingness to pay to prevent it. Because the felt loss grows linearly with streak length, a flat-priced streak freeze underprices long streaks badly. In a modelled 6,320-user base, flat pricing at $2.99 leaves $40,338 of surplus uncollected and fails to sell to 47.5% of users at all.

Why a streak is an endowment

The mechanic works because of what psychologists call the endowment effect, a direct consequence of loss aversion. A streak is not a future reward the user is working toward. It is a thing they already have, and the product reminds them daily that it can be taken away.

That framing is why streaks outperform equivalent point accumulations. Points going up is a gain. A streak at risk is a loss, and loss is worth 2.25 times as much attention.

It is also why the streak counter is displayed prominently and why the notification says "your 47-day streak ends in 3 hours". The design is not reminding you of an opportunity. It is invoking a loss you have already been told is yours.

Putting numbers on it

Suppose each banked day is worth $0.40 in perceived value to the user. The specific figure is a parameter to fit, not a universal constant, and it is estimable from what people actually pay to protect streaks in your product.

Streak dayBanked valueFelt loss if brokenWillingness to pay for a freeze
3$1.20$2.70$2.70
7$2.80$6.30$6.30
14$5.60$12.60$12.60
30$12.00$27.00$27.00
60$24.00$54.00$54.00
100$40.00$90.00$90.00
365$146.00$328.50$328.50

A user with a one-year streak has, in prospect-theory terms, $328.50 of exposure. Nobody charges that. Most products charge a flat two or three dollars.

What flat pricing costs

Model a user base distributed across streak lengths and price freezes at a flat $2.99.

LAMBDA = 2.25          # Tversky & Kahneman 1992
VALUE_PER_DAY = 0.40   # fit this to your own product
FLAT_PRICE = 2.99

dist = {3: 3000, 7: 1800, 14: 900, 30: 400, 60: 150, 100: 60, 365: 10}

total_lost = 0.0
print(f"{'day':>5} {'WTP':>9} {'users':>7} {'surplus lost':>14}")
for n, users in sorted(dist.items()):
    wtp = LAMBDA * n * VALUE_PER_DAY
    lost = max(0.0, wtp - FLAT_PRICE) * users
    total_lost += lost
    print(f"{n:>5} {wtp:>9,.2f} {users:>7,} {lost:>14,.0f}")

n_break = FLAT_PRICE / (LAMBDA * VALUE_PER_DAY)
buyers = sum(u for n, u in dist.items() if LAMBDA * n * VALUE_PER_DAY >= FLAT_PRICE)
total = sum(dist.values())
print(f"\ntotal surplus left on the table: ${total_lost:,.0f}")
print(f"below day {n_break:.1f} the freeze is priced above WTP")
print(f"users who will buy: {buyers:,} of {total:,} ({buyers / total:.1%})")

Output:

  day       WTP   users   surplus lost
    3      2.70   3,000              0
    7      6.30   1,800          5,958
   14     12.60     900          8,649
   30     27.00     400          9,604
   60     54.00     150          7,652
  100     90.00      60          5,221
  365    328.50      10          3,255
total surplus left on the table: $40,338
below day 3.3 the freeze is priced above WTP
users who will buy: 3,320 of 6,320 (52.5%)

Two failures at once. Long-streak users would happily pay far more and are charged $2.99. Short-streak users, who are the majority by count, will not pay $2.99 because their streak is not yet worth that to them, so 47.5% of the base is priced out entirely.

What the model argues for

Scale the freeze price with streak length. A freeze at roughly 2.25 x n x v captures the surplus and is, in a real sense, fair: it charges people in proportion to what they are protecting. Cap it, because $328.50 to protect a streak is a price that will generate complaints regardless of what the model says.

Give short streaks a free or near-free freeze. Below about day 3 the willingness to pay is under three dollars, and a free freeze there costs you almost nothing while removing the early break that ends the habit before it forms. This also lines up with the streak hazard model, where day 1 to day 3 is where the users are.

Do not let the mechanic run past the point of usefulness. A user who has been paying to freeze a streak for weeks is no longer engaging with the product, they are servicing a number. That is a churn signal wearing a revenue costume, and it is worth detecting rather than harvesting.

Fitting the parameter honestly

The 2.25 coefficient is well established. The value per banked day is not, and it varies enormously by product. Estimate it by observing what fraction of users at each streak length accept a freeze at a given price, then solve backwards for v. Two or three price points across a few cohorts gives a usable estimate.

Do not assume the coefficient generalises to your entire user base either. Loss aversion varies between individuals, and the 2.25 figure is a population average from laboratory experiments on monetary gambles. Treat it as a starting prior that your own data should update.

Free resource

Get the Promo & Bonus Economics Workbook

Every formula for pricing a promo before you launch it: expected value, wagering cost, breakage, breakeven conversion. Worked examples with real executed numbers.

No spam. Unsubscribe anytime.

Browse all free guides →

Want to implement this with guidance?

Santosh helps founders turn insights like this into real systems.

Promo Economics Audit

External Resources

Further Reading & Tools

Related Posts

01
9 min
Risk ManagementPromo Economics
TodayQuantitative Marketing

Value at Risk and Kill Switches for Live Promotions

A spend cap set at expected payout shuts down 46% of perfectly healthy campaigns. The right multiple is 1.52x. Sizing exposure limits and automated kill switches against a real payout distribution.

Read article
02
8 min
Incentive DesignBehavioral Economics
TodayQuantitative Marketing

The Line Between Motivating and Manipulating: An Incentive Design Ethics Test

Every mechanic in this series works because of a cognitive bias. That makes them powerful and makes some of them indefensible. A six-question test for which side of the line your design sits on, and what regulators have already acted against.

Read article
03
8 min
Price DiscriminationPricing
TodayQuantitative Marketing

Why Promo Codes Beat Sales: Price Discrimination in Practice

A blanket 20% discount earns $20,000 less than no discount at all. The same discount behind a code that only bargain hunters bother to find earns $64,000 more. The friction is the entire mechanism.

Read article