多渠道多模型定价策略(1)
报价矩阵 + 期望收益率 → 用户价 + 分组倍率 + 渠道配置矩阵
报价矩阵告诉平台「成本是多少」,期望收益率告诉平台「想赚多少」。两者结合定用户价,其余(CE 倍率、HP 倍率、分组归属、Priority、Weight)全部自动推导。
| 缩写 | 全称 | 含义 |
|---|---|---|
| CE | cost-effective | 性价比组(折扣,倍率 < 1) |
| HP | high-performance | 高性能组(溢价,倍率 > 1) |
| auto | — | 均衡型(按 AutoGroups 顺序自动路由,实付倍率随路由结果而定) |
| 阶段 | 内容 |
|---|---|
| 输入 | ① 报价矩阵(CSV) ② 期望收益率(markup) |
| 算法 | Step 1 用户价 → Step 2 CE 倍率 → Step 3 HP 倍率 → Step 4 分组卖价 → Step 5 分组归属 → Step 6 Priority / Weight |
| 输出 | 用户价表 · 分组倍率 · 渠道配置矩阵(分组 / Pri / Wt) |
一、输入
本方案有两个输入:报价矩阵(事实输入)和期望收益率(战略输入)。
1.1 报价矩阵
一行一个上游渠道,一列一个模型。— 表示该渠道不支持该模型。
| 渠道 | M1 | M2 | M3 | M4 | M5 | M6 |
|---|---|---|---|---|---|---|
| 甲 | 8.0 | 15.0 | 12.0 | 14.0 | 13.0 | 16.0 |
| 乙 | 9.0 | 10.0 | — | 11.0 | 12.0 | — |
| 丙 | 11.0 | 12.0 | 13.0 | 12.0 | — | 15.0 |
| 丁 | — | 9.0 | 15.0 | 13.0 | 16.0 | 12.0 |
| 戊 | 10.0 | 11.0 | 14.0 | — | 9.0 | 14.0 |
| 己 | 12.0 | 13.0 | 10.0 | 16.0 | 11.0 | — |
脚本接受同等数据的 CSV 格式(空白单元格 = 不支持)。
1.2 期望收益率
平台的目标利润率,决定用户价高度:用户价 = 中位成本 × (1 + 期望收益率)
| 期望收益率 | 风格 | 效果 |
|---|---|---|
| 0.20 | 保守 | 用户价低,竞争力强,利润薄 |
| 0.25 | 行业标准 | API 转售标准(本文默认) |
| 0.35 | 激进 | 用户价高,利润厚,可能流失价格敏感用户 |
期望收益率无法从上游成本推导——它是平台的商业决策。
1.3 结构性默认
一般无需修改。
| 参数 | 默认值 | 说明 |
|---|---|---|
HP 溢价 hp_premium |
0.10 | HP 倍率 = 1 + 溢价 |
CE 冗余 min_redundancy |
3 | CE 组每模型至少 N 个盈利渠道 |
CE 缓冲 ce_buffer |
0.03 | CE 下限之上加 3% 安全余量 |
| 取整粒度 | 0.5 | 用户价取整到最近的 0.5 |
二、算法
以下以期望收益率 = 0.25、HP 溢价 = 0.10、N = 3 为例。
| Step | 计算 | 关键公式 |
|---|---|---|
| 1 | 用户价 | price[m] = round( median(cost[m]) × (1 + 期望收益率) ) |
| 2 | CE 倍率 | ce = min(0.95, max(第N便宜成本[m] / price[m]) + 缓冲) |
| 3 | HP 倍率 | hp = 1 + 溢价 |
| 4 | 分组卖价 | sell[m][g] = price[m] × ratio[g] |
| 5 | 分组归属 | profit = sell − cost > 0 → 入组 |
| 6 | Priority / Weight | 利润三等分 → 3/2/1;同层占比 → 1~100 |
Step 1 · 用户价
用户价 = 中位成本 × (1 + 期望收益率),取整到 0.5。
| 模型 | 中位成本 | 计算值 | 用户价 |
|---|---|---|---|
| M1 | 10.0 | 12.50 | 12.5 |
| M2 | 11.5 | 14.38 | 14.5 |
| M3 | 13.0 | 16.25 | 16.5 |
| M4 | 13.0 | 16.25 | 16.5 |
| M5 | 12.0 | 15.00 | 15.0 |
| M6 | 14.5 | 18.13 | 18.0 |
Step 2 · CE 倍率(由矩阵推导)
保证折扣后每模型至少 N 个渠道仍盈利:ce_ratio ≥ max(第N便宜成本[m] ÷ 用户价[m])
| 模型 | 用户价 | 成本排序 | 第 3 便宜 | 下限 |
|---|---|---|---|---|
| M1 | 12.5 | 8, 9, 10, 11, 12 | 10.0 | 0.80 |
| M2 | 14.5 | 9, 10, 11, 12, 13, 15 | 11.0 | 0.76 |
| M3 | 16.5 | 10, 12, 13, 14, 15 | 13.0 | 0.79 |
| M4 | 16.5 | 11, 12, 13, 14, 16 | 13.0 | 0.79 |
| M5 | 15.0 | 9, 11, 12, 13, 16 | 12.0 | 0.80 |
| M6 | 18.0 | 12, 14, 15, 16 | 15.0 | 0.83 |
CE 下限 = max(各模型下限) = 0.83,+3% 缓冲 → CE = 0.86
Step 3 · HP 倍率(溢价默认)
HP = 1 + 10% = 1.1。10% 是高性能档的行业惯例溢价——太小分组无意义,太大用户流失。
Step 4 · 分组卖价
分组卖价 = 用户价 × 分组倍率
| 模型 | 用户价 | CE (×0.86) | HP (×1.1) |
|---|---|---|---|
| M1 | 12.5 | 10.75 | 13.75 |
| M2 | 14.5 | 12.47 | 15.95 |
| M3 | 16.5 | 14.19 | 18.15 |
| M4 | 16.5 | 14.19 | 18.15 |
| M5 | 15.0 | 12.90 | 16.50 |
| M6 | 18.0 | 15.48 | 19.80 |
Step 5 · 利润判断 → 分组归属
利润 = 分组卖价 − 渠道成本,利润 > 0 → 入组。
M1 示例(CE = 10.75,HP = 13.75):
| 渠道 | 成本 | CE 利润 | HP 利润 | 归属 |
|---|---|---|---|---|
| 甲 | 8.0 | +2.75 ✓ | +5.75 ✓ | CE, HP |
| 乙 | 9.0 | +1.75 ✓ | +4.75 ✓ | CE, HP |
| 戊 | 10.0 | +0.75 ✓ | +3.75 ✓ | CE, HP |
| 丙 | 11.0 | −0.25 ✗ | +2.75 ✓ | HP |
| 己 | 12.0 | −1.25 ✗ | +1.75 ✓ | HP |
| 丁 | — | — | — | 不支持 |
全部模型汇总:
| 渠道 | CE 归属 | HP 归属 |
|---|---|---|
| 甲 | M1 M3 M4 | M1 M2 M3 M4 M5 M6 |
| 乙 | M1 M2 M4 M5 | M1 M2 M4 M5 |
| 丙 | M2 M3 M4 M6 | M1 M2 M3 M4 M6 |
| 丁 | M2 M4 M6 | M2 M3 M4 M5 M6 |
| 戊 | M1 M2 M3 M5 M6 | M1 M2 M3 M5 M6 |
| 己 | M3 M5 | M1 M2 M3 M4 M5 |
甲对 M2 在 CE 组亏损(12.47 − 15.0 = −2.53)→ 只进 HP。各模型中亏损的渠道×模型组合均被自动剔除。
Step 6 · Priority 与 Weight
| 参数 | 规则 |
|---|---|
| Priority | 同组同模型按利润降序三等分 → 3(高利润)/ 2(中利润)/ 1(兜底) |
| Weight | max(1, round(100 × 利润 ÷ 该层最大利润)) |
M1 结果:
| 组 | Pri | 渠道 | 利润 | Wt |
|---|---|---|---|---|
| CE | 3 | 甲 | 2.75 | 100 |
| CE | 2 | 乙 | 1.75 | 100 |
| CE | 1 | 戊 | 0.75 | 100 |
| HP | 3 | 甲 | 5.75 | 100 |
| HP | 2 | 乙 | 4.75 | 100 |
| HP | 1 | 戊 | 3.75 | 100 |
| HP | 1 | 丙 | 2.75 | 73 |
| HP | 1 | 己 | 1.75 | 47 |
全部模型同样处理 → 进入输出。
三、输出
每个渠道按分组拆成独立条目(复用同一上游 key),绑定多个模型。条目的 Priority 和 Weight 取该条目所有 profitable 模型的平均值。
3.1 用户价 + 分组倍率
| 模型 | 用户价 | CE ×0.86 | HP ×1.1 |
|---|---|---|---|
| M1 | 12.5 | 10.75 | 13.75 |
| M2 | 14.5 | 12.47 | 15.95 |
| M3 | 16.5 | 14.19 | 18.15 |
| M4 | 16.5 | 14.19 | 18.15 |
| M5 | 15.0 | 12.90 | 16.50 |
| M6 | 18.0 | 15.48 | 19.80 |
3.2 渠道配置矩阵
| 条目 | 上游 | 分组 | 模型 | Pri | Wt |
|---|---|---|---|---|---|
| 甲-CE | 甲 | cost-effective | M1,M3,M4 | 2 | 72 |
| 甲-HP | 甲 | high-performance | M1,M2,M3,M4,M5,M6 | 2 | 78 |
| 乙-CE | 乙 | cost-effective | M1,M2,M4,M5 | 2 | 100 |
| 乙-HP | 乙 | high-performance | M1,M2,M4,M5 | 2 | 96 |
| 丙-CE | 丙 | cost-effective | M2,M3,M4,M6 | 1 | 83 |
| 丙-HP | 丙 | high-performance | M1,M2,M3,M4,M6 | 1 | 91 |
| 丁-CE | 丁 | cost-effective | M2,M4,M6 | 2 | 100 |
| 丁-HP | 丁 | high-performance | M2,M3,M4,M5,M6 | 2 | 74 |
| 戊-CE | 戊 | cost-effective | M1,M2,M3,M5,M6 | 2 | 83 |
| 戊-HP | 戊 | high-performance | M1,M2,M3,M5,M6 | 2 | 96 |
| 己-CE | 己 | cost-effective | M3,M5 | 2 | 100 |
| 己-HP | 己 | high-performance | M1,M2,M3,M4,M5 | 2 | 78 |
若同一条目内模型利润差异较大,可拆分为多个条目获得更精确的 Priority / Weight 控制。
四、系统路由机制
上一节输出的 Priority 和 Weight 直接对应系统的渠道路由参数。
4.1 整体路由流程
| Key 分组 | 路由行为 |
|---|---|
| cost-effective | 只在 CE 组内选渠道 |
| high-performance | 只在 HP 组内选渠道 |
| auto | 按 AutoGroups 顺序:CE 组 →(穷尽)→ HP 组 |
4.2 auto 模式
Key 为 auto 时,路由分两层:
- 组间顺序:先遍历 AutoGroups 第一个组(CE);全部失败后切换下一组(HP)
- 组内路由:在同一组内按 Priority + Weight 两层规则选渠道
auto Key 的实付价格不是固定值:路由到 CE 渠道按 0.86 计费,路由到 HP 渠道按 1.1 计费。系统按利润导向将最合适的渠道优先路由给 auto 用户。
4.3 Priority —— 第一层:利润分层
同 group × model 下,渠道按 Priority 降序排列,请求逐级降级:
| Priority | 选中时机 | retry |
|---|---|---|
| 3 | 请求最先尝试 | 0 |
| 2 | 上层全部失败后 | 1 |
| 1 | 继续降级,兜底 | 2 |
- 高利润渠道挂 Priority = 3,优先被选中,最大化平台收益
- Priority = 1 是兜底层,保证即使高利润渠道全挂,仍有渠道可用
4.4 Weight —— 第二层:同层利润分流
同一 Priority 层内多个渠道时,按 Weight 加权随机分流:
| Priority 层 | 渠道 | Weight | 流量占比 |
|---|---|---|---|
| 3 | 甲 | 100 | 55% |
| 3 | 乙 | 83 | 45% |
| 1 | 戊 | 100 | 45% |
| 1 | 丙 | 73 | 33% |
| 1 | 己 | 47 | 21% |
- Weight = 0 表示等权(该层所有渠道等效 100)
- 利润越高的渠道 Weight 越大 → 同层内也倾向高利润渠道
4.5 为什么需要两层?
单用 Weight 的缺陷:最高利润渠道故障时,所有流量涌向次高渠道(即便 Weight 很低),可能把次高渠道也压垮。
Priority 分层解决雪崩:高利润层整体故障后,才整体降级到下一层,而非逐个渠道崩溃。
4.6 参数映射
| 本文概念 | 系统参数 | 存储位置 |
|---|---|---|
| 用户价 | ModelRatio |
options 表 |
| 分组倍率 | GroupRatio |
options 表 |
| 渠道分组归属 | Channel.group + .models |
channels 表 |
| 利润分层 | Channel.priority |
channels 表 |
| 同层分流 | Channel.weight |
channels 表 |
| auto 路由顺序 | AutoGroups |
options 表 |
五、公式速查
| 步骤 | 公式 |
|---|---|
| 用户价 | price[m] = round( median(cost[m]) × (1 + 期望收益率), grain ) |
| CE 倍率 | ce = min(0.95, max(Nth_cheapest[m] / price[m]) + buffer) |
| HP 倍率 | hp = 1 + hp_premium |
| 分组卖价 | sell[m][g] = price[m] × ratio[g] |
| 入组判断 | profit[c][m][g] = sell[m][g] − cost[c][m] > 0 |
| Priority | 按 profit 降序三等分 → 3 / 2 / 1 |
| Weight | max(1, round(100 × profit / max_in_tier)) |
六、约束与说明
| 约束 | 说明 |
|---|---|
| 冗余 | 每个模型在每组至少保留 ≥ 2 个渠道(防单点故障) |
| CE 上限 | CE 倍率若被推到 ≥ 1.0,说明期望收益率过高或渠道成本集中,应降低期望收益率 |
| 重跑 | 调整期望收益率 / 溢价后需重跑利润判断,确认无组内亏损渠道 |
| 分组 | 倍率区间 | 含义 |
|---|---|---|
| cost-effective | 0.8 ~ 0.95 | 折扣组,倍率由矩阵推导,需便宜上游才能在折扣下仍盈利 |
| high-performance | 1.05 ~ 1.2 | 溢价组,10% 溢价,可接入更多渠道(含略贵的) |
| auto | — | 不是独立倍率组,实付倍率 = 路由到的渠道所在组的倍率 |
七、代码工具
# 两个输入:报价矩阵 + 期望收益率
python3 scripts/channel_pricing_plan.py prices.csv --markup 0.25
# 不指定 --markup 时使用行业默认 0.25
python3 scripts/channel_pricing_plan.py prices.csv
# 输出 Markdown 报告 + 结构化 JSON
python3 scripts/channel_pricing_plan.py prices.csv --markup 0.25 --out plan.md --json plan.json
# 调整期望收益率对比方案(保守 vs 激进)
python3 scripts/channel_pricing_plan.py prices.csv --markup 0.20 --out plan_conservative.md
python3 scripts/channel_pricing_plan.py prices.csv --markup 0.35 --out plan_aggressive.md
# 结构性默认覆盖(一般不需要)
python3 scripts/channel_pricing_plan.py prices.csv --hp-premium 0.15 --min-redundancy 4
| 说明 | |
|---|---|
| 输入 | 渠道报价矩阵 CSV(空白 = 不支持)+ 期望收益率 --markup(默认 0.25) |
| 输出 | 用户价表 + 分组倍率 + 渠道配置矩阵(每条目的 group / models / priority / weight) |