Skip to content
Charles Shao
Go back

Last Look 深挖:从二价偷看反超到一价统一竞价

Updated:
–views

在程序化交易模式那篇里,last look(最后一眼) 只作为旁支提过。作为程序化拍卖史上最典型的信息不对称机制,它不仅直接催动了整个行业从二价拍卖向一价拍卖的演进,更是 Google 广告技术反垄断案的核心争议焦点。

本文是 交易模式与拍卖机制 系列的第 2 篇(公平性)。 全系列 3 篇:

  1. 程序化交易模式:RTB / PMP / PD / PG
  2. Last Look 深挖
  3. 拍卖机制与 Bid Shading

一句话定位:处在竞价链路「最后一棒」的交易所通过偷看其他渠道的竞胜价实现微弱反超,最终被一价拍卖与统一竞价的组合拳从机制上封堵。

TL;DR

Table of contents

Open Table of contents

1. 先还原案发现场:瀑布与动态分配

要深刻理解 last look,我们需要先将时间拨回 Header Bidding 普及之前。大约在 2010 年代初,媒体(Publisher)侧的变现主要由媒体 Ad Server(典型代表是 Google 的 DFP,即后来的 GAM)一手主导。

在那个时期,Ad Server 采用了一套名为 dynamic allocation(动态分配) 的机制来决定一次广告曝光(Impression)最终花落谁家:

  1. 系统首先按优先级走直采订单,以满足保量和固定价格的需求;
  2. 当直采订单无法吃下当前库存时,流量会被丢给程序化渠道。然而,这里存在一个关键的结构设计:只有 Google 自家的 AdX 能够参与这场实时竞价(RTB),并且 AdX 是在 Ad Server 内部、在所有其他需求方被排过之后才开始运行的;
  3. 此时,AdX 会拿到一个「需要打败的价格」(即 Ad Server 里其他订单的预估 eCPM),只要它的实时出价高过这个数值,就能成功赢走曝光。

真正的隐患就藏在第 2 步和第 3 步之中:AdX 永远站在竞价队伍的最后一个位置,并且能够一览无余地看到前面所有参与者开出的价格。 对比之下,其他需求源(如第三方交易所或广告网络)只能事先将价格「挂」在 Ad Server 里被动等待,完全没有「看一眼再决定」的权利。正是这种结构性的「最后一棒 + 上帝视角」,孕育了 last look 的温床。

2. last look 的精确定义

为了更严谨地探讨,我们需要对该机制进行精确定义:

last look(最后一眼):在一条分层或顺序进行的竞价链路中,处在最后一棒的参与方能够率先观测到其他所有渠道已经报出的竞胜价,随后再据此决定自家是否参竞以及具体的出价金额——其策略通常是「刚好比当前最高价高一点」以实现精准反超。

需要强调的是,last look 能够成立,靠且仅靠以下两个结构前提:

  1. 顺序与分层竞价(有人能最后跑):整个竞价过程并非一次性同时密封进行,而是被人为划分了先后顺序。正因如此,只要链路中存在「最后一棒」的位置,坐在该位置的平台就天然拥有了无可比拟的信息优势。
  2. 二价机制(成交价由别人决定):在二价拍卖环境中,赢家最终支付的金额是「第二名出价 + 0.01」,这意味着成交价完全取决于其他竞争者的出价。这种机制天然制造了一条「必须看到别人出价才能算清成交价」的系统漏洞,同时也给中间环节留下了巨大的可操纵与套利空间。

可以说,last look 正是这两个前提条件叠加的产物。理解了这一点,后续关于「如何封堵漏洞」的演进逻辑,本质上就是逐一拆除这两个结构性基石的过程。

3. 一个数字演示:它怎么「刚好高一点」赢

抽象的定义往往不如具体的数字推演来得直观。假设当前有一次广告曝光,且面临三方需求源的竞争:

需求源真实愿意出价(CPM)何时出价
网络 A(挂在 Ad Server 里)$4.00事先挂价,被动
网络 B(挂在 Ad Server 里)$5.00事先挂价,被动
AdX(最后一棒)愿意出到 $8.00看完前两家后才出

在没有 last look 的公平拍卖场景下(即所有需求方同时密封投标、价高者得):AdX 会报出真实的 $8.00 并赢得竞价,此时媒体将获得 $8.00(若为一价拍卖)或第二名的 $5.00(若为二价拍卖)。

然而,在存在 last look 时:AdX 能够提前看到当前需要打败的最高价是 $5.00(来自网络 B),于是它不再报出 $8.00,而是精准地出价 $5.01——这个价格刚好足够赢下竞价。最终的流转结果如下:

由此可见,last look 的核心危害在于:它虽然没有改变最终的竞胜者,却系统性地压低了整体成交价,并将这部分价差利益悄然转移给了坐在最后一棒的平台。对卖方(Sell Side)而言这意味着严重的收益流失,而对其他买方(Buy Side)来说,则意味着「我的出价沦为了你套利的标尺」。这种「刚好高一点」的策略之所以有利可图,根本原因就在于二价机制或软底价(soft floor)环境下,赢家完全不必亮出自己的真实估值。

4. Header Bidding 如何把 last look 推上风口

业内曾有许多人误以为 Header Bidding(头部竞价) 是 last look 的终极解药,但实际上,它更像是把这个机制从暗处直接拉到了聚光灯下。

不可否认,Header Bidding 的初衷极具颠覆性:它试图打破媒体 Ad Server「瀑布流 + 动态分配」的长期垄断,让多个 SSP 与交易所在调用 Ad Server 之前,率先于浏览器或服务端进行并行且同时的竞价,从而筛选出全网最高价。这种设计的本意,正是为了「让所有需求方站在同一条起跑线上」。

但在实际落地过程中,却存在一个绕不过去的技术步骤:当 Header Bidding 跑完并得出一个最高出价后,这个价格必须作为一个 key-value(例如 hb_pb=5.00)透传进媒体 Ad Server,以便 Ad Server 将其与直采订单以及 AdX 的出价放在一起做最终裁决。致命的漏洞恰恰出现在这里——

于是,整个广告生态中出现了极其刺眼的一幕:媒体费尽心力用 Header Bidding 把各方需求摆到明面上进行公平竞价,结果这些透明的出价,反而沦为了 AdX 实施精准反超的「参考答案」。正因如此,Header Bidding 越是普及、越是透明,AdX 享有的 last look 特权就越显得极度不公平。正是这种强烈的反差,让 last look 从一个底层的技术细节,迅速演变为 2017 至 2018 年间整个程序化行业声讨的焦点,并直接逼出了下一节即将探讨的终极解法。

5. 一价 + 统一竞价:怎么把它堵住的

面对这一顽疾,行业的最终解法是将两项机制变革捆绑落地,这恰好精准对应了第 2 节中提到的那两个结构前提。

下面这张图直观地展示了旧链路与统一密封一价拍卖的对比:

左右对比图。左侧红色面板「旧链路(有 last look)」:蓝色 Header Bidding 并行出价 → 最高价 hb_pb 作门槛价传入媒体 Ad Server → 红色 AdX 最后一棒看到门槛价后只出「刚好高一点」反超,底部红注标明顺序 + 二价造成信息不对称并压低成交价。右侧绿色面板「统一竞价(一价)」:SSP / AdX / 直采同时密封出价汇入统一拍卖,谁也不在最后,绿注标明价高者得、赢家付自己出价、偷看无门。底部琥珀色注解:统一竞价拿掉偷看窗口,一价拿掉套利动机 左边的病根是「有人能最后跑 + 二价留缝」;右边的解法则是把竞价压成「同时密封的一场一价拍卖」,让最后一棒的位置和二价的漏洞同时消失。

如果我们将这套组合拳拆开来看,其内在逻辑非常清晰:

需要强调的是,仅仅切换到一价拍卖是远远不够的。因为在纯一价环境下,只要某一方依然保留了「最后看一眼」的特权,它同样可以贴着最高竞争者的价格加上一个最小增量去赢取曝光。因此,要真正堵住 last look,必须依赖统一密封竞价与一价拍卖这套组合拳——前者负责拿掉偷看的时间窗口,后者负责抽干套利的经济动机。回顾历史,Google 在 2019 年将 GAM 从「二价 + AdX last look」全面切换至 unified first-price auction,正是将这两步同步落地;缺少任何一环,系统的漏洞都无法被严密封堵。

这套演进逻辑也顺带解答了业内常问的一个问题:为什么整个程序化生态会在 2018 至 2019 年间集体从二价倒向一价? 表面上看,这似乎只是一场关于「定价规则」的路线之争,但其底层动因之一,正是为了彻底封堵 last look,从而将竞价的公平性与可解释性重新还给需求方与供给方。

6. 但它没真死:垂直整合下的「裁判兼运动员」

如果故事到这里就画上句号,那么公开架构层面的漏洞确实算是被彻底堵住了。然而,现实的商业生态中却存在一个纯靠技术机制无法弥合的缺口——当同一家公司既作为卖方办拍卖(SSP / ADX),又作为买方下场竞价(自家 DSP)时。

让我们重新审视第 5 节中解法的前提:统一密封竞价之所以能够封堵 last look,其核心支撑在于「所有人同时密封投标、谁也不在最后跑」。但这里潜藏着一个极其关键的隐含假设——办拍卖的平台自己绝不下场参竞。要知道,ADX 这个角色天生就具备纵览全场出价的上帝视角(毕竟它必须看到所有底牌,才能裁决最终的胜者)。

下面这张图清晰地揭示了这种深层的利益冲突:

一家公司同时拥有卖方拍卖与买方平台的利益冲突示意:紫色虚线框「同一家公司」内,灰色统一拍卖 / ADX(裁判:看得到全场出价)与粉色自家 DSP(运动员:也在竞价);左侧两个蓝色第三方 DSP 以实线密封出价交进拍卖,自家 DSP 也向上密封出价;拍卖与自家 DSP 之间有红色虚线标注「全场出价可见(无物理隔离)」;右侧绿色「裁决胜者」。底部琥珀色注解:对第三方密封成立,对自家 DSP 盲投只是口头承诺 → 裁判兼运动员 统一密封竞价对所有第三方买家都绝对成立,但对「办拍卖的自家 DSP」却未必成立:拍卖主机本就看得到全场出价,究竟要不要把这个致命的信息优势喂给自家买方,往往沦为一个无法用机制证伪的口头承诺。

一旦自家的 DSP 也身处竞价场内,所谓「拍卖是绝对密封的、自家 DSP 跟其他买方一样都在盲投」的声明,就从一个坚实的结构性保证,大幅降级成了一个脆弱的口头承诺。从技术实现的角度来看,平台完全有路径将实时的竞胜价悄悄喂给自家 DSP 以实现精准反超;更何况,拍卖主机和 DSP 掌握在同一家公司手中,彼此之间根本不存在实质性的物理隔离。这就是程序化生态中最经典的「裁判兼运动员」困境。

最典型的案例莫过于 Google:由 AdX(卖方拍卖)与 DV360 / Google Ads(买方 DSP) 形成的一手包办体系:

对比来看,一价拍卖与统一竞价成功堵死的是公开架构里人人都看得见的信息不对称(如串行的最后一棒、二价套利空间);但对于「同一家公司既办拍卖又竞价」这种深藏于企业内部的结构性不对称,单纯的技术机制已经无能为力。面对拥有上帝视角的拍卖主机,外部买方只能在「信」与「不信」之间做出抉择。正因如此,last look 已经从一个「已被解决的技术问题」,演变成了一个至今仍在法庭上激烈交锋的行业结构性难题。

7. 不止 last look:相关的信息不对称家族

虽然 last look 名气最大,但它其实只是庞大的「竞价信息不对称」家族中的一员。作为广告技术工程师,非常有必要厘清它的这些「近亲」,因为在实际业务中它们常常被混为一谈:

如果将这些乱象放在一起审视,我们会得出一个清晰的结论:解决这些问题的共同路径,无一例外都是朝着「一价 + 硬底价 + 同时密封 + 可审计日志」的透明化方向迈进。只有让成交价完全取决于参与者自身的出价,并且确保整个流转过程能够被第三方严密核查,才能真正重建生态的信任底座。

8. 工程与买方视角:机制堵不住,就靠透明与隔离

既然在垂直整合的商业模式下单纯的技术机制已经无法兜底,买方与整个行业的应对策略便果断转向了「避开利益冲突路径」以及「要求全面公开账本」。以下是真正落实到工程研发与投放实操中的关键动作:

正因如此,当我们在评估并接入一条全新的程序化供给链路时,首先查明它究竟采用一价还是二价、是否暗中进行 last look 或 bid caching、能否提供完整的 log-level data、以及是否存在自我交易的嫌疑,往往比单纯追问「你能给多少跑量」要务实且有效得多。

行业黑话总结:last look(最后一眼):最后一棒偷看竞胜价并微弱反超;dynamic allocation(动态分配):AdX 跑在最后一棒与预估 eCPM 比价的旧机制;一价拍卖(first-price):赢家付自己出价,消除二价套利动机;二价拍卖(second-price):赢家付第二名加增量,给偷看留缝;统一竞价(unified auction):所有需求同时密封定胜负;软底价 / 硬底价(soft / hard floor):模糊底价与不可逾越的明确底价;bid caching(出价缓存):买方出价被违规复用;auction within auction(拍卖中的拍卖):中间层利用二价私吞差额;裁判兼运动员(self-dealing):同一家既办拍卖又下场竞价;Project Bernanke:Google 利用竞价数据优化自家出价的内部项目;SPO:买方收敛供给路径优先透明通道;log-level data(日志级数据):可核查的原始成交日志;sellers.json / ads.txt / schain:核验卖方身份与分成关系的供应链透明标准;结构性拆分(structural separation):监管要求分离卖方拍卖与买方平台。

回顾 last look 的演进历史,它留给我们的最深刻启示在于:任何交易优先级的设定,都必须建立在规则完全透明且具备高度可解释性的基础之上。关于这一点,读者可以进一步参考程序化交易模式:RTB / PMP / PD / PG中的详细论述。


延伸阅读

同系列(交易模式与拍卖机制):

跨系列相关:

再是规范与一手资料:


–views
Share this post on:

Previous Post
供应链透明度(上):ads.txt 与卖方授权声明
Next Post
程序化交易模式精讲:按定价与保量拆解 RTB 到 PG