卷 IV · 定价CH 16深度 16/24

广告位不是这么卖的

前两章讲的是一件东西怎么卖。现实里最赚钱的拍卖卖的不是一件东西,是一排位置——搜索结果页上的第一条、第二条、第三条。位置一多,第 14 章那个漂亮的性质就碎了。这一章要说的事情有点尴尬:全世界规模最大的拍卖,用的是一个不激励相容的机制,而且他们知道,也没打算换。

GSP vs VCG一排位置为什么不用更好的那个

▷ 轮到你

一个搜索结果页有两个广告位。第 1 位每天带来 100 次点击,第 2 位带来 90 次(差得不多)。

三个广告主竞价,他们每次点击的真实价值分别是:甲 10,乙 8,丙 2

规则(这就是搜索广告实际用的规则):按出价排序,谁排第 k 位,就按第 k+1 名的出价,为自己每一次点击付钱。

假设三个人都照实报价(10、8、2)。问:甲会不会想改?

A 不会。这是第二价格的推广,照实报价还是占优的 B 会想往上加价,抢得更稳一点 C 会想往下降价,主动掉到第 2 位 D 会,但只有在点击量差距很大的时候

把两个位置的账算清楚

先算照实报价时会发生什么。

# 按出价排序:甲(10) > 乙(8) > 丙(2)
#   甲拿第 1 位(100 次点击),按乙的出价付:每次 8
#   乙拿第 2 位( 90 次点击),按丙的出价付:每次 2
#
# 甲的利润 = 100 × (10 − 8) = 200
# 乙的利润 =  90 × ( 8 − 2) = 540
# 平台收入 = 100×8 + 90×2 = 980

看出问题了吗?甲拿了最好的位置,赚得却比乙少。

现在甲动一下脑筋:如果我把出价压到 8 以下(比如 3),会怎么样?

# 甲报 3:排序变成 乙(8) > 甲(3) > 丙(2)
#   乙拿第 1 位,按甲的出价付:每次 3
#   甲拿第 2 位(90 次点击),按丙的出价付:每次 2
#
# 甲的利润 = 90 × (10 − 2) = 720

★ 从 200 涨到 720。甲当然要降价。

照实报价不是均衡。排第一的那个人有强烈的动机主动往下掉一格——因为第 2 位的点击量只少了 10%,价钱却便宜了四分之三。

为什么第 14 章那套失效了

因为「按下一名的出价付钱」这条规则,在只有一个位置的时候恰好等于第二价格,在多个位置的时候就不等了。

第二价格之所以能让人说实话,是因为它有一条精确的性质:你付的钱,等于你的存在给别人造成的损失。单个物品的时候,你赢走它,损失就是第二名本来能得到的那份价值,正好是第二名的出价。

多个位置的时候这条就不成立了。甲占了第 1 位,对别人造成的损失是:乙本来能拿第 1 位(100 次点击 × 8),现在只能拿第 2 位(90 × 8);丙本来能拿第 2 位(90 × 2),现在什么也没有。

甲造成的损失 = (100 − 90) × 8 + 90 × 2 = 80 + 180 = 260

# 如果让甲付这个数(而不是 100 × 8 = 800):
#   甲的利润 = 100 × 10 − 260 = 740
#   而掉到第 2 位的话是 720 —— 不划算了,甲会老实待在第 1 位。

让每个人付「自己给别人造成的损失」,这套规则叫 VCG(Vickrey–Clarke–Groves)。它是第二价格在多物品情形下的正确推广,而且照实报价在它下面确实是占优策略

引擎把两套机制并排算了出来:

甲付甲的利润乙付乙的利润平台收入
VCG(付给别人造成的损失)260740180540440
GSP,三人都照实报价800200180540980

注意最后一列:照实报价的 GSP 让平台收 980,VCG 只收 440。但那个 980 是假的——因为在 GSP 下没人会照实报价。

✎ 术语正名

广告界用的这套规则叫 GSP(generalized second-price,广义第二价格)。这个名字有点坑:它不是 VCG,也具备第二价格的那条好性质。它只是「长得像」第二价格。

Edelman、Ostrovsky、Schwarz 和 Varian 在 2007 年各自发表的论文把这件事讲清楚了。Varian 那篇里有一句常被引用的观察:谷歌的工程师当初以为自己实现的是维克里拍卖,后来经济学家才发现它不是。

那为什么不换成 VCG

这是这一章最有意思的地方。VCG 在理论上更好——激励相容、结果有效率。可是全世界的广告平台基本都在用 GSP。为什么?

第一,GSP 有均衡,而且那些均衡的收入不低于 VCG。照实报价虽然不是均衡,但 GSP 有别的均衡(Varian 把它们叫做「对称均衡」)。可以证明,这些均衡里收入最低的那一个,正好等于 VCG 的收入;其他的都更高。所以平台并不吃亏——它只是把「说实话」的成本转嫁给了广告主,让他们自己去调价。

第二,VCG 很难解释。「你付的是你给别人造成的损失」——这句话对广告主意味着他没法预测自己会付多少,也没法核对账单对不对。而 GSP 的「你付下一名的出价加一分钱」,看一眼就懂。一个机制的可解释性本身就是它的一部分,这在教科书里常常被忽略。

第三,换机制的迁移成本极高。整个行业的出价工具、优化算法、报表口径都建立在 GSP 上。Facebook 后来确实上了 VCG(他们在 2015 年前后公开讲过这件事),这也说明换是可能的,只是不容易。

第四,VCG 在别的地方有它自己的毛病。它对合谋和虚假账号特别脆弱:多注册几个身份可以显著压低付款。它的收入也可能低得难看。这些问题在多物品场景下比单物品严重得多。

◆ 这一章的核心

前三章一路在讲「怎么设计一个理论上正确的机制」。这一章讲的是理论上正确的机制为什么常常不是被采用的那个

真实世界里选机制,除了激励相容,至少还要看:

  • 参与者能不能理解它(理解不了就没法信任,也没法参与);
  • 它抗不抗操纵(合谋、马甲、串标);
  • 它的收入稳不稳(不是期望值高就行,方差也要看);
  • 迁移成本有多大

这不是「理论没用」。恰恰相反:正因为你知道 VCG 是那个理论上正确的答案,你才能精确地说出 GSP 差在哪、差多少、以及这个差价买到了什么。没有那个基准,你连「有多差」都说不出来。

▸ 在现实里

这套机制每天在跑数十亿次。你每搜一次东西,都触发一场实时拍卖。广告主不是在人工出价——他们用自动出价工具,而这些工具本质上就是在这个非激励相容的机制里寻找均衡。第 21 章那台「后悔最小化」的机器,正是这类工具背后的算法家族。

「位置差不多但价钱差很多」是通用的陷阱。凡是分档而各档差异不大的定价,都容易出现「主动降一档更划算」:会员等级、供应商分级、职级评定。判据很简单——算一算跳到下一档的收益差和成本差,如果成本差远大于收益差,人们就会主动往下跳。

近年的变化值得一提。广告拍卖这些年在往「一价 + 复杂的自动出价」方向演化(展示广告的程序化交易在 2019 年前后集体从二价转向一价)。这不是理论进步,是因为多级转售、多个交易平台叠加之后,二价的那些性质本来也已经不成立了。这是个好例子:机制的性质依赖于它所处的环境,环境变了,性质就没了。

✗ 这个直觉是错的

「既然理论上有更好的机制,用了差的那个就是设计失误。」

「更好」要指明是在哪个维度上。VCG 在激励相容和效率上更好,在可解释性、抗合谋、抗马甲、迁移成本上更差。真实的选择永远是在一堆维度上做取舍。

更值得记住的是反过来的用法:当你看到一个明显「不够优」的机制被长期使用时,通常说明有某个不在教科书模型里的约束在起作用。与其断定别人蠢,不如去找那个约束——它往往比机制本身更有信息量。

◇ 摊牌

正确答案是 C:甲会想往下降价,主动掉到第 2 位。利润从 200 涨到 720

A 「第二价格的推广,照实还是占优」——这是最自然的推广,也正是当年工程实现时的想法。它错在:多个位置时,「下一名的出价」不再等于「你给别人造成的损失」。真正的推广是 VCG,甲要付的是 260 而不是 800 B 「往上加价抢得更稳」——加价没有任何用。在 GSP 里,只要你还排在第 1 位,你付的就是第 2 名的出价,跟你自己报多少无关。加价既不改变你付的钱,也不改变你的位置(除非你本来就要输)。加价只在临界点附近有意义。 D 「点击量差距很大时才会」——方向恰恰反了。点击量差距越,往下掉越划算——少拿一点点流量,省下一大笔钱。上面的 demo 可以验证:把第 2 位的点击量从 90 往下拖,甲降价的动机会逐渐消失。
◆ 换你定规则

你不想换成 VCG(太难解释),但想减少「主动降级」的现象。改什么?

第 1 位 100 次点击、第 2 位 90 次,价差却是 8 比 2 ⇒ 掉一格省下 75% 的价钱,只损失 10% 的流量 ⇒ 大家抢着往下掉。 拉大位置之间的价值差距(比如第 1 位 100 次、第 2 位 40 次)⇒ 掉一格损失 60% 的流量 ⇒ 降价不再划算。

注意这个改法根本没动拍卖规则,它动的是商品本身。这是机制设计里一个常被忽略的自由度:当规则改不动时,改商品的分档方式。页面上广告位之间的视觉差异、榜单前三名和第四名的曝光差距,都在做这件事。

这一章的一句话

「像第二价格」不等于「是第二价格」;而一个理论上更优的机制没有被采用,通常不是因为没人懂,是因为有一条不在模型里的约束在起作用。

卷 IV 结束。下一卷去一个没有价格的世界:学生和学校、医生和医院、器官和病人——这些地方不能用钱来配,可是照样要配。下一章的招牌是一组冷冰冰的数字:同一批人、同一份偏好,只换一件事——谁先开口。主动的一方平均拿到第 1.40 志愿,另一方第 4.00;把主动权换过来,两个数变成 2.602.00。算法一个字没改。