Simba documentation

Saturation Curves — Understanding Diminishing Returns in Media Spend

In brief: Saturation curves show when extra spend stops producing proportional returns — the point of diminishing returns for each channel. In Simba, these are estimated automatically per channel and displayed on the response curves tab.

Every marketing channel hits a point of diminishing returns. The first thousand dollars you spend on paid search generates more conversions per dollar than the hundred-thousandth dollar. Saturation curves model this relationship mathematically, and they are one of the most important components of any Marketing Mix Model.


The Concept of Diminishing Returns

Diminishing returns is a fundamental economic principle: as you increase investment in a single input while holding everything else constant, each additional unit of investment produces a smaller incremental gain than the previous one.

In marketing, this happens because:

Ignoring diminishing returns leads to dramatically wrong conclusions. A linear model would suggest that doubling your TV spend doubles your TV-driven revenue. In reality, the incremental gain from doubling spend is almost always much less than double.


The tanh Saturation Function

Simba uses the hyperbolic tangent (tanh) saturation function to model diminishing returns. The function takes the adstocked spend for a channel and maps it to a value between 0 and 1, representing the fraction of maximum possible effect.

The Formula

The exact formula implemented in Simba is:

effective_spend = tanh( x / (scalar x alpha) )

Where:

The product scalar x alpha acts as the effective half-saturation point — the spend level at which the tanh function reaches approximately 0.76 (tanh(1) = 0.76). Smaller values of this product mean the channel saturates faster; larger values mean it can absorb more spend before flattening.

The tanh saturation function Left: varying alpha with a fixed scalar shows how the shape parameter controls curvature. Center: varying scalar shifts the curve along the spend axis. Right: the tanh curve versus a linear assumption — the shaded area represents overstated effect from ignoring diminishing returns.

Numerical Stability

The implementation includes two safeguards for numerical stability:

These are implementation details that do not affect the mathematical interpretation of the curve.


The Two Saturation Parameters

Unlike simpler formulations that use a single “scale” parameter, Simba’s tanh function uses two distinct parameters that serve complementary roles.

Scalar (Scale)

The scalar parameter anchors the saturation curve to the scale of your data. During model fitting, it is set to the maximum observed value for each channel. This means:

The scalar is not estimated by the model — it is fixed from your data. In the UI, the “Saturation” column in the prior table displays this value, and you can adjust it if you have reason to believe the channel’s potential range extends beyond the historical maximum (for example, if you plan to significantly increase spend).

Alpha (Shape)

The alpha parameter controls the curvature of the saturation function. It determines how quickly the channel transitions from the efficient (steep) region to the saturated (flat) region:

Alpha is estimated by the model using a Gamma prior:

A wider alpha_sd gives the model more freedom to learn the saturation shape from data. A narrow alpha_sd constrains the model to stay close to the prior mean of 1.7.


Interpreting Saturation Curves

Simba visualizes the fitted saturation curve for each channel, showing the relationship between spend and modeled effect.

Saturation zones and marginal returns Left: the saturation curve with three spend zones highlighted. Right: the marginal return curve (the derivative of the saturation function) shows the incremental effect of each additional dollar.

The Efficient Zone (Low Spend)

The initial steep portion of the curve represents the range where your spend is most efficient. Each additional dollar generates a large incremental effect. If your current spend for a channel falls in this region, there may be opportunity to increase investment profitably.

The Transition Zone (Moderate Spend)

The middle portion of the curve is where diminishing returns begin to take hold. Spend is still productive but less efficient than at lower levels. Many well-optimized channels operate in this zone.

The Saturated Zone (High Spend)

When the curve flattens, additional spend produces very little incremental effect. If a channel’s current spend falls in this region, the model is suggesting that the budget would generate more return if reallocated to a less-saturated channel.

Marginal Return Curves

The marginal return curve — the derivative of the saturation function — shows the incremental effect of one additional dollar at each spend level. This is directly used by Simba’s optimizer: it allocates budget such that the marginal return per dollar is equalized across all channels, maximizing total incremental outcome for a given budget.


Channel-Specific Saturation

Different channels saturate at different rates because they have different audience sizes, frequency dynamics, and competitive environments.

Channel-specific saturation profiles Illustrative saturation profiles for four channel types. Brand search saturates quickly (small scalar, low alpha) while TV has a long runway before diminishing returns (large scalar, high alpha).

Typical patterns:

Simba estimates the saturation parameters from your data, with alpha_sd controlling how much freedom the model has to deviate from the prior mean of 1.7. If you have domain knowledge about a channel’s saturation behavior, you can adjust the scalar and alpha_sd in the prior table. See Priors and Distributions.


The Transformation Pipeline: Adstock Then Saturation

A critical aspect of Simba’s model is the order of operations. For each media channel, the transformation pipeline is:

  1. Adstock (carryover) is applied first, spreading each period’s spend across subsequent periods according to the channel’s decay rate.
  2. Saturation (diminishing returns) is applied to the adstocked values, mapping them to the 0–1 range via the tanh function.
  3. The saturated values are multiplied by the channel coefficient to produce the channel’s contribution to the outcome.

The adstock-then-saturation pipeline Left: raw weekly spend shows concentrated bursts. Center: after geometric adstock (decay=0.6), spend is smoothed across weeks. Right: after tanh saturation, the peaks are compressed — high-spend weeks produce less incremental effect per dollar than low-spend weeks.

This ordering matters because adstock smooths out spend spikes before saturation is applied. A heavy spend week is partially spread over subsequent weeks, which moderates the apparent diminishing returns. If saturation were applied first, the heavy spend week would be aggressively capped, and the subsequent carryover would be much smaller.


Configuring Saturation in Model Setup

When setting up a model in Simba, you configure saturation as part of the channel prior specification.

Smart Defaults

Simba’s smart priors automatically calculate saturation parameters for each channel:

Manual Prior Configuration

If you have strong domain knowledge about a channel’s saturation behavior, you can adjust:

UI Field Parameter Effect
Saturation scalar Shifts the curve along the spend axis. Increase if you expect to scale spend well beyond historical levels.
Diminishing Return / alpha_sd alpha_sd Controls how much the model can deviate from the alpha mean of 1.7. Wider values give the model more freedom.

Coefficient Adjustment for Saturation

An important detail of smart prior calculation: channel coefficient priors are pre-adjusted for expected saturation. Specifically, the coefficient mean is divided by tanh(avg_spend / (max_spend x scale)). This means the coefficient reflects the linear-equivalent effect at historical spend levels, so the posterior coefficient is interpretable as the effect per unit of saturated media.


Why Saturation Matters for Optimization

Saturation curves are the single most important input to budget optimization. Without them, an optimizer would simply recommend putting all budget into the channel with the highest average ROAS — which ignores the fact that ROAS declines as spend increases.

Simba’s optimizer evaluates the full response curve (adstock + saturation + coefficient) across all posterior samples to account for parameter uncertainty. It can:

  1. Identify channels that are under-saturated (spending in the steep part of the curve) and recommend increasing investment.
  2. Identify channels that are over-saturated (spending in the flat part of the curve) and recommend shifting budget elsewhere.
  3. Find the optimal allocation where the marginal return per dollar is equalized across all channels, maximizing total incremental outcome for a given budget.

The optimizer uses the exact same tanh function and posterior parameter samples as the fitted model, so the response curves used for optimization are fully consistent with the model’s estimates.


Key Takeaways


See this in action: Start your free 28-day trial — no credit card required.


Next Steps