algo-ad-budget

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Ad Budget Allocation Optimization

广告预算分配优化

Overview

概述

Budget allocation distributes a total advertising budget across campaigns to maximize overall returns. Uses the equal marginal returns principle: allocate until the marginal CPA (or marginal ROAS) is equalized across all campaigns. Handles diminishing returns and budget constraints.
预算分配是将总广告预算分配到各个广告系列中,以最大化整体收益。采用等边际收益原则:分配预算直至所有广告系列的边际CPA(或边际ROAS)相等。可处理收益递减和预算约束问题。

When to Use

使用场景

Trigger conditions:
  • Distributing a fixed budget across multiple campaigns or channels
  • Identifying diminishing returns and optimal spend levels per campaign
  • Rebalancing budget after performance changes
When NOT to use:
  • When optimizing bids within a single campaign (use bidding strategy)
  • When there's only one campaign (nothing to allocate across)
触发条件:
  • 在多个广告系列或渠道间分配固定预算
  • 识别收益递减情况及每个广告系列的最优支出水平
  • 业绩变化后重新平衡预算
不适用场景:
  • 优化单个广告系列内的出价(请使用出价策略)
  • 仅存在一个广告系列(无跨系列分配需求)

Algorithm

算法

IRON LAW: Equal Marginal Returns Principle
Optimal allocation makes the MARGINAL return of the last dollar
equal across ALL campaigns. If Campaign A's marginal CPA is $5
and Campaign B's is $15, shift budget from B to A until they equalize.
Total budget constraint: Σ budget_i = total_budget.
IRON LAW: Equal Marginal Returns Principle
Optimal allocation makes the MARGINAL return of the last dollar
equal across ALL campaigns. If Campaign A's marginal CPA is $5
and Campaign B's is $15, shift budget from B to A until they equalize.
Total budget constraint: Σ budget_i = total_budget.

Phase 1: Input Validation

第一阶段:输入验证

Collect per-campaign: historical spend, conversions, revenue at multiple spend levels. Need at least 3 data points per campaign to fit response curve. Gate: Sufficient historical data to estimate response curves.
收集每个广告系列的以下数据:不同支出水平下的历史支出、转化量、收入。每个广告系列至少需要3个数据点来拟合响应曲线。 **准入条件:**有足够的历史数据来估算响应曲线。

Phase 2: Core Algorithm

第二阶段:核心算法

  1. Fit response curve per campaign: conversions = f(spend). Common models: log curve, power curve, or S-curve
  2. Compute marginal return curve: f'(spend) for each campaign
  3. Allocate: use Lagrangian optimization or iterative greedy — assign next marginal dollar to campaign with highest marginal return
  4. Apply constraints: minimum spend floors, maximum caps, channel-specific rules
  1. 为每个广告系列拟合响应曲线:转化量 = f(支出)。常见模型:对数曲线、幂曲线或S曲线
  2. 计算边际收益曲线:每个广告系列的f'(支出)
  3. 分配预算:使用拉格朗日优化(Lagrangian optimization)或迭代贪心算法——将下一单位边际资金分配给边际收益最高的广告系列
  4. 应用约束条件:最低支出下限、最高支出上限、渠道特定规则

Phase 3: Verification

第三阶段:验证

Check: total allocation = total budget, no campaign below floor or above cap, marginal returns approximately equal at boundaries. Gate: Allocation sums to budget, constraints satisfied.
检查:总分配额等于总预算,所有广告系列支出不低于下限或高于上限,边界处的边际收益大致相等。 **准入条件:**分配总额符合预算,约束条件均满足。

Phase 4: Output

第四阶段:输出

Return allocation table with expected performance projections.
返回包含预期业绩预测的分配表。

Output Format

输出格式

json
{
  "allocation": [{"campaign": "Search-Brand", "budget": 50000, "expected_conversions": 200, "expected_cpa": 250}],
  "total": {"budget": 200000, "expected_conversions": 650, "blended_cpa": 308},
  "metadata": {"optimization_method": "lagrangian", "response_model": "log_curve"}
}
json
{
  "allocation": [{"campaign": "Search-Brand", "budget": 50000, "expected_conversions": 200, "expected_cpa": 250}],
  "total": {"budget": 200000, "expected_conversions": 650, "blended_cpa": 308},
  "metadata": {"optimization_method": "lagrangian", "response_model": "log_curve"}
}

Examples

示例

Sample I/O

输入输出示例

Input: Budget: $100K, Campaigns: Search ($50K, 100 conv), Social ($30K, 60 conv), Display ($20K, 20 conv) Expected: Shift budget from Display (high marginal CPA) to Search (low marginal CPA). e.g., Search $60K, Social $30K, Display $10K.
**输入:**预算:10万美元,广告系列:搜索广告(5万美元,100次转化)、社交广告(3万美元,60次转化)、展示广告(2万美元,20次转化) **预期结果:**将预算从展示广告(边际CPA较高)转移到搜索广告(边际CPA较低)。例如:搜索广告6万美元,社交广告3万美元,展示广告1万美元。

Edge Cases

边缘情况

InputExpectedWhy
One campaign dominatesMost budget to winnerBut maintain minimum floor for others
All campaigns saturatedReduce total spendSpending more won't help
New campaign, no dataUse minimum test budgetNeed data before optimizing
输入预期结果原因
单个广告系列表现远超其他大部分预算分配给表现最佳的广告系列但需为其他广告系列保留最低支出下限
所有广告系列均已饱和减少总支出增加支出无法提升收益
新广告系列,无数据使用最低测试预算需要数据后再进行优化

Gotchas

注意事项

  • Response curve extrapolation: Don't optimize beyond observed spend ranges. The curve may change shape at higher spend levels.
  • Attribution overlap: Users may see ads across campaigns. Last-click attribution double-counts, inflating high-funnel campaign CPA. Use multi-touch attribution.
  • Diminishing returns assumption: Not all campaigns follow smooth diminishing returns. Some have step functions (e.g., reaching a new audience segment at a spend threshold).
  • Time dynamics: Response curves shift seasonally and competitively. Refit curves monthly or use rolling windows.
  • Minimum viable spend: Each campaign needs enough budget to exit the learning phase. Spreading too thin means no campaign gets sufficient data.
  • **响应曲线外推:**不要在观测到的支出范围之外进行优化。支出水平过高时,曲线形状可能发生变化。
  • **归因重叠:**用户可能会看到多个广告系列的广告。最后点击归因会重复计算,高估漏斗顶部广告系列的CPA。请使用多触点归因(multi-touch attribution)。
  • **收益递减假设:**并非所有广告系列都遵循平滑的收益递减规律。部分广告系列存在阶梯式变化(例如,达到某一支出阈值后触达新受众群体)。
  • **时间动态:**响应曲线会随季节和竞争环境变化。每月重新拟合曲线或使用滚动窗口。
  • **最低可行支出:**每个广告系列需要足够的预算来度过学习阶段。预算过于分散会导致所有广告系列都无法获得足够的数据。

References

参考资料

  • For response curve fitting methods, see
    references/response-curves.md
  • For multi-touch attribution integration, see
    references/attribution-integration.md
  • 响应曲线拟合方法,请参阅
    references/response-curves.md
  • 多触点归因集成,请参阅
    references/attribution-integration.md