预算策略完整文档
最后更新: 2026-04-08
状态: 二维矩阵已实现并验证,扩量分配策略待实现
一、系统概述
1.1 核心机制
通过调整 oCPM 出价(bid_amount)控制广告消耗速度,不设日预算限制(day_amount=0)。出价越高,系统分配的曝光越多,消耗越快;出价越低,消耗越慢。
1.2 运营输入
运营每天提供一句话指令,系统自动完成全部计算:
| 输入示例 |
解析结果 |
| "今天小程序预算10w" |
total_budget_yuan=100000, account_id=0(全账户) |
| "账户12345今日预算5w" |
total_budget_yuan=50000, account_id=12345 |
仅需一个参数:今日总预算(元)。其余全部由系统自动计算。
1.3 处理流程
运营输入 "今天小程序预算10w"
↓
Budget Agent(LLM)理解意图,提取参数
↓
┌─────────────────────────────────────────────┐
│ 纯计算层(无 LLM,无 API 调用) │
│ │
│ 1. 查询昨日效率数据(ODPS) │
│ 2. 查询当前广告出价/状态(ODPS) │
│ 3. 计算分位数阈值 │
│ 4. 每个广告 → 二维分类 → 决定动作 │
│ 5. 扩量场景 → 增量预算分配建议 │
└─────────────────────────────────────────────┘
↓
Agent 格式化展示方案 → 运营确认 → 执行出价调整
二、依赖数据
2.1 数据源
| 数据表 |
用途 |
关键字段 |
loghubods.touliu_data |
裂变效率数据(业务侧) |
rootsourceid, 首层小程序打开数, 裂变0层回流数, 总回流人数 |
loghubods.ad_put_tencent_creative_day |
创意-广告关联 |
creative_name, ad_id, creative_id |
loghubods.ad_put_tencent_creative_components |
创意组件(含落地页路径) |
creative_id, page_spec, page_type |
loghubods.ad_put_tencent_creative_data_day |
创意消耗数据(腾讯侧) |
creative_id, cost, valid_click_count, dt |
loghubods.ad_put_tencent_ad |
广告配置/状态 |
ad_id, account_id, bid_amount, ad_status |
2.2 数据关联逻辑
touliu_data(业务裂变数据)
↓ rootsourceid 关联
creative_components(创意组件,提取落地页中的 rootSourceId)
↓ creative_name 关联
creative_day(创意维度,关联到 ad_id)
↓ ad_id 关联
ad(广告配置,获取出价/状态)
↓ creative_id 关联
creative_data_day(创意消耗数据,获取 cost)
最终聚合为广告维度(ad_id)的效率数据:每个广告的消耗、点击、打开数、裂变回流数。
2.3 关键计算指标
| 指标 |
公式 |
含义 |
| 效率分(efficiency) |
裂变0层回流数 / cost |
每元消耗带来的裂变回流,越高越好 |
| scale_ratio |
今日预算 / 昨日消耗 |
>1 扩量,<1 缩量,≈1 持平 |
| 有效广告门槛 |
首层小程序打开数 >= 100 |
样本量不足的广告不参与决策 |
三、决策矩阵(已实现)
3.1 分位数阈值
基于昨日有效广告池(open_count >= 100)动态计算:
| 阈值 |
计算方式 |
含义 |
| ROI P70 |
效率分的第 70 百分位 |
高于此值 = 高ROI |
| ROI P30 |
效率分的第 30 百分位 |
低于此值 = 低ROI |
| 消耗 P50 |
单广告昨日消耗的中位数 |
高于此值 = 高跑量 |
实际数据参考(2026-04-07):ROI P70=3.63, P30=2.24, 消耗 P50=294元
3.2 策略判断
| scale_ratio 区间 |
策略名称 |
场景 |
| < 0.7 |
aggressive_scale_down |
大幅缩量 |
| 0.7 ~ 0.95 |
moderate_scale_down |
温和缩量 |
| 0.95 ~ 1.05 |
maintain |
持平 |
| 1.05 ~ 1.3 |
moderate_scale_up |
温和扩量 |
| > 1.3 |
aggressive_scale_up |
大幅扩量 |
3.3 五种动作
| 动作 |
含义 |
出价变化 |
执行方式 |
keep |
保持不动 |
不调整 |
跳过 |
increase |
提价放量 |
+5% ~ +15% |
自动执行 |
decrease |
降价控量 |
-5% ~ -15% |
自动执行 |
close |
建议关停 |
不调整 |
运营手动确认 |
observe |
观察不动 |
不调整 |
跳过 |
3.4 缩量矩阵
大幅缩量(scale_ratio < 0.7):
|
高跑量(≥ P50) |
低跑量(< P50) |
| 高ROI(≥ P70) |
keep |
keep |
| 中ROI(P30~P70) |
decrease -10% |
observe |
| 低ROI(< P30) |
decrease -15% |
close |
温和缩量(0.7 ≤ scale_ratio < 0.95):
|
高跑量(≥ P50) |
低跑量(< P50) |
| 高ROI(≥ P70) |
keep |
keep |
| 中ROI(P30~P70) |
decrease -5% |
observe |
| 低ROI(< P30) |
decrease -10% |
close |
3.5 扩量矩阵
大幅扩量(scale_ratio > 1.3):
|
高跑量(≥ P50) |
低跑量(< P50) |
| 高ROI(≥ P70) |
keep |
increase +15% |
| 中ROI(P30~P70) |
keep |
increase +5% |
| 低ROI(< P30) |
decrease -10% |
close |
温和扩量(1.05 < scale_ratio ≤ 1.3):
|
高跑量(≥ P50) |
低跑量(< P50) |
| 高ROI(≥ P70) |
keep |
increase +10% |
| 中ROI(P30~P70) |
keep |
increase +5% |
| 低ROI(< P30) |
decrease -10% |
close |
3.6 持平矩阵(0.95 ~ 1.05)
|
高跑量(≥ P50) |
低跑量(< P50) |
| 高ROI(≥ P70) |
keep |
keep |
| 中ROI(P30~P70) |
keep |
keep |
| 低ROI(< P30) |
keep |
close |
3.7 验证结果(2026-04-07 数据)
| 场景 |
预算 |
scale_ratio |
keep |
increase |
decrease |
close |
observe |
| 大幅缩量 |
10万 |
0.57 |
72 |
0 |
76 |
50 |
40 |
| 持平 |
17.5万 |
1.00 |
188 |
0 |
0 |
50 |
0 |
| 大幅扩量 |
25万 |
1.42 |
97 |
69 |
22 |
50 |
0 |
四、扩量预算分配策略(待实现)
扩量场景下,增量预算(= 总预算 - 昨日消耗)通过三个渠道承接:
4.1 三个扩量渠道
| 渠道 |
说明 |
风险 |
| 提价放量 |
已有广告提出价,吃更多曝光 |
出价过高会导致成本失控 |
| 新建广告 |
在表现好的账户下新建广告 |
低风险,复用已验证账户 |
| 新建账户 |
开新账户分散投放 |
新账户需要冷启动 |
4.2 先验分配比例
| 场景 |
提价放量 |
新建广告 |
新建账户 |
| 温和扩量(1.05~1.3) |
40% |
50% |
10% |
| 大幅扩量(> 1.3) |
30% |
45% |
25% |
这些比例是经验先验值,后续通过后验数据(调价后实际消耗达成率、新广告冷启动成功率、新账户存活率)迭代优化。
4.3 新建广告推荐账户
推荐条件:
- 该账户下高ROI广告占比 ≥ 40%
- 该账户昨日消耗 ≥ 账户消耗中位数(稳定账户)
每个推荐账户输出:
- 建议承接预算金额(按效率加权分配)
- 参考出价 = 该账户下高ROI广告的出价中位数
4.4 新建账户建议
- 参考单账户日消耗 = 现有账户消耗中位数
- 建议新建数量 = 新建账户预算 / 参考单账户日消耗(向上取整,至少 1)
- 参考出价 = 全局高ROI广告出价中位数
五、出价边界与约束
| 约束 |
值 |
说明 |
| 最低出价 |
10 分(0.10 元) |
低于此值跳过 |
| 最高出价 |
10000 分(100 元) |
上限保护 |
| 出价单位 |
分 |
1 元 = 100 分 |
| 调整频率 |
每天一次 |
避免频繁调整导致系统震荡 |
| 调整后观察期 |
≥ 2 小时 |
等系统消化出价变化 |
六、账户级评估
独立于出价调整,提供账户维度的健康度视图:
| 稳定性标签 |
条件 |
含义 |
| 稳定 |
昨日消耗 ≥ 中位数 |
跑量正常 |
| 一般 |
昨日消耗 ≥ P30 |
有消耗但偏低 |
| 低量 |
昨日消耗 < P30 |
几乎没跑量 |
扩量建议:稳定 + 效率分高于中位数的账户 → 适合新建广告扩量。
七、代码文件索引
| 文件 |
职责 |
tools/budget_calc.py |
核心计算引擎(阈值、分类、决策、格式化) |
skills/budget_strategy.md |
Agent 领域知识(策略规则速查) |
prompts/budget.prompt |
Budget Agent 提示词(流程、输出格式) |
test_budget.py |
纯计算层测试脚本(不调 API) |
关键函数
| 函数 |
输入 |
输出 |
_compute_thresholds(df_valid) |
有效广告 DataFrame |
{roi_p70, roi_p30, cost_p50} |
_classify_ad(efficiency, cost, thresholds) |
单广告效率分+消耗+阈值 |
(roi_level, volume_level) |
_decide_action(roi_level, volume_level, strategy) |
分类+策略 |
(action, adj_ratio) |
_determine_strategy(scale_ratio) |
预算/昨日消耗比 |
策略名称字符串 |
budget_calculate_from_data(...) |
账户ID+预算+日期 |
完整调整方案 |
account_evaluate(...) |
日期 |
账户健康度评估 |
bid_adjustment_execute(...) |
调整方案列表 |
执行结果 |
八、后续迭代方向
| 方向 |
说明 |
依赖 |
| 后验强化 |
用调价后实际数据迭代矩阵幅度参数(含弹性出价公式:新出价 = 旧出价 × (1 + α × ln(实际ROI/目标ROI)) × 预算压力系数) |
调价前后消耗/ROI对比数据、目标ROI基准线 |
| 赔付规则保护 |
close 前检查广告累计转化数是否接近 6 个(腾讯赔付门槛),接近则改为 keep/increase 以触发赔付 |
广告维度累计转化数据 |
| 扩量提价幅度收敛 |
当前 +10%~+15% 偏激进,参考行业实践应控制在 +3%~+5%,配合后验数据迭代 |
后验强化完成后调整 |
| 扩量预算分配 |
提价/新建广告/新建账户三渠道分配 |
本文档第四章设计 |
| 日内 PID 流速控制 |
分钟级监控消耗偏差,动态微调出价,防止预算过早耗尽或花不完 |
实时消耗数据 |
| 时段差异化出价 |
按时段调整出价系数 |
分时段投放数据 |
| 公众号渠道 |
GT/GW roi + 即转 roi |
公众号数据接入 |
| 样本不足广告关停 |
独立规则判断是否关停 |
关停策略定义 |
| 账户关停判断 |
7天有开启广告但无消耗 → 关停 |
账户历史数据 |