Skip to content
Charles Shao
Go back

供应链优化(SPO):买方如何收敛路径与降低 ad tech tax

Updated:
–views

在程序化广告的交易链路中,供应链透明度(上)与 schain(下) 重点解决了路径的真伪与授权验证问题。然而,需要强调的是,即使是一条真实合法的路径,依然可能面临高昂的交易成本。正因如此,同一份广告库存如果通过 1 跳的 DIRECT 模式购买,与通过 4 跳的转售(RESELLER)模式购买相比,中间的每一层流转都会产生不可忽视的供应链抽成(ad tech tax)。在生态全景中,广告主投入 1 美元而媒体最终只能拿到一半左右的现象,很大程度上就消耗在这些冗余的供应路径上;而 ISBA 与 PwC 审计报告中提到的约 15% 的 unknown delta,更是这种「路径不可观测」所导致的极端形态。

供应链优化(SPO,Supply Path Optimization) 正是买方在完成路径核验之后必须采取的关键动作。其核心逻辑在于,对同一广告曝光的多条可达路径进行评估与排序,优先选择链路更短、透明度更高且供应链抽成更少的路径,同时主动规避或降权那些冗余的转售节点。站在需求方平台(DSP)或 Trading Desk 的工程视角来看,SPO 的最终验收标准应当是工作媒体(Working Media)支出的提升以及业务 KPI 的达成,而绝不仅仅是平均跳数(hops)的表面下降。

本文是 供应链透明度与优化 系列的第 3 篇(路径优化)。 全系列 3 篇:

  1. 供应链透明度(上):ads.txt 与卖方授权声明
  2. 供应链透明度(下):OpenRTB schain
  3. 供应链优化(SPO)

一句话定位:买方在可核验的基础上,通过对同一广告曝光的多条可达路径进行打分与排序,优先选择更短、更透明且供应链抽成更少的路径,从而最大化净工作媒体价值。

范围划界:本篇将聚焦于买方如何进行路径选择与收敛。关于路径核验的具体细节,请参考本系列的上下两篇,此处不再赘述。此外,若想了解供给方(SSP)如何通过底价策略提升收益,请参阅 SSP Yield;关于将短路径打包的策展模式,请见程序化策展;而涉及垂直整合路径的潜在风险,则可参考 Last Look。

TL;DR

Table of contents

Open Table of contents

1. 问题:同一份库存,为什么有多条路

在开放的程序化广告市场中,一个媒体域名往往会采用多渠道分发的策略。具体而言,媒体可能会:

正因如此,针对同一次用户广告曝光(或同一库存池),买方极有可能会收到多条 bid request。需要强调的是,每条请求所携带的 schain 长度各不相同,其背后隐藏的供应链抽成也存在显著差异:

同一库存经 P1 短链 DIRECT、P2 转售、P3 长链到达 DSP;SPO 对 P1 优先、P2 降权、P3 no-bid 或灰名单,避免多路同时出价造成自我竞争 同一库存多条可达路径:短链优先、转售降权、长链收敛——合法路径不等于值得买的路径。

路径示意 schain跳数典型成本形态
P1Publisher → SSP-A → 你1短链、税少、常 DIRECT
P2Pub → SSP-B → C → 你2~3转售税叠层
P3Pub → … → 多层 RESELLER → 你≥4税重、核验噪声大

如果买方对每一条请求都采取「见价就追」的盲目策略,这不仅会导致自己和自己抢量,从而在多路同时出价时无形中抬高了最终的清算价;还会让宝贵的预算流向供应链抽成最重的冗余路径。最终,系统日志里会被大量的 unknown 节点或冗长链路填满,这正是导致那 15% unknown delta 无法对账的根本原因。

我们可以算一笔示意账(假设同一广告曝光的业务价值在广告主侧愿意支付到 $10 eCPM 量级):

路径中间税代理媒体侧可得(粗)买方「净工作媒体」感
1 跳 DIRECT低高同预算买到更多真曝光
4 跳转售高低同预算大量沉没在中间层

虽然具体数字会因费率结构与计费基数的不同而有所差异,但核心结论是极其稳定的:一条合法的路径并不等同于一条值得购买的路径。因此,SPO 必须在策略层面上将这一认知转化为具体的执行逻辑。简而言之,透明度机制回答了这条路径「能不能信」的问题,而 SPO 机制则要回答这条路径「值不值得走」的问题。

2. SPO 的目标函数

SPO 目标函数:优选路径 = arg max(V效果 − C媒体 − C税 − R风险);四项分别对应转化/可见性、成交价、中间抽成、欺诈/品牌;实务用跳数与核验等代理指标 选净价值最高的路径:效果价值减去媒体价、路径税与风险——不是单纯追最低成交价。

在工程实现中,SPO 的核心逻辑可以简化为以下目标函数:

优选路径=arg⁡max⁡path(V效果−C媒体−C税−R风险)\text{优选路径} = \arg\max_{\text{path}} \big( V_{\text{效果}} - C_{\text{媒体}} - C_{\text{税}} - R_{\text{风险}} \big)
项含义
V效果V_{\text{效果}}转化 / 可见性等业务价值
C媒体C_{\text{媒体}}成交价
C税C_{\text{税}}中间抽成(ad tech tax)
R风险R_{\text{风险}}欺诈 / 品牌安全

在实际业务中,由于买方往往无法获取逐跳精确拆解的账单数据,因此必须依赖一系列代理指标来进行评估:

代理含义注意
schain 跳数越短通常税越少、风险面越小短链也可能脏或贵
DIRECT 占比ads.txt 上 DIRECT 优先于纯 RESELLER 长链RESELLER 不一定坏,长链叠加才糟
complete=1 且核验通过不可核验路径直接降权或剔除与 SPO 分层:先真伪,后效率
历史 IVT / 可见性路径级质量,不只看域名需按 seat×domain 聚合
净效果 / post-auction KPI最终以业务校准稀疏域要 backoff
自我交易 / 垂直整合嫌疑路径可能含 last look 或利益冲突见 Last Look

对比 SSP Yield 的优化逻辑,我们可以看到需求方与供给方在策略上的对称性:

侧优化什么旋钮
卖方 Yield卖给谁、要多少钱floor / 分层
买方 SPO向谁买、走哪条路名单 / 分数 / 系数

需要强调的是,当需求方与供给方同时变得更加「苛刻」时,整个市场会自发地重新寻找均衡点——这属于预期的商业博弈现象,而不是系统 bug。归根结底,SPO 是利用路径特征在供应源层面进行定向过滤与出价系数调整,其作用对象是 SSP 的流转路径,而非终端用户的受众画像。

3. 打分:从 schain 到路径分

对于每一条入站的 bid request,系统在完成交叉核验之后,会立即计算对应的 path_score。如果核验失败,该请求应当直接进入风险控制流程(执行硬拒或强降权),切忌将其与「跳数略长」的合法请求混杂在同一个灰名单档位中。否则,运营团队在后期排查时,将无法分辨系统到底是在防御欺诈流量,还是在优化供应链抽成。

典型的打分逻辑示意如下:

path_score =
    + w1 * (1 / max(hops, 1))
    + w2 * (has_direct ? 1 : 0)
    + w3 * (verified ? 1 : 0)
    + w4 * hist_win_rate          # 或 hist_cvr / viewability
    + w5 * (1 - hist_ivt_rate)
    + w6 * curated_or_deal_bonus  # 可选
    - w7 * (self_dealing_risk)
    - w8 * (hops >= hop_hard_cap ? large : 0)

计算出分数后,系统会将其映射为具体的执行动作:

分数段动作
高正常竞价;可提高出价系数 / 预算份额 / QPS
中降权:更低出价系数或更严 ROI 门槛
低no-bid;或仅在 deal 场景参与
核验失败按风险政策:硬拒或强降权(与分数段分离记账)

3.1 席位级 vs 请求级

在打分粒度的选择上,通常有以下几种方案:

粒度做法优点风险
席位级离线统计 (exchange_seat, publisher) 或 seat 的平均 hops / 效果 → 白灰黑名单热路径只查表,省 CPU粗;席位内好坏混杂
请求级逐条读 schain.nodes.length、DIRECT 标记、核验结果精细CPU 与策略复杂度高
混合(常见)席位默认分 + 请求级硬规则(如 hops≥4 再砍一档)可解释、可渐进收紧两套配置要对齐版本

在生产环境中,大多数 DSP 会以席位级 SPO 作为主干策略,因为这种方式比逐条请求解析整棵供应树要稳定得多。而请求级的精细化打分,则通常保留给长尾流量、高客单价的品牌线,或者是新席位接入时的冷启动观察窗。

3.2 特征工程注意点

4. 在 DSP 链路里落在哪

对照 Bidder 漏斗与解析模块,SPO 的工程位置如下:

解析(抽出 schain / domain / bundle / seat)
  → 供应链核验(真伪)
  → 供应过滤 SPO(效率:名单 / 分数 / 硬 hops)
  → 定向 / RTA / 频控
  → 召回 · 打分 · 出价(可对高分路径加系数)
  → 排序 · 填充

SPO 的过滤逻辑与域名黑名单属于同类操作,因此能够在供应过滤阶段砍掉的冗余请求,就绝对不要让它流入后续的召回环节。至于根据路径质量调整出价系数的逻辑,则可以挂载在出价模块中。这两处的动作必须分开记账,切忌将其揉捏成一团难以归因的黑盒系数。

4.1 多路径去重与自我竞争

在开放市场中,同一次广告曝光机会极有可能经过多个交易席位几乎同时到达买方系统。如果策略引擎允许对所有副本同时发起出价,将会带来严重的负面后果:

为了解决这一痛点,工程上常见的去重手段(由易到难)包括:

  1. 席位优先:针对同一 (domain|bundle, 近似时间窗) 的请求簇,系统只保留 path_score 最高的席位参与竞价;
  2. 出价互斥:对低分路径强制执行 no-bid,仅允许高分路径正常流转;
  3. 事后归因去重:即使在用户层面难以实现完美的实时去重,日志层也必须打上统一的 inventory_key,以便离线分析时能够精准捕捉自我竞争的损耗。

尽管完全的实时去重面临着请求不同步、ID 缺失等挑战,但仅靠席位级的收敛策略,就已经能够砍掉绝大部分无意义的副本消耗。

4.2 Fail-open vs fail-closed

当遇到索引缺失或核验超时的情况时,系统需要根据业务场景选择合适的容错策略:

场景索引缺失 / 超时建议
品牌 / 高客单偏 fail-closed(不买看不清的路)保安全
量导向 UA偏 fail-open + 事后降权保量
新 seat 接入观察窗 open,过核验门槛后再收紧避免一上来误杀

这一逻辑与透明度核验的原则高度一致:对于灰色地带优先采取降权处理,而硬拒动作则严格保留给明确标记为 unauthorized 的非法流量。

5. 和 Deal / 策展 / 卖方 Yield 怎么咬合

5.1 Curated deal

在程序化策展场景下,受众数据与优质库存通常会被打包成 Deal ID,这会导致 schain 中多出一个 curator 的流转跳数。针对这种情况,SPO 策略需要做出适配:

5.2 PG / PD 保量

对于程序化保证(PG)或优先交易(PD)等合约路径,其链路可能较短但单价偏高,或者跳数略长却是触达该媒体的唯一通路。此时,SPO 绝不能机械地只看跳数:毕竟保量违约的商业成本远远大于省下的那点供应链抽成。正确的做法是将这类合约路径标记为「SPO 豁免或弱约束」,并在看板中进行独立监控。

5.3 卖方抬 floor 之后

当供给方实施 Yield 优化策略,通过抬高底价或收窄开放层来提升收益时,原本的短链可能会变得异常昂贵,而长链的清仓流量反而会增多。如果买方的 SPO 策略机械地锁死在「只买 hops≤2」的硬规则上,极易导致突然断量。为此,买方需要:

5.4 App 多源世界

在移动端 App 侧,流量往往会经过 TopON 等多源聚合平台进行分发。此时,买方可能无法像在 Web 端那样看到完整的 schain 拓扑,但多通路并存的博弈逻辑却是完全同构的:同一个 bundle 可能会通过 Vungle、Pangle 或 Mintegral 等多个渠道到达买方。因此,买方依然需要建立源级别的排序机制与统一的衡量尺子。在这种场景下,SPO 的核心思想可以灵活降级为「源白名单 + 效果打分」,而不必死死纠结于 hops 字段是否绝对完整。

6. 工程落地:闭环、实验与指标

6.1 最小闭环

要让 SPO 策略真正运转起来,必须构建以下最小工程闭环:

  1. 离线计算:复用透明度管道抓取 ads.txt 与 sellers.json;按席位和域名聚合统计 hops、核验通过率、消耗金额以及 CVR/IVT 等效果指标。
  2. 策略编译:基于离线数据生成名单表与分数表,并以版本化的方式下发至线上引擎(必须具备秒级回滚能力)。
  3. 在线执行:引擎在处理请求时实时查表,输出 spo_action,进而执行过滤或调整出价系数的动作。
  4. 数据回灌:将 path_score、hops、verified 状态、spo_action 以及最终的成交与转化数据完整落盘——没有这一步,策略迭代将无从谈起。

6.2 A/B 怎么做才不算自欺

在验证 SPO 效果时,必须遵循严谨的实验规范:

要做不要做
主指标用工作媒体占比 / CPA·ROAS / 增量转化只看平均 hops↓
同步看 win rate、覆盖域名数、CPM忽略「量没了」
按库存层 / 地区切片全球一个 uplift 平均数
渐进收紧(先核验失败降权 → hops≥4 → 席位白名单)第一天全量黑名单
跑过完整日周期与预算节奏用一小时 spare QPS 定胜负

一个典型的误读场景是:「实验组的平均 hops 从 2.8 成功降到了 1.6,但 CPA 却飙升了 22%」。这往往意味着策略误杀了某些唯一可达的高转化路径,此时应当果断判定实验失败或缩小收敛范围。

6.3 看板最小集

为了实时监控 SPO 的健康度,以下指标构成了看板的最小集:

指标读法
工作媒体 / 有效 KPI最终目标
spend by hops / by seat预算是否仍沉在长链
verify pass rate透明度管道是否健康
spo_action 分布(allow / downrank / nobid)策略实际杀伤面
覆盖 publisher 数、稀缺位 fill是否过度收敛
自我竞争率(多 seat 同 inventory_key)去重是否生效
deal vs open 占比合约是否被误伤
索引新鲜度(ads.txt age)滞后误伤预警

7. 生产里见过的

案例 A:平均 hops 漂亮,效果变差。 某 DSP 曾一刀切地执行 hops≤2 规则,结果导致核心 App 在某些只剩长链可达的海外地区瞬间断量,整体 CPA 急剧恶化。随后团队将策略调整为「核验失败硬降权 + hops≥4 降权 + 稀缺 bundle 豁免」后,大盘指标才得以回正。这警示我们:必须先保流量的可达性,再去优化供应链抽成。

案例 B:三家 SSP 同时追同一域名。 通过日志排查发现,针对同一个 inventory_key,系统竟然通过多个席位同时发起了高价竞标,导致最终清算价严重虚高。在引入席位优先逻辑、仅保留 path_score 最高的链路后,整体 eCPM 显著下降,而转化量保持平稳。这证明了 SPO 不能仅仅停留在缩减名单上,多路去重同样是核心环节。

案例 C:索引滞后误杀新媒体。 某新锐媒体刚刚更新了 ads.txt,但由于买方爬虫长达 48 小时未刷新索引,导致该席位被错误标记为 unauthorized。这直接造成了采用 fail-closed 策略的品牌广告线出现了两天的投放空窗。正因如此,系统必须设立明确的新鲜度 SLO,并为新媒体预留合理的观察窗。

案例 D:策展多一跳被误罚。 在一次投放中,由于 curator 节点的引入导致 hops+1,系统自动将其降级至灰名单;但实际上该链路的 CVR 表现远超大盘。在对 curated deal 进行单独加权豁免后,效果迅速恢复。这说明跳数仅仅是抽成与风险的代理指标,策展带来的「多一跳」并不总是坏事。

案例 E:卖方收紧 floor,买方 SPO 过拟合短链。 当卖方整体抬高底价后,短链的 eCPM 随之飙升,此时原本处于灰名单的长链反而凸显出了性价比优势。在系统放宽限制、允许 ROI 达标的灰路径进行回补后,整体投放效果达到了新的最优解。因此,SPO 必须与卖方的 Yield 策略结合起来看,切忌将短链逻辑静态锁死。

8. 风险与边界

在推进 SPO 的过程中,必须时刻警惕以下风险边界:

最佳实践建议:先从「核验失败降权 + hops≥4 降权」起步,观察 spend 分布与核心 KPI 两周后,再逐步收紧至席位白名单——这比第一天就上线全量黑名单要安全得多。

9. 常见误区 ↔ 正解

常见误区正解
SPO = 只接一家 SSPSPO = 有依据地排序与收敛,不是垄断单一路径
跳数越少一定越赚要叠加效果、可见性、合约;短链也可能贵或脏
有了 schain 就自动 SPOschain 只提供数据;策略与工程要另建
SPO 是卖方的事卖方做 yield;SPO 是买方选路
与透明度无关透明度是 SPO 的前提;先核验再优化
平均 hops↓ = 成功可能以覆盖与 CPA 为代价;看工作媒体与 KPI
策展多一跳必砍可能是打包短路径;按 seat/Deal 单独评估
接更多 SSP 就更多量无 SPO 时更多是自我竞争与税

延伸阅读

同系列(供应链透明度与优化):

跨系列相关:

资料:

附录:术语表


–views
Share this post on:

Previous Post
CTV / OTT 与 SSAI:大屏程序化插播与变现解析
Next Post
多交易所接入工程清单:Vungle、Pangle与Mintegral