โฆษณา
"The curve is asymmetric about break-even: above it a mis-set target forgoes profit, below it destroys capital, and the reciprocal makes the second far the steeper of the two."
That is Corollary 1c of the note this post unpacks, and it contradicts the advice everyone gives — ours included, until now. The standard guidance is to compute break-even ROAS as one divided by your contribution margin and set your Target ROAS above it. The first half is right. The second half is far too weak, because break-even is not a floor you stand on. It is the line where the whole of your margin goes to the auction while the campaign reports itself perfectly on target.
R*_profit = ( a / m ) x ( 1 + 1/e ) / ( 1 - d )
m = contribution retained per baht of attributed GMV
a = attributed GMV / incremental GMV (>= 1)
e = elasticity of click supply to price
d = rate at which the marginal click decays in value
1/m alone is BREAK-EVEN. The other three factors are
the reason break-even is not a floor.The reason is visible in one line of algebra. Setting the target exactly at break-even permits a bid equal to the entire contribution a click carries. Profit is then exactly zero at every possible volume, so no amount of scale rescues it. The three factors beside 1/m in the formula above are what separate the line where profit vanishes from the target that maximises it.
The thesis: the Target ROAS that maximizes profit is break-even multiplied by three separate markups, none of which appears anywhere in marketplace ad reporting. On plausible mid-market parameters those markups compound to more than 3x, which moves the correct target on a 20%-margin product from 5.00 to about 16.7. A campaign that entered 5.00 and reports 5.00 is not on target. It is spending roughly eight times what it should. What would falsify this: a click-supply curve flat enough that buying more volume did not raise the price of the volume you were already buying.
Why break-even earns exactly zero
Write m for the contribution you retain per baht of attributed GMV — what survives cost of goods, category commission, transaction and payment fees, seller-funded vouchers, the free-shipping cost share and a returns reserve, every line of which is set out in Shopee Thailand’s published fee schedule [2]. Break-even ROAS is 1 ÷ m: the return at which advertising revenue covers advertising cost and nothing else. Now put that target into the bid ceiling derived in how Shopee ads bidding works. The permitted price per click becomes exactly the contribution a click carries.
profit(bid at ceiling) = ( m x v - v / R* ) x Q
at R* = 1/m : m x v - v/R* = m x v - m x v = 0
-> zero profit, for EVERY Q, k and elasticity.
The volume is real, the GMV is the largest on the page,
and all of the contribution goes to the auction.The zero is independent of volume, and that is the part that catches people out. A seller at break-even who raises spend buys more clicks, more attributed GMV and more reported revenue — and still earns nothing, at any volume the campaign can reach. Clicks, orders, revenue and the platform’s own ROAS reading all improve. Profit does not, because there is no quantity of clicks bought at exactly their own contribution that adds up to more than zero.
The curve is asymmetric, and the wrong side is much steeper
Below break-even the loss is not symmetric with the profit forgone above it. The permitted price is the value of a click divided by the target, so it is reciprocal in the target: cutting the target raises the bid without limit. Above break-even the most you can lose is the finite amount you were going to make. Below it, there is no bound at all. Here is the same campaign from the previous post — a click worth THB 10.00, a 20% contribution margin, break-even at 5.00, iso-elastic click supply at elasticity 1.5 — swept across entered targets with a slack budget.
| Target entered | Bid (THB) | Clicks/day | Spend (THB) | Attributed GMV (THB) | Profit after ads (THB) |
|---|---|---|---|---|---|
| 8.33 — the optimum here | 1.20 | 1,000 | 1,200 | 10,000 | +800 |
| 6.32 | 1.58 | 1,514 | 2,396 | 15,141 | +632 |
| 5.00 — break-even | 2.00 | 2,152 | 4,303 | 21,517 | 0 |
| 4.00 | 2.50 | 3,007 | 7,518 | 30,070 | −1,504 |
| 3.00 | 3.33 | 4,630 | 15,432 | 46,296 | −6,173 |
Computed on an assumed iso-elastic click-supply curve with elasticity 1.5, fitted to no account. Source: DataGlass Labs technical note, worked example, Case 3 [1].
Setting the target two points below break-even loses THB 6,173 a day — nearly eight times the most this campaign could ever have earned — while posting the largest GMV on the page, four and a half times the optimum’s. Clicks, orders, revenue, and the platform’s own ROAS reading against a lowered target all look better as the campaign walks off the cliff.
The peak sits at 8.33 on these parameters and the curve falls away gently to its right — overshooting the target forgoes a bounded amount. To the left of break-even at 5.00 it falls without bound, because the permitted bid is reciprocal in the target. Computed on the assumed supply curve.
Break-even ROAS is the zero line, not a floor. Above it you forgo a bounded profit; below it there is nothing bounding the loss.
Markup one: buying more volume reprices the volume you already had
The first markup has nothing to do with attribution or with your product. It is a property of buying anything in an auction. Winning more clicks requires bidding higher, and the higher bid is paid on every click you were already winning, not only on the marginal one. So the cost of the next click is not the price you see. It is the price you see, multiplied by one plus the reciprocal of the elasticity of click supply.
observed price per click: p
marginal cost of a click: c = p x ( 1 + 1/e )
profit is maximized where m x v = c, not where m x v = p
so the profit-maximizing target on this markup alone is
R* = (1/m) x (1 + 1/e) i.e. break-even, marked upThe elasticity e is finite for any real campaign — audiences are not unlimited — so the markup is strictly greater than one, always. Only as click supply becomes perfectly elastic does bidding to break-even become correct, and perfectly elastic supply means an infinite audience at a fixed price, which is not a description of any marketplace. The table below shows what the markup is worth on a 20%-margin product, where break-even is 5.00 throughout.
| Click-supply elasticity | Markup (1 + 1/e) | Profit-maximizing target | Bid, where full contribution = THB 2.00 |
|---|---|---|---|
| 0.5 — near-saturated audience | 3.00x | 15.00 | THB 0.67 |
| 1.0 | 2.00x | 10.00 | THB 1.00 |
| 1.5 | 1.67x | 8.33 | THB 1.20 |
| 3.0 | 1.33x | 6.67 | THB 1.50 |
| Unlimited supply (theoretical) | 1.00x | 5.00 | THB 2.00 |
Computed, not measured. The lower the elasticity — the more saturated your audience — the further above break-even the correct target sits. Source: DataGlass Labs technical note, Lemma 1c [1].
Markup two: some of the credited GMV was going to happen anyway
The second markup is attribution inflation: the ratio of GMV the platform credits to your ads to GMV your ads actually caused. Write it as a. The evidence that a is materially above one is not speculative. In eBay’s large-scale field experiment, Blake, Nosko and Tadelis found that returns to branded paid search were close to zero once measured against a proper control — the traffic converted whether or not the ad ran [3]. Lewis and Rao showed separately that the statistical power required to detect true advertising returns is far beyond what most campaigns can supply, which is why attributed figures dominate the record [4].
Attribution inflation enters as a haircut on the margin: your true contribution per credited baht is m ÷ a rather than m. Every result above survives that substitution unchanged, which is a convenient property — it means a is a multiplier on the correct target rather than a separate correction. Note that a is the one parameter here that platform reporting cannot supply even in principle. It requires a holdout or a geo test.
Markup three: the average click is worth more than the marginal one
The third markup is the one that makes the reported number structurally misleading rather than merely optimistic. A campaign buys its cheapest, best-converting traffic first. As it expands, the value of the marginal click declines. Write d for the rate of that decay. Then the average click across the campaign is worth 1 ÷ (1 − d) times the marginal one — and the Target ROAS is enforced on the average while the profit decision lives at the margin.
at the profit optimum:
reported ROAS = (a/m) x (1 + 1/e) / (1 - d)
marginal ROAS = a/m
reported / marginal = (1 + 1/e) / (1 - d)
Example at e = 1.5, d = 0.30:
(1 + 0.667) / 0.70 = 2.38x
The same campaign, the same instant, measured two ways.This overturns a comfortable reading — that a slack budget is inert. It is not. A target enforced on the campaign average keeps buying while the marginal click is already unprofitable, because the early cheap clicks hold the average up. The budget is then the only thing that stops the expansion, and raising it funds precisely the volume that lifts the price on every click and lowers the value of the last one.
| Value decay d | Markup 1/(1−d) | Reported ÷ marginal ROAS | Profit-maximizing target |
|---|---|---|---|
| 0.00 — no decay | 1.00x | 1.67x | 11.67 |
| 0.15 | 1.18x | 1.96x | 13.73 |
| 0.30 | 1.43x | 2.38x | 16.67 |
| 0.45 | 1.82x | 3.03x | 21.21 |
Computed on stated parameters. Attribution inflation needs a holdout or geo test to estimate and cannot be read off platform reporting; value decay needs bid-level variation. Source: DataGlass Labs technical note, Lemma 1d [1].
The same campaign, measured properly
Take the campaign from the top of this post and remove the two flattering assumptions. Let the marginal click decay at 0.30, normalised so the average click is still worth THB 10.00 at 1,000 clicks. Let attribution inflate by 1.4 — meaning 29% of credited GMV is demand the campaign captured rather than created, well inside the range the eBay experiment implies for branded traffic [3]. The seller enters 5.00, the break-even figure, as the guides advise.
| Per day | Entered target 5.00 | Optimum, target 16.67 |
|---|---|---|
| Bid / observed effective CPC | THB 1.71 | THB 0.74 |
| Marginal cost of a click | THB 2.85 | THB 1.24 |
| Clicks | 1,696 | 488 |
| Spend | THB 2,895 | THB 363 |
| Attributed GMV | THB 14,476 | THB 6,054 |
| Reported ROAS | 5.00 | 16.67 |
| Marginal ROAS | 2.10 | 7.00 |
| Profit on a true, incremental basis | −THB 827 | +THB 502 |
Attribution inflation 1.4, value decay 0.30, click-supply elasticity 1.5, contribution margin 20%. Computed on assumed parameters; no account was measured. Source: DataGlass Labs technical note, worked example, Case 4 [1].
The campaign reporting itself on target is spending eight times what it should and losing THB 827 a day. Its reported 5.00 is an average over 1,696 clicks; the 1,696th click returns 2.10 against the 7.00 it must clear to pay for itself. The reported figure cannot disclose this, because the average is held up by the first few hundred clicks, which are cheap and convert well. The corrected target of 16.67 is break-even of 5.00 multiplied by 1.40 for attribution, by 1.67 because extra volume reprices every click, and by 1.43 because the average click beats the marginal one.
A campaign hitting its Target ROAS exactly is not evidence that the target was right. It is evidence that the platform did what you asked.
What this changes about optimizing Shopee profit
markup block = a x (1 + 1/e) / (1 - d)
= 1.4 x 1.6667 / 0.70 = 3.333x
A 35% contribution accessory
break-even ROAS = 1 / 0.35 = 2.857
profit-maximizing target = 2.857 x 3.333 = 9.52
A 20% contribution appliance
break-even ROAS = 1 / 0.20 = 5.00
profit-maximizing target = 5.00 x 3.333 = 16.67
Same shop, same ad account, same auction.
One shop-wide Target ROAS cannot be right for both.Three practical consequences, in the order they are worth acting on. First, stop treating break-even as a safety line — it is the zero line, and a target set at or below it bids above the profit optimum by construction. If you have not computed it per product, our free break-even ROAS calculator does the arithmetic. Second, the correct target is product-specific and margin-specific, because break-even is 1 ÷ m and m varies across a catalogue far more than most sellers assume once vouchers and the free-shipping cost share are attributed per SKU. Third, a budget is not a crude instrument. It is the only lever denominated in money spent rather than value claimed, and in the loss region it is the only thing that can bound the damage: at a target of 4.00 in the budget sweep in how Shopee ads bidding works, a THB 2,400 budget turns a loss of THB 1,504 into a profit of THB 631, a swing of THB 2,135 a day.
Where this argument breaks
- The click-supply curve is assumed iso-elastic and is not fitted to any account. Elasticity almost certainly varies by product, by daypart and by how saturated the campaign already is, and the markup is sensitive to it — the difference between elasticity 0.5 and 3.0 moves the correct target from 15.00 to 6.67 on the same product.
- Attribution inflation cannot be read off platform reporting. Estimating it requires a holdout or a geo test, and the eBay result [3] is a branded-search finding at one large retailer, not a Shopee constant. Treat 1.4 as an illustrative parameter, not a benchmark.
- Value decay requires bid-level variation to identify. A campaign that has never varied its bid contains no information about how quickly its marginal click loses value.
- The optimum is derived for one campaign in isolation. With several campaigns and a shared budget, the correct rule is to equalise marginal return across them, and a per-campaign optimum is only the right answer when the budget is genuinely unconstrained.
- All of this prices a static auction. It says nothing about how competitors respond if many sellers raise their targets at once, which would lower clearing prices and raise every optimum in the market.
Methodology
No claim in this post rests on DataGlass customer data. The three markups and the profit-optimum formula are derived from the definitions stated in our technical note [1], which uses no dataset. Every table is arithmetic on stated parameters — a 2% click conversion rate, a THB 500 attributed order value, a 20% contribution margin, iso-elastic click supply, and where noted an attribution inflation of 1.4 and a value decay of 0.30 — chosen to be representative of a mid-market Thai marketplace listing rather than fitted to one. The two empirical results cited for attribution inflation are Blake, Nosko and Tadelis in Econometrica [3] and Lewis and Rao in the Quarterly Journal of Economics [4], neither of which is a Shopee study. Our own measured Shopee figures, including CPC and CPM by hour of day across 333.9 million impressions, are published separately as an open CC BY 4.0 dataset [5].