What is marginal ROAS?
Marginal ROAS is the return on the next euro, not the average euro: the extra contribution margin the model expects if a channel's spend rose slightly from where it is now. Average metrics — true ROAS, MER, MMM contribution — describe money already spent; marginal ROAS is the one built for the question budgets actually ask, which is where to put the next increment.
Formula
marginal ROAS = d(contribution margin) / d(spend), at current average spend
Worked example
A channel's true ROAS reads a comfortable 2.4×, but the MMM puts its marginal ROAS at 0.7× — the channel is deep into diminishing returns, and the next €1,000 would return about €700 of margin. Meanwhile a smaller channel shows 1.1× average but 1.6× marginal. Shifting budget from the first to the second lowers the blended average and raises total margin — the two figures pointing in opposite directions is the normal case, not a contradiction.
How Saldo Metrics computes it
Each MMM run fits a response curve per channel: weekly spend passes through adstock
(carry-over, decay chosen from a grid by fit quality) and a Hill saturation curve
before entering the regression. Marginal ROAS is the slope of that fitted curve at
the channel's current average adstocked spend — the channel coefficient times the
Hill curve's derivative at that point, times the steady-state adstock multiplier
1/(1−θ) (a euro spent today keeps working in later weeks, and the derivative
credits that tail). It is stored per run in fact_mmm_channel_contribution and
served from the latest run per method by v_mmm_channel_contribution. A marginal
ROAS below 1× means the model expects the next euro on that channel to return less
margin than it costs.
Why it matters
Every average-return metric overrates saturated channels: a channel's first thousand euros can be spectacular while its fifty-first is worthless, and the average blends the two. Marginal ROAS ranks channels by what the next increment earns, which is the only ranking that budget reallocation should follow.
Common mistakes
- Reallocating on averages when marginal figures exist. A high true ROAS with a low marginal ROAS is precisely the "stop scaling this" signal.
- Reading marginal ROAS as valid far from current spend. It is a local slope; doubling a channel's budget moves it to a different point on the curve where the slope is lower. Scale in steps, refit, re-read.
- Overtrusting the point estimate. It inherits every fit limitation — thin spend variation, collinear channels — and the ridge and PyMC methods can disagree; check the method comparison before a big move.
Where you see this in the app
Marketing → MMM, as the marginal ROAS column of the channel table and in the ridge-vs-PyMC method comparison.
- Formula
- estimated extra contribution margin per extra euro of spend, at current spend level
- How Saldo Metrics computes it
- canonical.v_mmm_channel_contribution, canonical.fact_mmm_channel_contribution
Last reviewed 2026-08-29