In brief: Budget optimization finds the channel-level spend split that maximizes total revenue within your constraints and risk tolerance. In Simba, the Budget Optimizer uses your fitted model’s response curves to recommend reallocations with uncertainty-aware, risk-adjusted recommendations.
Budget optimization answers the question every marketer faces: “Given a fixed budget, how should I allocate spend across channels to maximize total return?”
The answer depends entirely on the shape of each channel’s response curve. A channel that is under-saturated (operating in the steep part of its curve) will generate more incremental return per dollar than a channel that is already saturated. The optimizer finds the allocation where no dollar can be moved from one channel to another to improve total return.
The fundamental insight behind budget optimization is simple: at the optimal allocation, the marginal return per dollar should be equal across all channels.
If TV’s marginal return is $1.50 per dollar and social’s is $0.80, you should move budget from social to TV. As you do, TV’s marginal return falls (diminishing returns) and social’s rises (less saturation). The optimal point is where they meet.
Left: each channel has a different response curve shape, determined by its saturation parameters. Center: the marginal response curves (derivatives of the response curves) show diminishing returns — the optimizer finds the spend level where all channels intersect the same marginal return line. Right: the resulting reallocation shifts budget from over-saturated channels to under-saturated ones.
Without saturation curves, there is no concept of diminishing returns. A linear model would say “put everything in the highest-ROI channel” — which is wrong because ROI declines as you increase spend. The tanh saturation function (tanh(adstocked_spend / (scalar x alpha))) is what makes optimization possible: it tells the optimizer how much each additional dollar is worth at every spend level.
Simba’s optimizer solves a constrained optimization problem using the full posterior distribution from the fitted Bayesian model.
The optimizer maximizes:
maximize( mean_response - gamma x std_response )
Where:
This is a mean-variance optimization framework, similar in spirit to Markowitz portfolio theory in finance. The optimizer does not just chase the highest expected return; it also considers how confident the model is in that return.
The gamma parameter lets you choose where you want to sit on the risk-return tradeoff:
Left: as gamma increases, the allocation becomes more diversified — spreading budget more evenly across channels. Right: the efficient frontier shows the tradeoff. Each gamma value corresponds to a point on the frontier — higher gamma trades expected return for lower uncertainty.
The mean-variance framework comes from Modern Portfolio Theory (Markowitz, 1952), originally developed for financial portfolio allocation. The core insight transfers directly to media budgets: just as a financial investor balances expected return against portfolio volatility, a media planner balances expected revenue against the uncertainty in the model’s predictions.
The objective maximize(mean - gamma x std) is equivalent to finding the point on the efficient frontier where the slope equals 1/gamma. The efficient frontier is the set of allocations where no reallocation can increase expected return without also increasing uncertainty (or vice versa). Every point below the frontier is suboptimal — there exists a frontier allocation with the same risk but higher return.
Gamma controls where you land on this frontier:
| Gamma | Behavior | What It Means |
|---|---|---|
| 0 | Risk-neutral | Maximize expected return only. Concentrates budget in the channels with highest estimated ROI, regardless of how uncertain those estimates are. Best when you trust the model and want maximum upside. |
| 0.3 | Balanced | Good default. Moderately penalizes uncertain channels, producing a diversified but not timid allocation. |
| 0.7 | Conservative | Noticeably shifts budget toward channels with tighter posterior intervals. Use when some channels have wide uncertainty (e.g., new channels with limited data). |
| > 1.0 | Risk-averse | Strong diversification. Approaches equal allocation across channels. Use when model uncertainty is high overall or when you need predictable quarter-over-quarter performance. |
Without gamma, the optimizer would put disproportionate budget into a channel whose coefficient happens to have a high posterior mean — even if that mean comes with a huge credible interval (e.g., coefficient = 0.3 with 94% HDI of [0.01, 0.8]). That channel might actually be mediocre; the high mean could be driven by a few noisy data points.
With gamma > 0, the optimizer sees the full posterior distribution and naturally avoids over-investing in channels where the model is unsure. This produces allocations that perform well across the range of plausible parameter values, not just at the posterior mean.
A critical difference between Simba’s optimizer and simpler approaches is that it uses the full posterior distribution, not just point estimates.
Left: each thin line is a response curve from one posterior sample — with its own alpha, decay rate, and coefficient. The optimizer evaluates retained posterior draws to account for parameter uncertainty; their number depends on the fitted model. Right: at the optimal spend level, the distribution of possible responses is shown with its 94% HDI.
For each candidate allocation, the optimizer:
tanh(adstocked / (alpha x scalar)).The optimizer then searches for the allocation that maximizes mean - gamma x std, using SLSQP (Sequential Least Squares Programming — a standard numerical optimization algorithm for constrained problems) with analytically computed gradients for efficiency.
This means the optimizer respects uncertainty end-to-end: a channel with a high expected coefficient but wide uncertainty will be penalized when gamma > 0, because the optimizer can see that the return is unreliable.
The optimizer enforces two types of constraints:
Total spend must exactly equal your specified budget. This is a hard constraint — the optimizer will not recommend spending less or more than the budget you set.
You can set minimum and maximum spend limits per channel:
These bounds are set as percentages of total budget in the optimizer wizard. The optimizer validates that the bounds are feasible (sum of minimums does not exceed budget, sum of maximums is not less than budget) before running.
When optimizing across multiple time periods (e.g., a 12-week campaign), the optimizer uses laydown weights to distribute each channel’s total spend across periods. This accounts for the fact that:
You configure the laydown weights in the optimizer wizard, specifying how much of each channel’s budget goes to each period.
For brands that operate across multiple markets or product lines, Simba supports portfolio-level optimization — allocating budget across brands and channels simultaneously.
Portfolio optimization handles a complexity that single-brand optimization cannot: trademark and shared channels. A corporate campaign or brand search campaign may affect multiple brands simultaneously. The portfolio optimizer accounts for this by summing the response across all affected brands when evaluating spend on shared channels, ensuring the total cross-brand impact is captured in the allocation decision.
The optimizer produces a results table with per-channel detail:
The response estimates are computed via a full Bayesian prediction at the optimal allocation (not from the optimization objective itself), ensuring they are consistent with the fitted model.
| Budget Optimizer | Scenario Planner | |
|---|---|---|
| Purpose | Find the best allocation automatically | Explore “what-if” scenarios manually |
| Input | Total budget + constraints | Specific spend per channel |
| Output | Optimal allocation with expected return | Predicted outcome for your scenario |
| Algorithm | SLSQP constrained optimization | Forward prediction through the model |
| When to use | “What’s the best way to spend $1M?” | “What happens if I double TV and cut search?” |
Both use the same underlying model and response curves. The optimizer finds the mathematical optimum; the scenario planner lets you explore the space around it.
See this in action: Start your free 28-day trial — no credit card required.