From Theory
Jump to: navigation, search

Suppose two players are bidding for an object whose true value for player 1 is $75 and for player 2 is $50. What bidding strategy should the players use? Observe that (51,50) is a Nash equilibrium for this game. Another Nash equilibrium is (50,49). Second price auction is a mechanism which provides incentive for the players to bid their true value, simplifying the auction process. In a second price auction, the highest bidder gets the object but at the cost of the second highest bid. We use our example about 2 players bidding over an object described above and observe that bidding the true value is a dominant strategy. Let us look from player 1's perspective. If she bids above $75, say $80 then if any other player bids between the true value and her bid, she has to pay more for the object than its value to her. Thus it is clearly not in her interest to bid above the true value she has for the object. Similary if she bids below the value, say $65, then any bid by the other player between $65-$75 would give the object to the other player. It is clearly in her best interest to bid her true value for the object. In second price auctions, it is dominant strategy for all players to bid their true value.

Mechanism Design

We consider a game with <math>N</math> players, and each player has a set of types <math>T_i</math>. Let <math>T = T_1 \times \cdots \times T_N</math>. Let <math>{\mathcal O}</math> be the set of outcomes, and a utility function for each player <math>u_i : T_i \times {\mathcal O} \rightarrow {\mathbb R}</math>.

Mechanism : A mechanism <math>{\mathcal M}</math> is defined as a pair <math>(A, g)</math> where <math> A = A_1 \times \cdots \times A_N</math> is the set of action profiles and <math> g : A \rightarrow {\mathcal O}</math>.

A strategy for player <math>i</math> can be defined as a function from its types to actoins, i.e. <math>s_i : T_i \rightarrow A_i</math>. We restrict ourselves to pure strategies only. We can extend the utility function to strategies as follows <math>u_i(g, t = (t_1, \ldots, t_N), s) = u_i(t_i, g_1(s_1(t_1),\ldots,s_N(t_N))</math>

We now look at mechanisms for auctions. What might be meaningful outcome for an auction? A plausible idea for defining a meaningful outcome could be that the person who is willing to bid the highest gets the object. We consider this in an abstract setting where for any type profile <math> t \in T</math> we want to define what would be an ideal outcome. Suppose we have <math> f : T \rightarrow {\mathcal O}</math> which we call the social choice function. We then consider the following definition:

We say that a mechanism <math>{\mathcal M}</math> implements <math>f : T \rightarrow {\mathcal O}</math> in dominant strategies, if there exists a dominant Nash equilibrium strategy profile <math>(s_1^*, \ldots, s_N^*)</math> such that <math>g(s_1^*(t_1), \ldots, g(s_N^*(t_N)) = f(t_1, \ldots, t_N)</math>.

A mechanism <math>{\mathcal M}</math> is said to be a direct mechanism if for all <math>A_i = T_i</math>, i.e. the actions are the types themselves. A direct truthful mechanism (a.k.a. incentive compatible mechanism) is one in which it is the dominant strategy to take <math> s_i(t_i) = t_i</math> for all <math>i</math>.

Revelation Principle If <math>{\mathcal M}</math> implements a social choice function <math>f</math> in dominant strategies, then there is a direct trutful mechanism <math>{\mathcal M}^\prime</math> that implements <math>f</math> in dominant strategies.

Proof: Let <math>{\mathcal M} = (A, g)</math> be the given mechanism and we want to construct a mechanism <math>{\mathcal M}^\prime = (T, g^\prime)</math>. If <math>(a_1^\prime, \ldots, a_N^\prime) \in T</math> is a type profile, we define <math>g^\prime(a_1^\prime, \ldots, a_N^\prime) = g(s_1^*(a_1), \ldots, s_N^*(a_N))</math>. All we need to observe now is that if <math>s_i^* : T_i \rightarrow A_i</math> is a dominant strategy for <math>{\mathcal M}</math> then <math>s_i^*(t_i) = t_i</math> is a dominant strategy in <math>{\mathcal M}^\prime</math>. This concludes the proof.

We introduce payments to the game denoted by <math>\pi_i</math> for player <math>i</math>. If the original utility function was <math> u_i : T_i \times {\mathcal O} \rightarrow \mathbb{R}</math>, the true utility for player <math>i</math> is now <math> u_i(t,o) + \pi_i</math>

We modify the definition of mechanism to deal with payments. We now define a mechanism as <math>{\mathcal M} = (A, g, \pi)</math> where <math> g : A \rightarrow {\mathcal O} \times \mathbb{R}^N</math>.

Vickrey-Clarke-Grove (VCG) Mechanism

This mechanism generalises second price auction. In this mechanism, the set of actions is the set of types so that we have <math>{\mathcal M} = (A=T, g, \pi)</math>. Define <math>g(a_1,\ldots,a_N) = \left( \operatorname{arg max}_{o \in {\mathcal O}} \sum_i u_i(a_i,o),\pi_1,\ldots, \pi_N \right) </math> Let <math>o^* = \operatorname{arg max}_{o \in {\mathcal O}} \sum_i u_i(a_i,o)</math> and <math>o^*_{-i} = \operatorname{arg max}_{o \in {\mathcal O}} \sum_{j, j\neq i} u_j(a_j,o)</math>. Finally define <math>\pi_i = \sum_{j \neq i}(u_j(a_j,o^*_{-i}) - u_j(a_j,o^*))</math>.

Let us consider an example. Suppose there are 5 objects <math>\{A, B, C, D, E\}</math>. Let us suppose that there are four players, P1 likes <math>\{A, B, E\}</math> and is willing to pay $10 for that, P2 likes <math>\{C,D\}</math> and is willing to pay $5 for that, P3 likes just <math>\{D\}</math> and pay $4 for that and P4 likes <math>\{A, C\}</math> and is willing to pay $10 for that. The optimal outcome <math>o^*</math> is when P1 and P2 get the bid. Calculating from the above definitions one can show that player 1 should pay $9, player 2 should pay $4.

Theorem VCG is a direct and truthful mechanism

Proof: The total utility for player <math> i </math> is

<math> u_i( t_i, o^* ) + \sum_{ j \neq i } u_j( a_j, o^* ) - \sum_{ j \neq i } u_j( a_j, o_{ -i }^* ) </math>.

The last term in this expression does not depend on player <math> i </math>'s action, so we can ignore it. Furthermore, <math> o^* </math> maximizes total utility given each player's action. However, <math> i </math>'s actual utility depends on his type <math> t_i </math>, so he will maximize his utility by setting <math> a_i = t_i </math>.