Four canonical auction formats, one deep result: under standard assumptions, revenue equivalence says they all yield the same expected revenue. The differences matter when those assumptions break down, which they always do in practice.
Four canonical formats
English (ascending): bidders raise prices until one remains. Dutch (descending): price drops until someone claims the item. First-price sealed: highest bid wins, pays their bid. Second-price sealed (Vickrey): highest bid wins, pays the second-highest bid. English and Vickrey are strategically equivalent (dominant strategy: bid your value). Dutch and first-price sealed are strategically equivalent (must shade your bid below your value).
# Four auction types
values = [80, 60, 45]
n = len(values)
# Vickrey: bid true values, pay second-highest
sorted_v = sorted(values, reverse=True)
print("=== Vickrey ===")
print("Bids: " + str(values))
print("Winner pays: $" + str(sorted_v[1]))
# First-price: shade bids, pay own bid
fp_bids = [v * (n-1)/n for v in values]
print(f"\n=== First-price ===")
print("Shaded bids: " + str([round(b, 2) for b in fp_bids]))
print("Winner pays: $" + str(round(max(fp_bids), 2)))
print("\nRevenue equivalence: ~$" + str(sorted_v[1]) + " vs ~$" + str(round(max(fp_bids), 2)))
Revenue equivalence theorem
Under four conditions (independent private values, risk-neutral bidders, symmetric bidders, the lowest-type bidder gets zero surplus), all standard auctions yield the same expected revenue. The seller's choice of format does not matter for revenue. It matters for other things: the Vickrey auction is simpler (truth-telling is dominant), but first-price auctions are more robust to collusion.
Scheme
; Revenue equivalence: simulation; N bidders draw values uniformly from [0, 100]; Expected revenue in both formats = (N-2)/(N-1) * 100 * N/(N+1); For uniform [0,1]: E[revenue] = (N-1)/(N+1)
(define (expected-revenue-uniform n)
; E[second-highest of n draws from Uniform(0,100)]; = 100 * (n-1) / (n+1)
(/ (* 100 (- n 1)) (+ n 1)))
(display "Expected revenue (uniform values on [0,100]):") (newline)
(for-each
(lambda (n)
(display " ") (display n) (display " bidders: $")
(display (/ (round (* (expected-revenue-uniform n) 100)) 100))
(newline))
(list 2351020))
(newline)
(display "More bidders = more competition = higher revenue") (newline)
(display "But format does not matter (given the assumptions).")
VCG for multiple items
The VCG mechanism extends to multi-item auctions. Each bidder reports values for all bundles of items. The mechanism finds the welfare-maximizing allocation, then charges each bidder the externality they impose on others. This generalizes the Vickrey auction from one item to any combinatorial allocation problem. Computational complexity is the catch: finding the optimal allocation is NP-hard in general.
Scheme
; VCG multi-item: 2 items (A, B), 3 bidders; Bidder values for individual items and the bundle; (value-A value-B value-AB)
(define bidder-1 (list 10815)) ; slight complementarity
(define bidder-2 (list 71218)) ; complementarity
(define bidder-3 (list 9614))
; Efficient allocation: maximize total welfare; Try: bidder-1 gets A (10), bidder-2 gets B (12) => 22; Try: bidder-2 gets AB (18) => 18; Try: bidder-1 gets A (10), bidder-3 gets B (6) => 16; Best: bidder-1 gets A, bidder-2 gets B => 22
(display "Efficient allocation:") (newline)
(display " Bidder 1 gets A (value=10)") (newline)
(display " Bidder 2 gets B (value=12)") (newline)
(display " Total welfare: 22") (newline) (newline)
; VCG payment for bidder 1:; Without bidder 1: best is bidder-2 gets AB (18); Others' welfare without 1: 18; With bidder 1: others' welfare: 12 (bidder-2 gets B); Payment = 18 - 12 = 6; VCG payment for bidder 2:; Without bidder 2: bidder-1 gets A (10), bidder-3 gets B (6) = 16; With bidder 2: others' welfare: 10 (bidder-1 gets A); Payment = 16 - 10 = 6
(display "VCG payments:") (newline)
(display " Bidder 1: $6 (gets $10 item, surplus $4)") (newline)
(display " Bidder 2: $6 (gets $12 item, surplus $6)") (newline)
(display " Total revenue: $12")
Neighbors
Cross-references
Hedges 2018 โ compositional game theory: auctions as composed open games