5D Library › 机制设计、激励相容与谈判博弈的数学模型 · English
第二章 拍卖:维克里、收益等价与 VCG 的孤独
维克里的二价拍卖
1961 年,经济学家维克里在《金融学杂志》上发表了一篇关于拍卖与密封投标的长文。他分析了多种拍卖形式,其中最著名的是密封二价拍卖:每人写下一个出价,出价最高的人赢得物品,但只需支付第二高的出价 (Vickrey 1961)。
这个规则看上去奇怪:为什么要让赢家少付?维克里的回答是:正因为赢家支付的价格与自己的出价无关,每个人都不再需要猜测别人会出多少,只需写下自己真实的估值。
推导
报真值是弱占优策略:证明。 记你的估值为 ,你的出价为 ,其他人中的最高出价为 。你的收益是: 时为 , 时为 0(平局时平分)。注意 只决定你付多少,而你的出价 只决定你是否赢。
- 若 :只要赢就有正收益 。出价 一定赢;出价低于 会错失这笔收益。
- 若 :赢了就亏 。出价 一定不赢;出价高于 会赢下一笔亏本的买卖。
- 若 :赢与不赢收益都是 0。
所以无论别人出多少, 都不比任何其他出价差;而对任何 ,总存在某个 介于 与 之间,使 严格更差。
推导
下面的程序在估值、出价与对手最高出价的网格上逐一检验这个结论。
# Second-price auction: highest bid wins, pays the best rival bid r (ties split).
# Check on a grid: bidding one's value v is never worse than any other bid b, for any r.
GRID = [round(k * 0.01, 2) for k in range(101)]
def payoff(v, b, r):
return v - r if b > r else (v - r) / 2 if b == r else 0.0
worse, strict = 0, 0
for v in GRID:
for b in GRID:
d = [payoff(v, v, r) - payoff(v, b, r) for r in GRID]
worse += sum(x < -1e-12 for x in d)
strict += b != v and any(x > 1e-12 for x in d)
print(f"{len(GRID) ** 3:,} (value, bid, rival) cases; truthful bid worse: {worse} times")
print(f"untruthful (value, bid) pairs that lose strictly to some rival bid: {strict:,}")
print("v = 0.60; payoff when the best rival bid is 0.30 / 0.50 / 0.70 / 0.90:")
for b in (0.40, 0.60, 0.80):
row = " ".join(f"{payoff(0.6, b, r):+.2f}" for r in (.3, .5, .7, .9))
print(f" bid {b:.2f}: {row}")
# 1,030,301 (value, bid, rival) cases; truthful bid worse: 0 times
# untruthful (value, bid) pairs that lose strictly to some rival bid: 10,100
# v = 0.60; payoff when the best rival bid is 0.30 / 0.50 / 0.70 / 0.90:
# bid 0.40: +0.30 +0.00 +0.00 +0.00
# bid 0.60: +0.30 +0.10 +0.00 +0.00
# bid 0.80: +0.30 +0.10 -0.10 +0.00在 101 × 101 × 101 = 1,030,301 种「估值、出价、对手最高出价」的组合中,报真值从来没有比其他出价差;而在全部 10,100 种不如实的(估值、出价)组合中,每一种都至少在某个对手出价下严格吃亏。表格中估值 0.6 的例子说明了两种错误的代价:出价 0.4(压价)在对手出 0.5 时错过了 0.1 的收益;出价 0.8(抬价)在对手出 0.7 时赢下一笔亏 0.1 的买卖。
证据
实验中的二价拍卖。 尽管报真值是占优策略,实验室里的被试在二价拍卖中却普遍出价高于自己的估值。卡格尔、哈斯塔德与莱文报告,在关联私人价值的二价拍卖实验中,成交价格持续高于占优策略均衡的预测,说明被试出价高于真值;而在英式(升价)拍卖中,经过短暂的学习期后,结果与理论预测十分吻合 (Kagel, Harstad, and Levin 1987)。一种解释是:二价规则「自己的出价不决定价格」这一点并不直观,而升价拍卖中退出的时机直接可见。
一价拍卖:压价是均衡,不是赌运气
在一价拍卖中,赢家支付自己的出价。这时报真值就不再明智:如果出价等于估值,赢了也是零收益。于是人们会「压价」,出价低于估值。
常见的说法是把压价说成「赌一把对手出得更低」。更准确的说法是:在标准模型中,压价是一个可以精确计算的均衡策略。
推导
对称均衡的推导。 个竞买人,估值相互独立、服从 [0, 1] 均匀分布,风险中性。猜测均衡策略为线性的 。若其他人都这样出价,你出价 时,赢的条件是其余 人的出价都低于 ,即他们的估值都低于 ,概率为 。你的期望收益为
对 求导令其为零:,化简得 ,所以 ,猜测自洽。出价高一点,赢的概率上升;出价低一点,赢了以后的利润上升;均衡出价正好平衡这两种力量。竞争者越多,压价越少:两人时出价为估值的一半,十人时为估值的九成。
收益等价定理说:在这一类模型中,只要物品总是分给估值最高的人、估值最低的类型期望收益为零,那么任何拍卖形式给卖方带来的期望收入都相同 (Myerson 1981; Riley and Samuelson 1981)。在这里,期望收入都是第二高估值的期望 。
推导
程序先在网格上求最佳出价,与公式比较;再模拟一价、二价和全付拍卖(每个人都支付自己的出价,均衡出价为 )的收入。
# First-price auction, n risk-neutral bidders, values i.i.d. uniform on [0, 1].
# If rivals bid (n-1)v/n, a bid b wins with probability (n b / (n-1))^(n-1).
# Find the best b on a grid.
import random
def best_bid(v, n, steps=20000):
bids = [(n - 1) / n * k / steps for k in range(steps + 1)]
return max(bids, key=lambda b: (v - b) * (n * b / (n - 1)) ** (n - 1))
print("best reply / formula (n-1)v/n")
for n in (2, 3, 5, 10):
row = " ".join(f"v={v}: {best_bid(v, n):.3f}/{(n - 1) * v / n:.3f}"
for v in (.3, .6, .9))
print(f" n = {n:2d}: {row}")
rng, R = random.Random(11), 100000
mean = lambda xs: sum(xs) / len(xs)
sd = lambda xs, m: (sum((x - m) ** 2 for x in xs) / len(xs)) ** 0.5
print("mean revenue in 100,000 auctions")
print(" n | first | second | all-pay | (n-1)/(n+1) | sd first | sd second")
for n in (2, 3, 5):
fp, sp, ap = [], [], []
for _ in range(R):
v = sorted(rng.random() for _ in range(n))
fp.append((n - 1) / n * v[-1]) # winner pays own bid
sp.append(v[-2]) # winner pays 2nd value
ap.append(sum((n - 1) / n * x ** n for x in v)) # all pay own bids
m1, m2 = mean(fp), mean(sp)
print(f" {n} | {m1:.4f} | {m2:.4f} | {mean(ap):.4f} | {(n - 1) / (n + 1):.4f}"
" |"
f" {sd(fp, m1):.3f} | {sd(sp, m2):.3f}")
# best reply / formula (n-1)v/n
# n = 2: v=0.3: 0.150/0.150 v=0.6: 0.300/0.300 v=0.9: 0.450/0.450
# n = 3: v=0.3: 0.200/0.200 v=0.6: 0.400/0.400 v=0.9: 0.600/0.600
# n = 5: v=0.3: 0.240/0.240 v=0.6: 0.480/0.480 v=0.9: 0.720/0.720
# n = 10: v=0.3: 0.270/0.270 v=0.6: 0.540/0.540 v=0.9: 0.810/0.810
# mean revenue in 100,000 auctions
# n | first | second | all-pay | (n-1)/(n+1) | sd first | sd second
# 2 | 0.3333 | 0.3335 | 0.3333 | 0.3333 | 0.118 | 0.236
# 3 | 0.5004 | 0.4990 | 0.4995 | 0.5000 | 0.129 | 0.223
# 5 | 0.6670 | 0.6661 | 0.6661 | 0.6667 | 0.112 | 0.178在对手采用 的前提下,数值求得的最佳回应与公式在所有情形下都一致(到小数点后三位),说明它确实是均衡。三种拍卖的平均收入都与理论值 相差不到 0.002,这就是收益等价。但等价的只是期望:二价拍卖收入的标准差明显大于一价拍卖(两人时为两倍,0.236 对 0.118;五人时约为 1.6 倍,0.178 对 0.112),对风险规避的卖方而言两者并不相同。
证据
风险规避与实验中的一价拍卖。 考克斯、史密斯与沃克的实验发现,一价拍卖中被试的出价系统性地高于风险中性的均衡出价,他们用竞买人的风险规避来解释这一点 (Cox, Smith, and Walker 1988)。收益等价定理依赖风险中性、独立私人价值与对称性等假设;这些假设不成立时,不同拍卖形式的收入一般不同 (Krishna 2009)。
所以,「压价」既不是赌运气,也不是人人都压得「恰好」。理论给出了一个风险中性的基准;现实中的人更怕输,往往出得比基准更高。
VCG:美丽而孤独
维克里的思想可以推广到多件物品与公共决策。克拉克 1971 年与格罗夫斯 1973 年的工作(上一章的枢纽机制就是其中一例)给出了一个一般的构造:选择使报告的总价值最大的方案,并让每个人支付她的出现给其他人造成的损失 (Clarke 1971; Groves 1973)。这就是维克里—克拉克—格罗夫斯(VCG)机制。它使如实报告成为占优策略,并实现有效配置。
但奥苏贝尔与米尔格罗姆在一篇题为《美丽而孤独的维克里拍卖》的文章中指出,现实中几乎没有人使用它,原因不只是计算复杂 (Ausubel and Milgrom 2006)。
推导
两件物品 A 与 B,可以按组合出价。竞买人 1 只想要组合 AB,竞买人 2 只想要 A,竞买人 3 只想要 B(这是奥苏贝尔与米尔格罗姆讨论的一类例子的简化版)。
# VCG with items A, B and package bids (after a kind of example in Ausubel-Milgrom 2006):
# pick the allocation with the largest reported value; each winner pays the loss her
# presence imposes on the others. Bidder 1 wants only AB, 2 only A, 3 only B.
from itertools import product
def best(bids, out=None):
top, alloc = 0.0, {}
names = [n for n in bids if n != out]
for pick in product(*[[None] + list(bids[n]) for n in names]):
items = [i for p in pick if p for i in p]
val = sum(bids[n][p] for n, p in zip(names, pick) if p)
if len(items) == len(set(items)) and val > top + 1e-12:
top, alloc = val, {n: p for n, p in zip(names, pick) if p}
return top, alloc
def vcg(label, bids):
total, alloc = best(bids)
pay = {n: best(bids, n)[0] - (total - bids[n][p]) for n, p in alloc.items()}
w = " ".join(f"{n}:{p}" for n, p in alloc.items())
pays = " ".join(f"{n}:{x:.1f}" for n, x in pay.items())
print(f"{label:34s}| wins {w:8s}| pays {pays:16s}| revenue {sum(pay.values()):.1f}")
vcg("AB=2 (1), A=2 (2), B=2 (3)", {"1": {"AB": 2}, "2": {"A": 2}, "3": {"B": 2}})
vcg("AB=2 (1), A=2 (2), 3 absent", {"1": {"AB": 2}, "2": {"A": 2}})
vcg("AB=2 (1), A=0.5 (2), B=0.5 (3)", {"1": {"AB": 2}, "2": {"A": .5}, "3": {"B": .5}})
# Weakness, not a method: if the two LOSING bidders both overstate, both win and pay 0.
# Such coordination is unlawful bid rigging in most jurisdictions.
vcg("same, but 2 and 3 each report 2", {"1": {"AB": 2}, "2": {"A": 2}, "3": {"B": 2}})
# AB=2 (1), A=2 (2), B=2 (3) | wins 2:A 3:B | pays 2:0.0 3:0.0 | revenue 0.0
# AB=2 (1), A=2 (2), 3 absent | wins 2:A | pays 2:2.0 | revenue 2.0
# AB=2 (1), A=0.5 (2), B=0.5 (3) | wins 1:AB | pays 1:1.0 | revenue 1.0
# same, but 2 and 3 each report 2 | wins 2:A 3:B | pays 2:0.0 3:0.0 | revenue 0.0前两行显示了收入的非单调性:三人都在时,A 与 B 分别归竞买人 2 与 3(总价值 4 高于竞买人 1 的 2),但两人都不需付任何钱,卖方收入为 0;如果竞买人 3 缺席,收入反而是 2(此时竞买人 1 与 2 的报价相同,程序按先后打破平局,收入不受影响)。增加竞争者反而使收入从 2 降到 0。
后两行显示了另一个弱点:当竞买人 2 与 3 的真实估值只有 0.5 时,竞买人 1 应当赢得组合并支付 1;但如果两个本应落败的竞买人都把报价夸大到 2,他们就会双双获胜并且都不付钱。也就是说,VCG 对落败者之间的协调特别脆弱;同一个人用多个虚假身份参加,也可能获益 (Ausubel and Milgrom 2006)。
注
本书不提供任何串通或围标的方法。 竞买人之间协调报价、围标、陪标或使用虚假身份竞价,在大多数国家和地区都违反反垄断、招投标或反欺诈的法律。这里讨论它们,只是因为机制设计者必须知道一套规则在什么地方容易被破坏,才能防范:例如采用升价的组合拍卖、设置保留价、核实竞买人身份,以及由竞争主管机构监督。
VCG 还有其他的实际困难:报告真实估值等于把自己的商业秘密交给拍卖方;对组合的估值数量随物品数指数增长;最后的价格可能远低于卖方认为「合理」的水平,从而在政治上难以接受。理论上最干净的规则,在实践中常常需要让位于更透明、更稳健的规则。
本章小结
二价拍卖让赢家支付第二高出价,使自己的出价只决定是否获胜、不决定价格,因此报真值是弱占优策略;程序在一百多万种组合上验证了这一点。但实验中的被试仍常常高报。一价拍卖中,压价是可以推导的均衡策略:在 人均匀独立私人价值的模型中,;实验中的出价常高于这一风险中性基准。收益等价定理说明一价、二价与全付拍卖的期望收入相同,但收入的风险不同。VCG 机制在理论上实现如实报告与有效配置,在实践中却可能收入很低、随竞争者增加反而下降,并且对落败者的协调与虚假身份很脆弱。下一章讨论,当买卖双方都有私人信息时,事情会难到什么程度。
参考文献
Fan, Y. (2026). Mechanism Design, Incentive Compatibility and the Game Theory of Negotiation: From Vickrey Auctions and the Myerson-Satterthwaite Theorem to Nash Bargaining, Read Beside Classical Chinese Legalist and Confucian Institutional Thought [机制设计、激励相容与谈判博弈的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23765012 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).