What is marginal return?

Marginal return — also called 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 return is the one built for the question budgets actually ask, which is where to put the next increment.

The wording matters, which is why the column is not called marginal ROAS in the app. This figure is measured against contribution margin, not revenue, so it breaks even at 1.0× for every merchant: a euro in, a euro of margin back. A revenue-based marginal ROAS breaks even at 1 ÷ margin rate instead — 4.55× on a 22%-margin catalogue — so a channel reported at "marginal ROAS 3.0" by a tool with no cost data can be losing 34 cents on every euro while its dashboards point up and to the right.

Formula

marginal return = 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 return at 0.7× — the channel is deep into diminishing returns, and the next €1,000 would bring back 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. The regression is fitted against contribution margin, not revenue, so its slope is already net of COGS, shipping and fees. Marginal return is that slope 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 return below 1× means the model expects the next euro on that channel to come back as less than a euro of margin. That is not a weak result — it is spend that destroys money at the margin, and it can sit underneath a channel whose average return still looks healthy. 1.0× is the break-even line, and it is 1.0× for a 60%-margin catalogue and a 12%-margin one alike.

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 return 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 return is precisely the "stop scaling this" signal.
  • Comparing it against a revenue ROAS target. A 2× hurdle borrowed from a revenue-based tool is the wrong bar here; on margin, the bar is 1×.
  • Reading marginal return 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 return column of the channel table and in the ridge-vs-PyMC method comparison.