About Auction Lab
An auction engine that explains itself: every mechanism is written as a sequence of steps, and each step carries the rule that fired in plain English with the real numbers substituted. The interface draws whatever the engine emits and knows nothing about auctions.
Why it is built this way
The engine emits a trace: an ordered list of steps, each carrying a full state snapshot plus the rule that produced it. The browser reads that trace and draws it. It has no idea what an auction is, and it must not — if the JavaScript ever branches on a mechanism's name, the architecture has been broken, and there is a test that says so.
That constraint is what makes these pages possible. The worked example on every page here was produced by running the same engine the site runs, and the sentences explaining each step are the engine's own. Nothing on this site is transcribed, so nothing on it can drift out of date with the code.
What is in it
9 mechanisms, 9 worked examples, bidder strategies over repeated rounds with budget pacing and learning agents, and equilibrium analysis including revenue equivalence and mixed strategies. Deliberate simplifications are marked in the source with a ceiling and an upgrade path rather than left for a reader to discover.
Dependencies
None. The engine is the Python 3.11 standard library; the interface is vanilla JavaScript and CSS with no build step. That is a teaching decision as much as an engineering one: a reader can open any file in the repository and follow it without installing anything or learning a framework first.
Licence and source
MIT. The source is on GitHub, issues included.