How the model works
The simulator draws 2,000 impressions from a seeded random number generator, so the same settings always give the same result. Each impression gets the chosen number of bidders, and each bid is a CPM drawn from a lognormal distribution around the median bid, with the spread as its log-scale standard deviation. Every floor in the chart reuses the same draws, so differences come from the floor alone.
- Bid-rejection rate = bids below the floor ÷ all bids.
- Fill rate = impressions with at least one bid at or above the floor ÷ impressions.
- Clearing price: first-price pays the highest bid; second-price pays the higher of the second-highest eligible bid and the floor, so a lone eligible bid pays the floor.
- RPM = mean clearing CPM across all impressions, counting unfilled ones as $0.
Things worth trying: with one or two bidders in a second-price auction, the floor often sets the price, so a floor near the median bid adds revenue. With many bidders, competition sets the price and a high floor mostly costs fill. In a first-price auction where bids do not react to the floor, as here, any floor can only remove revenue: the winner already pays their full bid.
Real marketplaces add things this model leaves out on purpose: bid shading, advertiser budgets and pacing, floors that vary by inventory, and bidders who learn from the floor.