Multi-Channel Budget Allocation and Bidding
Recently I’ve been researching multi-channel bidding problems. Quoting Google Ads’ Power More Conversions and Value through Cross-Channel Bid Optimization:
Traditionally, advertisers have applied automated bidding to campaigns that target a single channel. For example, they might use a bid strategy that maximizes conversion value on separate campaigns for Search, Display, and Video. But there are limitations to this siloed approach. But multi-channel bid optimization can help you to drive better results compared to single-channel bid optimization by maximizing marginal CPA or ROAS in each and every auction
Simply put, when a campaign runs across more traffic positions simultaneously, budget marginal utility can be better optimized. This is intuitive - with richer traffic inventory, the same budget can theoretically achieve better efficiency. This is similar to “universal delivery” products recently launched by various domestic media platforms. These products provide lower-barrier solutions for advertisers, saving budget allocation or bid setting across channels, while platforms use algorithmic capabilities to improve budget efficiency.
From a technical perspective, multi-channel raises two questions:
- Is unified bidding optimal? If not, how to do per-channel bidding
- Should budget be explicitly allocated to each channel
The multi-channel examples above are all within one large platform, where budget and bidding across channels can be easily shared. Another common multi-channel definition is cross-platform, e.g., advertisers running on both Google and Meta, where budget and bidding clearly can’t be shared. From the advertiser’s perspective, how to optimally allocate is also worth discussing.
This article mainly discusses the former: budget allocation and bidding when running on multiple channels within the same platform. Also briefly mentions research on cross-platform scenarios.
As mentioned above, for multi-channel within one platform, two problems need solving: bidding (whether to bid independently per channel) and budget allocation (whether to limit each channel’s budget). Let’s discuss both.
Unified Bidding vs Per-Channel Bidding
A common question in multi-channel is whether unified bidding (using the same bid across all channels) is optimal.
Intuitively, treating all channels as one unified ad slot with unified bidding seems reasonable? But deeper analysis suggests otherwise. We can roughly divide bidding products into cost-based and non-cost-based.
For cost-based bidding (like target-cost, cost-cap), bidding is often based on posterior data, essentially providing fallback for model prediction inaccuracy. When each channel’s model predictions are accurate, unified bidding is optimal, but this rarely holds. More commonly, channel A overestimates while channel B underestimates, or overestimation degrees differ. With only a unified bid, handling inconsistent over/underestimation across channels is difficult - e.g., raising bid solves underestimated channels but worsens overestimated ones.
Non-cost-based bidding (like lowest-cost) doesn’t have this problem, but often controls costs indirectly through budget allocation. An important signal for budget allocation curves is channel traffic distribution, which tends to allocate more budget to time periods with more traffic. Since traffic distributions differ across channels, optimal budget allocation curves also differ.
Therefore, for both cost-based and non-cost-based bidding, per-channel independent bidding is often more reasonable. Two common approaches:
- All channels bid independently - collect data and pace independently
- Calculate a base bid based on all channels’ posterior data, then each channel perturbs around this base
Choosing which approach depends on bid type, data sparsity, etc.
Cost-based bidding theoretically works with either approach. For target-cost and cost-cap products where advertisers have explicit cost targets/limits, each channel can bid independently by anchoring to the advertiser’s explicit requirements. The issue is data sparsity - approach (1) requires sufficient posterior data per channel, otherwise cold start problems are severe.
For lowest-cost non-cost-based products, approach 1 is difficult for two reasons:
First, approach 1 requires explicit budget per channel, which doesn’t exist in universal delivery scenarios (can be algorithmically allocated, mentioned in budget allocation section below).
Second, while nobid has no explicit cost constraint, cost differences between channels shouldn’t be too large. Intuitively, higher-cost channels should align with lower-cost channels, making it a dynamic target-cost product with no guarantee of budget depletion. In practice, one main channel spends the budget while others align costs to it.
In summary, the basic view is per-channel bidding is often optimal in practice. Whether to make channels completely independent depends on multiple factors. For products where advertisers explicitly express costs, theoretically independent bidding is possible, but requires sufficient posterior data per channel. For lowest-cost without explicit per-channel budget, independent bidding is difficult - most intuitive approach is perturbing around main channel’s bid as a dynamic target-cost product. Another approach mentioned below is budget allocation across channels.
Budget Allocation
Budget allocation is closely related to bidding, especially for lowest-cost products where budget allocation is the main control mechanism. The main question is whether to explicitly allocate budget to each channel. This also depends on bid type.
Cost-Based Bidding
For target-cost or cost-cap products with explicit given_cpa, since there’s an explicit cost target, theoretically budget can be shared - each channel paces posterior cost to reach the target. No explicit budget division needed - whichever channel can spend more under given_cpa constraint is better. But shared budget + posterior-based pacing target-cost has other issues.
Besides data sparsity mentioned above, cost-based bidding with posterior pacing always faces delayed feedback, making current posterior cost inaccurate, often requiring modeling solutions (models also face this - see Delayed FeedBack In Computational Advertising).
Some industry approaches do budget division, like Spending Programmed Bidding: Privacy-friendly Bid Optimization with ROI Constraint in Online Advertising, which validates better results through experiments. The modeling approach is worth learning.
SPB roughly: based on posterior data (not necessarily very real-time, balancing timeliness vs effectiveness trade-off), offline model cost2convert function, calculate budget based on given_cpa, then spend budget along budget allocation curve. This theoretically reduces the above issues. The paper states:
SPB is a two-stage framework that separates long horizon delivery spend planning (the macro stage) and short horizon bidding execution (the micro stage). The macro stage models the target ROI to achieve maximum utility and derives the expected spend, whereas the micro stage optimizes the bid price given the expected spend.
The key is modeling cost2convert function \(f(cost) = convert\). A common prior assumption is marginal cost gradually increases as cost increases (or conversion growth rate decreases). As shown below (x-axis: cost, y-axis: conversions). This is intuitive - for a campaign, cheap conversions are exhausted, requiring higher bids for more conversions, so conversion cost increases.

With the above definition, cost formula is \(\frac{cost}{f(cost)}\), and marginal cost is the inverse of the curve slope: \(\frac{1}{f'(cost)}\). Based on the increasing marginal cost assumption, we can further assume marginal cost has linear relationship with conversion count \(f(cost)\) (not necessarily linear in practice, just needs to be increasing):
\[\frac{1}{f'(cost)} = \omega * f(cost) + b\]
Through derivation:

We get \(f(cost)\) form (constant \(C\) omitted, and since \(f(cost)\) can’t be negative, only take positive part):
\[f(cost) = \frac{\sqrt{2 * \omega * cost + b^2} - b}{\omega}\]
The above derivation could also directly give \(f(cost)\) a prior functional form based on increasing marginal cost. Here we assumed slope then derived, but not much essential difference.
Using client’s given_cpa, we get:
\[given\_cpa = \frac{cost}{f(cost)} = \frac{\omega * cost}{\sqrt{2 * \omega * cost + b^2} - b}\]
Solving for allocated budget:
\[cost = \frac{(2 * given\_cpa - b)^2 - b^2}{2 * \omega}\]
Therefore, by fitting \(\omega\) and \(b\) from historical data, we can calculate budget allocation from given_cpa.
Applying to multiple channels: fit each channel’s own \(\omega\) and \(b\), then calculate each channel’s allocated budget using the formula above.
But this approach has limitations: modeling accuracy may not be very high (if we could accurately model cost2convert, we could predict actual campaign cost); the prior form may not fit all campaigns (piecewise linear fitting theoretically better than pure prior); may not even satisfy the increasing marginal cost assumption; also requires sufficient conversions for modeling, otherwise needs exploration bidding.
Non-Cost-Based Bidding
As mentioned in unified bidding, for lowest-cost non-cost-based products, fully independent bidding is difficult because it requires explicit per-channel budget, which doesn’t exist in universal delivery scenarios. But can we algorithmically calculate one? The SPB paper’s calculation is budget allocation - can we reuse it?
For lowest-cost without advertiser-given bid, no given_cpa, so can’t directly apply the above approach. But can we set a margin_cpa as given_cpa, then minimize margin_cpa while spending all budget? Yes. First look at cost2convert form:
\[f(cost) = \frac{\sqrt{2 * \omega * cost + b^2} - b}{\omega}\]
Looking at this function, it looks roughly like below. From red to black line, \(\omega\) changes from 1 to 3, \(b\) unchanged. From red to green line, \(b\) changes from 1 to 5.2, \(\omega\) unchanged. Both cases with same cost spend give fewer conversions, i.e., higher conversion cost.

Since earlier derivation assumed marginal cost has linear relationship with conversion count \(f(cost)\):
\[\frac{1}{f'(cost)} = \omega * f(cost) + b\]
Increasing \(\omega\) and \(b\) represents increasing cost, or each channel’s fitted \(\omega\) and \(b\) represent its conversion cost level - larger \(\omega\) and \(b\) mean higher cost.
From the final budget allocation formula, a channel with larger \(\omega\) and \(b\) gets less budget - the algorithm allocates more budget to lower-cost channels.
\[cost = \frac{(2 * given\_cpa - b)^2 - b^2}{2 * \omega}\]
From the formula, \(cost\) and given_cpa are positively correlated. Lower given_cpa means less spendable budget because cheap conversions are limited. With this monotonicity property, binary search can find minimum margin_cpa that just spends the budget.
Based on this found margin_cpa, calculate each channel’s budget using the formula, then lowest-cost products naturally allocate budget for bidding and delivery.
Cross-Platform Multi-Channel
The above discusses multi-channel within one platform. There’s also research on cross-platform budget allocation.
The paper Multi-channel Autobidding with Budget and ROI Constraints addresses, from the advertiser’s perspective, how to set each channel’s budget and ROI to achieve optimal marketing results (the two ways advertisers affect delivery results).
The paper’s key conclusion: Solely optimizing per-channel budgets are sufficient to maximize conversion. The proof is complex, omitted here. Quoting the paper:
In Theorem 3.2 of Section 3, we show that solely optimizing for per-channel ROIs is inadequate to optimize conversion across all channels possibly resulting in arbitrary worse total conversions compared to the hypothetical global optimal where advertisers can optimize over individual auctions. In contrast, in Theorem 3.3 and Corollary 3.4 we show that solely optimizing for per-channel budgets allows an advertiser to achieve the global optimal.
Based on this conclusion, the paper designs an algorithm for per-channel budget allocation:

The algorithm combines SGD and UCB, maximizing total conversions under budget constraints. It applies the Multi-Arm Bandit paradigm, discretizing continuous budget space into finite arms (candidate budget values), then uses MAB’s exploration-exploitation: iteratively select arms, observe feedback, update statistics, optimize budget allocation. The difference is introducing dual variables and sgd (formula 10 above) to handle budget constraints, which traditional MAB doesn’t involve.
But in practice, for various advertisers especially SMBs, directly using this method is difficult due to high usage barrier. In practice, advertisers often spend small amounts on each platform first to see results, then decide which platform gets more budget based on results. This pattern is similar to the SGD_UCB algorithm, just less precise.
Summary
This article mainly discusses bidding and budget allocation for multi-channel within one platform. For both cost-based and non-cost-based bidding, per-channel independent bidding is often more reasonable. Both types have two technical paradigms - choosing which depends on current business status, basically determined by experiments.
For cost-based bidding, theoretically budget can be shared with independent channel data collection and bidding. But another paradigm is like Spending Programmed Bidding: model cost2convert relationship, then explicitly allocate budget across channels based on given_cpa.
Non-cost-based bidding also has two paradigms: share budget with main channel’s cost as posterior cost, acting as dynamic target-cost product; or borrow the budget allocation approach above, search for margin_cpa, allocate budget across channels, then deliver based on budget allocation curves.