Turning private values into prices — and why the rules of the auction decide who wins, what they pay, and how honest they are.
One seller, one (or more) item, and a crowd of buyers who each privately value it differently. An auction is a mechanism — a set of rules — that converts those hidden valuations into an allocation (who gets the item) and a payment (what they pay).
Same buyers, same valuations — but different auction rules pick different winners and different prices, and crucially they give buyers different incentives to bid honestly or shade. That's the heart of mechanism design: choose rules to get the outcomes you want.
Each bidder has a private valuation vi — the maximum they'd pay before walking away, a number known only to them and never seen by the auctioneer. Formally vi ∈ ℝ₊ and private to bidder i — this IPV model (independent private values) is the standard assumption baseline behind every theorem in this lab. Edit the table below — it drives every tab.
What they actually submit into the auction is their bid bi — a number they pick from their own valuation. Depending on the auction rule, bi may equal vi (truthful, as in Vickrey), be shaded below (as in First-Price & Dutch), or be pushed above (as in Third-Price). The whole game is choosing bi well, given the rules and your vi.
v: — ·
Second-highest: —
Each bidder writes one number on a sealed envelope, slides it under the door, and the auctioneer opens them all at once. No public clock, no opportunity to react. The auction rule then picks the winner and computes the price.
Four classic sealed-bid formats — First-Price, Second-Price (Vickrey), Third-Price and All-Pay — share the same allocation rule (highest bid wins) but pay very different amounts and elicit very different bidding strategies. The open-cry equivalents (English, Japanese, Dutch) sit on the previous tab.
Why? Your own bid only decides whether you win, never what you pay (the price is the runner-up's bid). Bidding above v risks paying more than the item is worth; bidding below v misses items you would happily own at that price. Just write your real valuation. Vickrey (1961) received the 1996 Nobel for this single insight.
bi chosen in advance: the price at which they will call MINE!. That is identical to writing a sealed bid.
Symmetric BNE under U[0,Vmax]: bi* = vi · (n−1)/nSetup. Highest bid wins and pays its own bid, so a winner with value v earns profit v − b and a loser earns 0. Bidding b = v guarantees zero profit, so everyone shades below v — the question is by how much. We look for a symmetric, strictly increasing equilibrium strategy b(·). Values are scale-free, so set Vmax = 1 (the answer turns out independent of Vmax); then P(value < x) = x.
So with two bidders each one bids half their value. The linear guess reproduces itself (α = ½), which is exactly what makes it an equilibrium — and ½ = (n−1)/n at n = 2.
Why the support [0,1] was harmless. Any interval [x, y] is just [0,1] stretched and shifted: a value on [x, y] is x + (y−x)·ṽ for some normalized ṽ ∈ [0,1]. So take the unit-interval solution α·ṽ, multiply it by the width (y−x), and add the offset x — that affine map is the equilibrium on [x, y]. Run the same calculation directly to see it: measure value and bid as amounts above the floor, V = v − x and B = b − x (both in [0, y−x]), and note the profit is still v − b = V − B.
The width (y−x) divides straight out of the first-order condition, and the floor x cancels because value and bid both sit above it — so you again shade the above-floor amount by exactly half. Restoring units, b* = x + ½(v − x): the very same ½ = (n−1)/n slope, just measured from x. Now generalize to n bidders.
Suppose every other bidder uses the same increasing strategy b(·). Because b is increasing, choosing a bid is equivalent to choosing a pretend value z and submitting b(z). You beat a rival exactly when their value is below z, so you win iff all n−1 rivals fall below z:
At n = 2 this is v/2, matching Step 1; with n = 4 the bid is 75% of v, with n = 10 it climbs to 90%, and as n → ∞ shading vanishes (b → v) — more rivals, less room to lowball. Restoring Vmax changes nothing: the factor (n−1)/n is scale-free.
Why exactly (n−1)/n? Note that (n−1)/n · v = E[ max of the n−1 rival values | all of them are below v ]. So in equilibrium you bid the expected highest competing value, conditional on winning — which is the price you'd expect to pay in a second-price auction. That coincidence is the seed of the Revenue Equivalence Theorem on the next tab.
In 1981 Roger Myerson and John Riley & William Samuelson proved:
In the common-values setting, each bidder i sees a private signal si = V + εi where V is the unknown true value and εi is mean-zero noise. Individually unbiased: E[si | V] = V. The bidder who bids highest is the one whose signal landed highest — exactly the bidder who happened to draw the largest positive noise. Conditional on winning, their signal is systematically biased upward. They paid too much.
si, then in any auction the winner's payment exceeds the true value V in expectation:
E[ winning bid | you won ] > V
The act of winning is itself information — it tells you everyone else thought the item was worth less. A rational bidder must condition on that and shade DOWN.Picture the bidders' signals as draws from a bell curve centred on the true value V. Each draw is individually unbiased, but the auction awards the item to the single highest one — and the maximum of many draws almost always lands in the right tail, above V. Winning selects the most over-optimistic estimate; that gap is the curse.
The single-item, single-seller formats on the earlier tabs are just the start. Real markets stretch the auction idea in three common directions — two-sided, buyer-led, and many-item.
Google runs one fresh auction for every single search — billions a day — to decide which ads appear and in what order. Here is what the result looks like to a searcher:
Those Sponsored slots were filled by the auction, shown in Ad-Rank order. The auction runs in three steps:
Now the bidding. Smart Bidding is Google's umbrella term for a family of automated, ML-driven bid strategies that set a fresh bid for every individual auction a Google Ads campaign enters — and there are billions per day.
It is the production-grade form of reinforcement-learning bidding. Instead of one hand-set bid for the whole campaign, the system observes contextual signals at the moment of each auction (device, location, time, query, audience, browser, previous behaviour, …) and asks an ML model: "given this exact context and our campaign goal, what bid maximises the goal?"
This is called auction-time bidding: the bid fed into the per-search auction above is computed live, in milliseconds, for that one impression — and it is different for every auction even within the same campaign.
Production Smart Bidding stacks two models: a predictive layer that estimates what an impression is worth, and a decision layer that turns that estimate — together with your budget and goal — into the bid actually submitted.
From the auction's context (query, device, location, time, audience, history) a deep network predicts the probability and value of a conversion — your expected value v for this impression. It is trained on billions of past outcomes by supervised learning: predict → compare with what actually happened → adjust the weights.
Given that predicted value, plus your Smart Bidding strategies, an RL / control policy chooses the bid actually submitted — pacing spend across the day and the whole campaign. This is exactly the sequential, budget-constrained decision reinforcement learning is built for.
📄 Reinforcement learning for auto-bidding — arXiv:2206.01293Each strategy uses the same underlying ML — what differs is the objective being optimised. Pick the one that matches what you can measure and what you want to grow.
Sets bids to get as many conversions as possible at your specified average cost-per-acquisition. Good when you know what a customer is worth.
Optimises bids to hit a target revenue / spend ratio. E.g. tROAS = 400% means $4 in revenue per $1 of ad spend.
Spends the entire daily budget to get the most conversions. No cost cap — use when you just need volume.
Like Maximize Conversions, but optimises for total conversion value. A $500 sale counts more than a $5 sale.
You set the base bid manually; Google raises it when a conversion is likely and lowers it when it isn't. A bridge between manual and automated bidding.
Sets bids to show your ad in a chosen position (e.g. absolute top, top of page, anywhere) on a target % of eligible queries. Brand-awareness oriented.