image of stars in the sky

Auctions

Kleio is an auctioning ad-server. Every time a decision is made regarding which ad, or ads, to show to a user an auction is run and the winner, winners, are chosen.

There exist many types of auctions. The one used by Kleio is called a second price auction. This type of auction has the peculiarity that the winner pays the price bid by the next highest bidder, rather than the bid they themselves made. The benefit of such an auction is believed to be that bidders are more likely to specify their true maximum bid, which in turn helps drive up your revenues as long as there are enough ads competing in the auction.

In Kleio, ads bit to have their product shown, but are only charged their winning bid when there is a conversion. What a conversion is, is entirely up to you to decide. Some common examples include counting a click on a product as a conversion, or the sale of the product. As a result of this two-stage process (impression followed by conversion) and ad that is only shown but that never converts earns you nothing at all. To avoid poorly performing ads with high bids from consistently winning the auctions, Kleio does not use the bid amounts directly. Instead Kleio calculates the conversion rate (that is to say the ratio of conversions to impressions) and uses the product of the conversion rate and bid to calculate an estimate of how much the impression itself is worth. This allows products with lower bids but good conversion rates from outcompeting worse performing products with higher bids.

Example

Consider the following ad inventory:

  • Ad1 has a maximum bid of 1000 and a conversion rate of 1%
  • Ad2 has a maximum bid of 100 and a conversion rate of 20%
  • Ad3 has a maximum bid of 25 and a conversion rate of 100%

In this scenario, we can work on the assuption that the probabilistic value (i.e. conversion rate multiplied by the bid) is what an impression of a product is worth to us. For the ads we have listed it would look like this:

  • Ad1 has a probabilistic value of 1000 * 1% = 10
  • Ad2 has a probabilistic value of 100 * 20% = 20
  • Ad3 has a probabilistic value of 25 * 100% = 25

As a result, it's in our interest to show Ad3 over the others, and despite Ad1 having a high maximum bid, it's actually the ad that is likely to gain us the least because it converts so infrequently that we are unlikely to ever see the value of the high maximum bid.

Since Kleio is running a second-price auction and runs the auctions based on the probabilistic values, Ad3 would win the auction and would be asked to pay 1 more than the probabilistic value of Ad2 in case of a conversion, i.e. 20 + 1, or 21, rather than 25.

If we had requested two winning ads, then we would have gotten returned Ad3 in first place, and Ad2 in second place. The winning bid for Ad2 would be the probabilistic value of Ad3 would be one more than that of Ad1, i.e. 11. This would in turn equate to an actual bid of 55 charged to Ad2 in case of a conversion (accounting for the conversion rate of 20% (11 / 20% = 55).