🧪 We're running a cheminformatics notebook competition!

Enter by October 4
104 / 104
The Winner's Curse

The Winner's Curse

by marimo team

Simulate the winner's curse in a common-value auction and find the bid discount that removes it.

About this notebook

This notebook simulates the winner's curse in a common-value auction. Many bidders each make a noisy guess of one unknown value and bid that guess. The highest guess wins, and the highest guess is usually above the true value, so the winner overpays. The notebook draws the guesses from a normal distribution with numpy, holds the results in polars data frames, and plots them with Altair.

Sliders from the wigglystuff package set the guess mean, the guess noise, the true value, and the number of bidders. One chart marks each bid and highlights the winner against the true value. A second chart runs thousands of auctions and shows the distribution of winning bids, which sits to the right of the true value. A third chart varies the number of bidders and shows that the average overpayment grows as the crowd grows.

The last section gives a rule to remove the curse. The expected largest of n guesses is the mean plus the noise times a top-gap term a_n, and the notebook approximates a_n with Blom's formula for normal order statistics. A bidder who lowers the bid by the noise times a_n bids near the true value. A final chart compares the naive strategy and the discounted strategy across crowd sizes, and shows that the correct discount flattens the overpayment to about zero.

Related notebooks