Documentation

EconCSLib.MechanismDesign.Auction.FirstPrice

EconCSLib.MechanismDesign.Auction.FirstPrice #

First-price auction: the winner pays their own bid.

Position in the hierarchy #

MechanismWithTransfers I (fun _ => U) I U        -- scalar bids, winner allocation, scalar payments
  └─ FirstPrice.mechanism                        -- winner + own-bid payment rule
       └─ FirstPrice.game v                      -- induced StrategicGame at true values v

The auction is formalized as a MechanismWithTransfers (from MechanismDesign.Auction.Transfer). The absence of DSIC is stated as ¬ mechanism.isDSIC auctionUtility.

Typeclass design #

Same as Auction.Vickrey:

Additionally, mechanism_not_isDSIC requires the existence of a positive element a : U (to construct distinct bid levels for the counterexample).

Main definitions #

Main results #

References #

Winner #

In the first-price auction, the winner is the highest bidder (Auction.argmaxBid).

noncomputable def Auction.FirstPrice.winner {I : Type u_1} [Fintype I] [Nontrivial I] {U : Type u_2} [LinearOrder U] (b : IU) :
I

The winner of the first-price auction: the bidder with the highest bid. Uses Auction.argmaxBid from MechanismDesign.Auction.AuctionBasic.

Equations
Instances For

    Bridge lemma #

    noncomputable def Auction.FirstPrice.utility {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] (v b : IU) (i : I) :
    U

    Utility of bidder i in a first-price auction: winner gets v ib i (pays own bid), losers get 0.

    Equations
    Instances For
      theorem Auction.FirstPrice.utility_winner {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] {v b : IU} {i : I} (h : i = winner b) :
      utility v b i = v i - b i

      If i is the winner, utility is v ib i.

      theorem Auction.FirstPrice.utility_loser {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] {v b : IU} {i : I} (h : i winner b) :
      utility v b i = 0

      If i is not the winner, utility is 0.

      noncomputable def Auction.FirstPrice.game {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] (v : IU) :

      First-price auction as a strategic game.

      This is also the game induced by mechanism via MechanismWithTransfers.toStrategicGame; see game_eq_toStrategicGame.

      Equations
      Instances For
        theorem Auction.FirstPrice.no_dominant_strategy {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] [IsOrderedAddMonoid U] (v : IU) (i : I) (bi : U) (ha : ∃ (a : U), 0 < a) :

        No dominant strategy exists in first-price auctions.

        For any bidder i and any bid bi, there exists a profile where bidding bi is not optimal for i.

        Counterexample (from xmum/gametheory): set all opponents to bid bia for some a > 0, then i wins with both bi and bia but pays less with bia.

        Mechanism design formulation #

        noncomputable def Auction.FirstPrice.mechanism {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] :
        MechanismWithTransfers I (fun (x : I) => U) I U

        The first-price auction as a MechanismWithTransfers.

        Agents report bids in U (their type space is homogeneous: T i = U).

        • Allocation: the winner index (element of I)
        • Payments: the winner pays their own bid b i; all losers pay 0.
        Equations
        Instances For
          theorem Auction.FirstPrice.game_eq_toStrategicGame {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] (v : IU) :
          game v = mechanism.toStrategicGame (fun (w : I) (pay vals : IU) (i : I) => if i = w then vals i - pay i else 0) v

          game v equals the strategic game induced by mechanism.

          The payoffs agree because paymentRule b i = if i = winner b then b i else 0, so the utility is v i - b i for the winner and 0 for losers.

          theorem Auction.FirstPrice.mechanism_not_isDSIC {I : Type u_1} [Fintype I] [Nontrivial I] [DecidableEq I] {U : Type u_2} [AddCommGroup U] [LinearOrder U] [IsOrderedAddMonoid U] (ha : ∃ (a : U), 0 < a) :
          ¬mechanism.isDSIC fun (w : I) (pay vals : IU) (i : I) => if i = w then vals i - pay i else 0

          No dominant strategy in first-price auctions (mechanism design form).

          The first-price auction does not satisfy DSIC: truthful bidding is not a weakly dominant strategy. This follows from no_dominant_strategy via game_eq_toStrategicGame.

          Requires a positive element a : U to construct the counterexample profile.