Marginal ROAS: why the next dollar earns less than the average one

Average ROAS tells you whether a channel was worth it. Marginal ROAS tells you whether the next dollar will be, and they can point in opposite directions.

Mike Taylor By Mike Taylor · Updated · 8 min read

Marginal ROAS is the incremental revenue you’d expect from the next dollar of ad spend, given where your spend is now. It’s the slope of a channel’s response curve at the current spend level, which is why it’s almost always lower than the average ROAS you’d get by dividing all of the channel’s incremental revenue by all of its spend. Marginal ROAS (often shortened to mROAS, or mROI in Google’s Meridian) is the number that should decide whether a budget goes up or down, and it’s also the number most marketing reports leave out.

I spent years running a growth agency that managed over $10 million a year in Facebook ads, and the conversation I had most often with clients went like this: the channel has a 4x ROAS, so why aren’t we doubling it? The answer was nearly always that the 4x was an average over money that had been spent at a time when the audience was fresh, the creative was new and the cheapest conversions hadn’t been taken yet. The next dollar was going to buy something much more expensive. In the course I put it more simply, that “the next pound is different from the average pound,” and once you’ve seen it on a curve it’s hard to unsee.

Average ROAS, incremental ROAS and marginal ROAS are three different numbers

People use “ROAS” to mean at least three different things, and mixing them up is behind a lot of bad budget decisions. Platform-reported ROAS is revenue the ad platform attributed to its ads, divided by spend; it includes people who would have bought anyway and double counts conversions that several platforms claim. Incremental ROAS (iROAS) only counts revenue the ads actually caused, as estimated by a marketing mix model or an incrementality test, divided by spend. Marginal ROAS takes the incremental view one step further and asks what happens to incremental revenue if you change spend a little from where it is today.

MeasureFormulaQuestion it answers
Reported (attributed) ROASAttributed revenue ÷ spendHow much revenue did the platform credit to its ads?
Incremental ROAS (iROAS)Incremental revenue ÷ spendAcross all the money we spent, how much revenue did the ads cause?
Marginal ROAS (mROAS)Δ incremental revenue ÷ Δ spendIf we spend a little more (or less) from here, how much revenue changes?

The course has a concept exercise that shows why the first two shouldn’t be confused. In the invented Northstar case, ads cause revenue of 100x/(40+x)100x/(40+x) (in £k), so at £40k of spend they add £50k and incremental ROAS is £1.25 per £1. If baseline sales (what you’d sell with no ads at all) are £100k, a ROAS calculated on total sales comes out at £3.75; raise the baseline to £180k and it reads £5.75, even though the ads are doing exactly the same work. Average incremental ROAS stays at £1.25 throughout, and the marginal ROAS at £40k is lower still, about £0.63, because the curve is already halfway to saturation. Three ways of describing the same channel give you three very different stories.

How to calculate marginal ROAS

If you have a response curve, marginal ROAS is its derivative with respect to spend. For the Hill curve that most MMM tools use, with maximum response aa, half-saturation spend kk and shape ss, incremental revenue is R(x)=a xs/(xs+ks)R(x) = a\,x^s / (x^s + k^s) and the marginal ROAS is:

R′(x)=a s ksxs−1(xs+ks)2R'(x) = \frac{a\, s\, k^s x^{s-1}}{(x^s + k^s)^2}

With s=1s = 1 (the ax/(k+x)a x/(k+x) curve used in the Northstar case) this simplifies to ak/(k+x)2a k / (k + x)^2, and there’s a tidy result hiding in it: marginal ROAS divided by average ROAS is k/(k+x)k/(k+x). At the half-saturation point, the next dollar is worth exactly half as much as the average dollar, and at three times the half-saturation spend it’s worth a quarter. Search in the Northstar case, with a=1000a = 1000 and k=100k = 100 at £150k of spend, averages £4.00 per £1 but its marginal ROAS is 1000×100/2502=1.61000 \times 100 / 250^2 = 1.6.

In practice most people calculate it as a finite difference instead: predict incremental revenue at current spend, predict it again at slightly higher spend, and divide the extra revenue by the extra spend. Meridian defines mROI exactly this way, scaling spend by (1+δ)(1+\delta) with δ\delta a small number such as 0.01, and Robyn’s budget allocator evaluates each curve at the optimized spend plus one unit of currency. Be careful with the size of the step, though. In the course, the same channel with half-saturation at £40k gains £10k of revenue when spend goes from £40k to £60k, but only about £1.82k when spend goes from £160k to £180k. Those are both “the return on £20k”, and neither is the marginal ROAS at the starting point multiplied by £20k, because the slope keeps falling over the step.

Interactive
Read average and marginal ROAS off the same curve

Move the spend slider. The dashed line from the origin is average ROAS; the yellow tangent is marginal ROAS, the return on the next dollar. Set a target to see where the next dollar stops paying.

Edit the response curve
Incremental revenue vs spend
Average ROAS
–
Marginal ROAS
–
Next $10k adds
–
Spend where mROAS = target
–

ROAS vs spend
Spend and revenue in $k for one period. Incremental revenue = a × x^s / (x^s + k^s); the defaults (a = 1,200, k = 140, s = 1) match the social curve in the course's invented Northstar case. Marginal ROAS here is the exact slope; Meridian and Robyn approximate it with a small finite step (Meridian's docs use a 1% spend increase as the example; Robyn adds one unit of spend).

With the defaults (Northstar’s social curve at $120k), average ROAS is 4.62 but marginal ROAS is 2.49, which sits right on the breakeven of 2.50 for a 40 percent contribution margin. So this channel’s spend is about where a profit-maximizing marketer would put it, even though a 4.6x headline number makes it look like it’s crying out for more money. Drop the margin to 30 percent and the breakeven becomes 3.33: the widget shows that the last $35k or so of spend isn’t paying for itself, although the average ROAS hasn’t changed at all. Then set the shape to 2 to see an S-shaped curve, where marginal ROAS is low at first, rises above average ROAS and only then falls.

Why the next dollar is worth less than the last one

Diminishing returns in advertising come from a few places at once. Platforms auction your budget into progressively more expensive impressions as you scale, so your cost per thousand impressions rises. Your most responsive audiences (recent visitors, people already searching for you) are reached first, and each extra dollar has to find someone less likely to buy. Frequency climbs too, and the fifth time someone sees an ad does less than the first. A saturation curve is just a compact way of summarizing all of that into a single shape, and the diminishing returns brief walks through the intuition with a spreadsheet.

That shape is why average and marginal ROAS diverge. The average is pulled up by all the efficient early dollars, while the marginal return only reflects the last ones. A rising average can even coexist with a falling marginal: if a channel is cut back, its average ROAS goes up, because you’ve removed the least efficient dollars, and nothing about the underlying effectiveness has changed. That’s the same trap that makes blended metrics such as the marketing efficiency ratio look better every time you cut spend.

Using marginal ROAS to set budgets

Marginal ROAS earns its keep in two decisions. The first is how much to spend in total. Every dollar of spend that returns more contribution than it costs is worth making, so the profit-maximizing budget for a channel is where its marginal ROAS falls to your breakeven ROAS, which is 1 divided by your contribution margin before advertising. At a 40 percent margin that’s 2.5. A channel with a marginal ROAS of 3.2 should probably get more money, even if its average ROAS is lower than another channel’s, and a channel at 1.8 is losing money on its last dollars, even if its average ROAS looks spectacular.

The second decision is how to split a fixed budget. If one channel’s next dollar returns 2.8 and another’s returns 1.6, moving money from the second to the first raises total revenue, and you keep moving it until the marginal returns are equal or a constraint stops you. That equal-marginal-return principle is the whole logic of a budget allocator, and you can play with it on that page. Neither decision uses average ROAS at all. Average ROAS is still worth reporting, because it tells you whether a channel as a whole has paid back, but it’s a judgment on the past rather than a guide to the next move.

When I present this to a leadership team, I put both numbers side by side for every channel, with the current spend and the observed spend range marked on the curve. The conversation usually changes as soon as people see a channel with a 5x average and a 1.5x marginal, because it explains in one picture why “double down on what works” isn’t a budget strategy.

Where marginal ROAS can mislead you

Marginal ROAS is a slope, and slopes are harder to estimate than levels. A model can be reasonably confident about how much revenue a channel drove in total, while being much less sure how steep the curve is at the current point, because that depends on the saturation parameters, which are often weakly identified when a channel has always been run at similar spend levels. In a Bayesian model you’ll usually find the credible interval for mROI is wider than the one for ROI. I’d always ask to see that range before acting on a marginal number, and I’d treat a marginal ROAS calculated far outside the historical spend range as an assumption rather than an estimate.

It’s also local. Marginal ROAS at current spend tells you about a small change; it’s a poor guide to a large one, because the slope keeps changing along the way. If you’re contemplating doubling a channel, look at the predicted revenue at the new level and the average return on the extra spend, not just the slope at today’s level. And it’s conditional on everything else staying the same: the same creative, the same prices, the same cost per impression. Meridian’s own docs note that mROI implicitly assumes a constant cost per media unit, equal to the historical average. If CPMs rise as you scale, which they usually do, the true marginal return in dollars will be a bit worse than the curve suggests.

Finally, marginal ROAS is only as incremental as the model behind it. If the response curve was fitted to attributed conversions, or to a model that hasn’t separated the channel from seasonality and other confounding variables, the slope is just as biased as the level. The best way I know to tighten a marginal estimate is to run a spend-change experiment, such as a geo test that raises spend in some regions, and use it to calibrate the model. That measures the effect of a real change in spend, which is what marginal ROAS was supposed to describe in the first place. If you want to practise reading these curves on a worked case, the saturation and profit lessons in the Vexpower MMM course use the same Northstar numbers as this page.

Frequently asked questions

What is marginal ROAS?

Marginal ROAS is the incremental revenue you expect from the next dollar of advertising at your current spend level, which is the slope of the channel's response curve at that point. It is usually lower than average ROAS because of diminishing returns, and it is the number that should drive decisions about spending more or less.

What is the difference between iROAS and mROAS?

iROAS (incremental ROAS) is incremental revenue divided by spend for the whole budget, so it is an average over every dollar spent. mROAS (marginal ROAS) is the incremental revenue from the next small increase in spend. A channel can have an iROAS of 4 and an mROAS of 1.5 at the same time if it is well into saturation.

How do you calculate marginal ROAS?

Take the extra incremental revenue from a small increase in spend and divide it by that increase, for example the revenue the model predicts at 101 percent of current spend minus the revenue at 100 percent, divided by the extra 1 percent of spend. With a response curve formula you can also take its derivative. You need a model or an experiment for this, because platform-reported ROAS is neither incremental nor marginal.

What is a good marginal ROAS?

A good marginal ROAS is one above your breakeven ROAS, which is 1 divided by your contribution margin before advertising. At a 40 percent margin breakeven is 2.5, so a channel with a marginal ROAS of 3 can take more budget and one at 2 should probably take less. Spend that maximizes contribution is the level where marginal ROAS equals breakeven.

Can marginal ROAS be below 1 when average ROAS is high?

Yes. A channel whose first dollars were very efficient can show an average ROAS of 5 while its next dollar returns less than 1, because the average still includes all those early, efficient dollars. That is the typical pattern for a channel that has been scaled far past its point of saturation.

References

  1. Meridian: ROI, mROI and response curves ROI and mROI definitions; mROI uses a small proportional spend increase, with 1% as the example.
  2. Robyn source code: robyn_allocator() (allocator.R) Marginal response computed at optimized spend + 1; roi_marginal and cpa_marginal outputs.
  3. Jin et al. (2017), Bayesian Methods for Media Mix Modeling with Carryover and Shape Effects Hill saturation; the paper shows how to calculate ROAS and mROAS from posterior samples.
  4. Vexpower MMM course: Understand saturation, Turn revenue into profit, and the average-versus-incremental ROAS concept Invented Northstar curves and worked numbers.
Mike Taylor
Mike Taylor

I've built marketing mix models for Monzo Bank, Booking.com, Time Out, The AA and others, advised Google, Appsflyer and Recast on MMM, and teach marketing mix modeling on LinkedIn Learning. Before that I co-founded a 50-person growth marketing agency. I write the Vexpower MMM course.

Keep reading

Learn MMM by doing itThe Vexpower course walks through thirty lessons on one invented brand, with simulators, Python labs and a decision case you can defend.
See the course