Naive Auction Theory: First price sealed-bid auction

This post is the first of (I hope) many attempts to study Auction Theory from first principles. Given an auction scenario, I will attempt to reduce it to a viable mathematical model, and then derive properties of the model — as far as possible with math, but with simulations as necessary.

As a warning, I don’t know auction theory, but I do know math. Anything I say might be horribly wrong. I would appreciate any corrections, addenda, or cool links.

The first type of auction I will attempt to model is the,

First price sealed-bid auction.*

In this auction, nobody knows what anyone else is bidding. But, everybody has a number in their head for how much an item is worth.

Let’s make this concrete: You and your friends are trading Pokemon cards. Somebody has a Charzard card that they are very willing to part with. So you all get some envelopes, write down a number, and the highest number wins the card.

To generate a model, I will make some simplifying assumptions.

  1. You have a finite number of friends n.
  2. Each friend has a true price in mind for the card, which we call X_i. This true price is a random variable drawn from some distribution \mathscr{B}.
  3. We’ll call the PDF of \mathscr{B}, b(x) and the CDF of \mathscr{B}, B(x).
  4. *

Note that these assumptions are probably not realistic. People have different belief distribution, and bidding games of chicken are quite common on bidding websites, suggesting that a Markov chain may be a better model(but that’s for next time, folks!).

If X_1, \ldots, X_{n} are the bids, X_{(1)}, the first order statistic, will be the winning bid. The probability that the highest bid is equal to some number y, is exactly the probability that n - 1 bids are less than y and exactly 1 bid is $y$. After recalling some rusty counting skills, we realize that this is:

 P(X_{(1)}=y) = \binom{n}{n-1}B(y)^{n-1}b(y)

Using the chain rule from calculus, we can also calculuate the CDF, P(X_{(1)} < y) = B(y)^{n}. We can also write down the expected value E[X_{(1)}] = \int \binom{n}{n-1}B(y)^{n-1}b(y)y, and depending on what $\mathscr{B}$ is, try to calculate it.

Now that we've got everything set up, we can pick \mathscr{B}. I will pick it to be the normal distribution. There's not a particularly good reason for this, except that the normal distribution is easy to calculate with, and conceivably, a large portion of the population might have similar utility functions.

Supposing that people are on average willing to pay $5 bucks with $1 standard deviation, we can plot the distribution of X_{(1)}

import numpy as np
import matplotlib.pyplot as plt
 
iteration = 10000
n = 20
average_price = 5
sigma = 1
 
samp = []
for k in range(iteration):
    # randomly sample bid prices
    prices = np.random.normal(average_price, sigma, n)
    prices.sort()
    # sample the first order statistic
    samp.append(prices[-1])
# plot a histogram of all the first order statistics in 10000 trials.
_, bins, _ = plt.hist(samp, 10)
plt.plot(bins)
plt.show()

So the first order statistic appears to be normally distributed with a shifted mean. 

Let’s think about this for a moment. Even if most people in a population believe that an item is worth $5 bucks, in a first price sealed bid auction, the seller will receive quite a bit more. Just how much more depends on how many people are bidding, which again, we can simulate numerically.*

Calculating the mean shift

Unfortunately, there’s no nice closed form for the expected value depending on n. However, the simulation is still informative.

# calculate and plot distribution for first order statistic
import numpy as np
import matplotlib.pyplot as plt
 
iteration = 10000
average_price = 5
sigma = 1
 
means = []
for n in range(20, 1000, 20):
    samp = []
    for k in range(iteration):
        prices = np.random.normal(average_price, sigma, n)
        prices.sort()
        samp.append(prices[-1])
    mean_samp = sum(samp)/len(samp)
    means.append(mean_samp)
plt.plot(range(20,1000,20),means)
plt.show()

So the mean shifts higher as the number of bidders increase: the more people that participate in a first-bid closed auction, the more the seller makes!

In some very rough sense, we’ve just modeled Marx’s distinction between use-value and exchange value. The true perceived utility for an item is not at all the price paid for its possession. Or at least, that’s the case in a first price closed auction.

* Topic for next time, how to get more mathematically satisfying results with polynomial approximations.

References for probability:

I learned probability from this book and this dude.

4 Comments

  • Daniel wrote:

    You have x-sub-i as both i’s true price, and i’s bid. But these are separate values. If an object is worth $5 to me, I have no reason to bid $5, since then I would have no gain from winning.

  • Andrew wrote:

    No you haven’t, because the one who wins the auction is paying his or her perceived value for the item. Had they thought it was worth less, they would have bid lower. What you’ve shown, in fact, is that a larger market is more efficient at finding the buyer who places the highest value on an item.

  • Alex Godofsky wrote:

    Why are you assuming that people will bid their private value? If they bid their private value the expected gain from the auction is zero; they gain nothing if they win and nothing if they lose. If they bid less, there is nonzero probability that they will have a positive gain, so it is a strictly dominant strategy.

Leave a Reply

Your email is never shared.Required fields are marked *