Skip to content
Charles Shao
Go back

Last Look 深挖:顺序二价下的偷看反超,与一价统一竞价如何堵住它

Updated:
views

程序化交易模式那篇里,我把 last look(最后一眼) 作为一个”旁支”一笔带过——但它其实是整个程序化广告史上最值得讲透的一次信息不对称:它直接催动了行业从二价拍卖集体倒向一价拍卖,也是 Google 广告技术反垄断案最核心的争议之一。

这篇文章把它单独拎出来讲清楚:last look 到底是什么、靠什么结构前提成立、Header Bidding 怎么把它从暗处推到台面上、一价拍卖 + 统一竞价又是怎么把它堵住的,以及为什么在”裁判兼运动员”的垂直整合格局下,它从未真正死透。

TL;DR

Table of contents

Open Table of contents

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

要理解 last look,得先回到 Header Bidding 之前——大约 2010 年代初,媒体侧的变现是媒体 Ad Server(典型是 Google 的 DFP,后来的 GAM)一手主导的。

那时 Ad Server 用一套叫 dynamic allocation(动态分配) 的机制决定一次曝光给谁:

  1. 先按优先级走直采订单(保量、固定价);
  2. 直采吃不下的,丢给程序化——但这里有个关键设计:只有 Google 自家的 AdX 能参与这场实时竞价,而且 AdX 是在 Ad Server 内部、在所有其他需求被排过之后才跑的
  3. AdX 拿到一个”需要打败的价格”(Ad Server 里其他订单的预估 eCPM),只要它的实时出价高过这个数,就赢走曝光。

问题就藏在第 2、3 步:AdX 永远站在队伍的最后一个,而且能看到前面所有人开出的价。 其他需求源(别的交易所、网络)只能事先把价格”挂”在 Ad Server 里被动等待,没有”看一眼再决定”的权利。这种结构性的”最后一棒 + 上帝视角”,就是 last look 的温床。

2. 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 的危害:它不改变谁赢,却系统性地压低成交价、把价差悄悄转移给那个坐在最后一棒的人。对媒体是少赚,对其他买家是”我的出价被你当成了标尺”。注意——这里的”刚好高一点”之所以有利可图,正是因为二价 / 软底价语境下,赢家不必亮出真实估值。

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

很多人以为 Header Bidding(头部竞价)是 last look 的解药,其实它更像是把 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 的旧链路,右边是统一密封的一价拍卖:

左右对比图。左侧红色面板「旧链路(有 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、是不是自我交易”这几个问题,比”它能给多少量”更值得先问清楚。

9. 速查表

回到交易模式那篇的那句话:交易的”优先级”应当规则透明、可解释。last look 的整段历史,就是这句话的反面教材——以及行业为了把它扳回正面,所做的全部努力。


延伸阅读

先看同系列里和本篇直接相邻的几篇:

再是规范与一手资料:

附录:术语表


views
Share this post on:

Previous Post
供应链透明度(上):ads.txt / app-ads.txt / sellers.json 把卖方授权变成可交叉核验的声明
Next Post
程序化交易模式精讲:按定价与保量两轴拆开 RTB / PMP / PD / PG