⎝⎛uitrue(xi⋆)−F(u−i)+j=i∑uj(xj⋆)⎠⎞−profit under any other bidding⎝⎛uitrue(x~i⋆)−F(u−i)+j=i∑uj(x~j⋆)⎠⎞,
where x⋆ is the optimal allocation for (2) under truthful bidding and x~⋆ is an optimal (and therefore feasible) allocation for (2) under any alternative bidding. This expression simplifies to
x∈Ssup(i=1∑nui(xi))−j=1∑nuj(x~j⋆)≥0.
This quantity is nonnegative because the supremum is at least as large as the objective value of any feasible allocation.
Unfortunately, this mechanism is vulnerable to sybil attacks: where a buyer submits multiple bids, under several "aliases," to gain an advantage. [5] Certain conditions on the auction and assumptions on the goods can prevent these attacks (see this paper for details), but these conditions may be unrealistic in practice. For example, we can't enforce a per-buyer maximum allocation in the presence of sybils. In practice, the payment rule depends more on the context. If sybils might be a problem, a market may be better off using a first-price auction (everyone pays their bid). [6]
In this post and the last post, we started at a second-price auction and ended up looking at more general market-clearing mechanisms for divisible goods, market-clearing mechanisms which can be modeled via continuous optimization. Divisible, semi-fungible goods appear all over the place, from collectibles to GPU FLOPs to bond yield. I'm excited to see the future of optimization-based market design. If you're interest in this type of stuff and want to read more, check out my recent paper.
Thank you to Kshitij Kulkarni for helpful comments on a draft of this post.
This setup resembles bidding in power markets, where buyers submit how much power they are willing to buy at a given price (i.e., a demand curve). We could have specified the problem in terms of these curves instead.
I am fairly certain that no engineer wants to actually do this. For compute, it's probably better to just dynamically adjust the prices, as in this paper. But compute markets are hot right now.