Bayesian Games and Types

A Bayesian game is the standard way to model strategic interaction in which players do not know each other’s payoffs. The whole apparatus rests on one move, due to John Harsanyi in 1967–68, that the 1994 Nobel committee singled out as his contribution: replace “player 2’s payoff function is unknown to player 1” with “Nature drew player 2’s type from a commonly known distribution, and player 1 did not observe the draw.” That substitution converts a game of incomplete information — one where the players do not know the game they are playing — into a game of complete but imperfect information, where the structure is common knowledge and the only thing hidden is a chance move (Harsanyi, Nobel lecture, 9 December 1994, §10). Once that is done, Nash equilibrium applies unchanged to the enlarged game, and the resulting object is called a Bayes–Nash equilibrium. Everything downstream — private-value auction theory, signalling, screening, and the Bayes–Nash half of Mechanism Design — is an application of this one transformation.

Mental Model

The single most useful thing to hold in your head is a picture of what Harsanyi actually swapped out.

Before the transformation you have an object that is not, strictly speaking, a game at all. A game in the von Neumann–Morgenstern sense is a fully specified mathematical structure: who moves, when, with what information, and what everyone is paid at each leaf. If player 1 does not know player 2’s payoff function, then player 1 does not know the structure, and there is nothing for a solution concept to bite on. Harsanyi is explicit that this is the difficulty, and equally explicit that the difficulty can always be pushed into payoffs: “by suitable modelling, all forms of incomplete information can be reduced to the case where the players have less than full information about each other’s payoff functions.”

After the transformation you have an ordinary game with a chance move at the root.

flowchart TB
    subgraph BEFORE["Before: an I-game, not really a game"]
      B1["player 1 does not know U2"]
      B2["so player 1 forms a belief about U2"]
      B3["but player 2's move depends on<br/>what he believes player 1 believes"]
      B4["...and so on, forever:<br/>an infinite hierarchy of expectations"]
      B1 --> B2 --> B3 --> B4
    end
    subgraph AFTER["After: an ordinary C-game with imperfect information"]
      A0["Nature draws a type profile from<br/>a commonly known prior p"]
      A1["each player i observes only t_i"]
      A2["types are the players;<br/>a strategy is a function from type to action"]
      A3["Nash equilibrium of the enlarged game<br/>= Bayes-Nash equilibrium"]
      A0 --> A1 --> A2 --> A3
    end
    BEFORE -->|"Harsanyi 1967-68"| AFTER
    style AFTER fill:#e6f5e6
    style BEFORE fill:#ffecec

Figure 1 — what the transformation buys. The left column is the model Harsanyi actually tried first and rejected; the right column is what he replaced it with. The insight to take away: the transformation does not solve the hierarchy of beliefs, it encodes it. A type is a complete summary of everything a player privately knows, including what he believes about others’ beliefs, collapsed into a single label whose conditional distribution reproduces the whole hierarchy. That is why the prior has to be a joint distribution over type profiles rather than a product of independent marginals.

The second thing to hold in your head is the vocabulary trap, because two pairs of words that sound like synonyms are not. Harsanyi devotes a whole section of his Nobel lecture to keeping them apart, and it is worth quoting him because applied papers conflate them constantly:

Another, seemingly similar but actually quite different, distinction is between games with perfect and with imperfect information. Unlike the first distinction, this one is based on the amount of information the players will have in various games about the moves that occurred at earlier stages of the game, i.e., about some events that occurred during the time when the game was actually played, rather than about some things decided upon before that particular time.

Complete informationIncomplete information
Perfect informationChess, checkers — you know the rules and you have seen every move(empty after the transformation; before it, this is the awkward case)
Imperfect informationMost card games, Kuhn Poker — you know the rules, you have not seen the dealThe pre-Harsanyi state of an auction, a bargaining problem, a signalling game

Table 1 — the two independent axes. Complete/incomplete is about the structure; perfect/imperfect is about the moves. The insight: Harsanyi’s transformation moves a game one cell to the left. Incomplete information becomes complete-but-imperfect. It never moves anything vertically, which is why the resulting game still needs Imperfect Information and Information Sets to analyse and why Backward Induction on nodes does not apply to it.

The Model Harsanyi Rejected, and Why

It is worth walking the failed model, because it explains why types feel like an odd construction the first time you meet them and why nothing simpler works.

Suppose two players do not know each other’s payoff functions U1 and U2. The obvious Bayesian move is: player 1 forms a subjective probability distribution P1¹(U2) over the payoff functions player 2 might have. Call that player 1’s first-order expectation. Symmetrically player 2 forms P2¹(U1).

But player 1’s best response depends on what player 2 will do, and what player 2 will do depends on P2¹(U1), which player 1 does not know either. So player 1 needs a second-order expectation P1²(P2¹) — a probability distribution over the possible first-order distributions player 2 might hold. And player 2 needs P2²(P1¹). And then third-order, and so on without end. Harsanyi’s own statement of the general term: “the kth-order expectation (k > 1) of either player i will be a subjective probability distribution P_i^k(P_j^{k-1}) over all the (k−1)-order subjective probability distributions P_j^{k-1} that the other player j (j ≠ i) may have chosen.”

Two things go wrong.

It is unbounded even to write down. For n players, each player needs n − 1 first-order expectations, (n − 1)² second-order expectations, and so on — the object grows without limit before any analysis starts. Harsanyi calls it “a hopelessly cumbersome model for analysis of I-games.”

It is not even obviously well defined. These are probability distributions over function spaces, and Harsanyi notes in a footnote that their “proper mathematical definition poses some well-known technical difficulties,” resolved by Aumann’s 1963 and 1964 work on choosing a function at random. The measure-theoretic problem is real; it just is not the reason the model is impractical.

flowchart LR
    P1["P1(U2)<br/>1's belief about 2's payoffs"]
    P2["P2(P1)<br/>2's belief about that belief"]
    P3["P1(P2(P1))<br/>1's belief about that"]
    P4["..."]
    T["ONE joint prior p over<br/>type profiles (t1, t2)"]
    P1 --> P2 --> P3 --> P4
    P4 -.->|"collapse"| T
    style T fill:#e6f5e6

Figure 2 — the collapse. The hierarchy on the left is replaced by the single object on the right. The insight to take away: the conditional distributions p(t_{-i} | t_i) generated by one joint prior reproduce the entire hierarchy — first-order beliefs are the conditionals, second-order beliefs are what you get by conditioning again on the other side. Harsanyi’s own summary of what he was after: “there is a much simpler and very much preferable approach to analyzing I-games, one involving only one basic probability distribution Pr (together with n different conditional probability distributions, all of them generated by this basic probability distribution Pr).”

The historical provenance is worth stating exactly, because the primary papers are hard to obtain (see the uncertainty callout below): the technique was developed while Harsanyi was one of “about ten young game theorists” consulting for the U.S. Arms Control and Disarmament Agency between 1965 and 1969, and the running example in his Nobel lecture is U.S.–Soviet arms-control negotiation, where “types” are national characteristics produced by social forces that “seem to admit only of probabilistic predictions.”

Uncertain

Verify: any claim in this note attributed to the 1967–68 papers themselves. Reason: the primary source was not obtained here — and the failure was retrieval, not extraction. Harsanyi’s own citation, taken from the reference list of his Nobel lecture, is “Games with Incomplete Information Played by ‘Bayesian’ Players,” Parts I to III, Management Science 14 (1967–68), pp. 159–182, 320–334, and 486–502. Routes tried and their results: pubsonline.informs.org/doi/pdf/10.1287/mnsc.14.3.159 → HTTP 403; jstor.org stable-URL landing → HTTP 200 with a 3 kB chrome page and no article; six guessed course-page mirrors of the */courses/*/papers/harsanyi*.pdf shape → 404 or a 4 kB HTML shell. No scanned copy was located, so the render-and-read route (pdftoppm -png then read the page images, which did work for Reny 1993 in the sibling note Sequential Equilibrium) was never applicable — nothing was retrieved to render. Everything here that sounds like Harsanyi is quoted from his Nobel lecture of 9 December 1994, fetched and read in full, which he wrote precisely as a restatement of the 1967–68 results; he notes in §5 that he has switched from the papers’ player-centred interpretation to a type-centred one because “now I think that it provides a more convenient language.” To resolve: obtain Management Science 14 through an institutional subscription and check the 1967–68 formulation against the 1994 restatement, in particular whether “common prior” is stated there as an assumption or derived.

The Transformation, Worked End to End

The cleanest small example is entry deterrence with an incumbent whose toughness is private. This is Levin’s Games of Incomplete Information, §2.1, and it is small enough to solve by hand and to check exactly by machine.

The situation. An entrant decides whether to enter a market. If it enters, the incumbent decides whether to Fight or Accommodate. The incumbent is normal with probability p and tough with probability 1 − p. A normal incumbent finds a price war costly; a tough one finds it cheap and finds sharing the market costly. Payoffs, written (incumbent, entrant):

OutcomeNormal incumbentTough incumbent
Entrant stays Out(2, 0)(2, 0)
Enter, incumbent Fights(−1, −1)(1, −1)
Enter, incumbent Accommodates(1, 1)(−1, 1)

This is not yet a game: the entrant does not know which of the two payoff tables it is facing, so it does not know the structure.

The transformation. Put a chance move at the root. Nature picks normal with probability p and tough with probability 1 − p. The incumbent observes the draw; the entrant does not.

flowchart TB
    N(("Nature")) -->|"p<br/>normal"| E1{{"Entrant"}}
    N -->|"1-p<br/>tough"| E2{{"Entrant"}}
    E1 -->|"Out"| O1["(2, 0)"]
    E2 -->|"Out"| O2["(2, 0)"]
    E1 -->|"In"| I1["Incumbent<br/>type = normal"]
    E2 -->|"In"| I2["Incumbent<br/>type = tough"]
    I1 -->|"Fight"| F1["(-1, -1)"]
    I1 -->|"Accommodate"| A1["(1, 1)"]
    I2 -->|"Fight"| F2["(1, -1)"]
    I2 -->|"Accommodate"| A2["(-1, 1)"]
    E1 -.->|"same information set:<br/>the entrant cannot tell<br/>these two nodes apart"| E2
    style N fill:#ffe9cc

Figure 3 — the entry game after the Harsanyi transformation. Payoffs are (incumbent, entrant). The dotted link is the entrant’s information set: it spans both of Nature’s branches, so the entrant must choose one action that is good on average. The insight to take away: nothing about the players’ knowledge changed — the entrant is exactly as ignorant as before. What changed is that the ignorance is now about a move rather than about the rules, and moves are something the extensive form already knows how to represent. Compare the structure to the diagrams in Extensive-Form Games: this is an ordinary tree with an ordinary information set.

Solving it. The incumbent’s type is payoff-relevant only to itself, so this is a private values game. Levin’s terminology: “if u_i depends on θ_i, but not on θ_{-i}, we sometimes say the game has private values.” Each type of the incumbent has a dominant action once entry has occurred — a normal incumbent gets 1 from accommodating against −1 from fighting; a tough incumbent gets 1 from fighting against −1 from accommodating. So the incumbent separates: it fights if and only if it is tough.

The entrant then faces a lottery. Entering yields p·(+1) + (1 − p)·(−1) = 2p − 1; staying out yields 0. So the entrant enters if and only if p > 1/2.

Running that through the exact solver below reproduces it and turns up something the hand calculation misses:

p = 1/4:
   incumbent {'normal': 'F', 'tough': 'F'}  entrant {'entrant': 'Out'}
   incumbent {'normal': 'A', 'tough': 'F'}  entrant {'entrant': 'Out'}
   E[enter] = -1/2   vs   E[out] = 0
p = 3/4:
   incumbent {'normal': 'F', 'tough': 'F'}  entrant {'entrant': 'Out'}
   incumbent {'normal': 'F', 'tough': 'A'}  entrant {'entrant': 'Out'}
   incumbent {'normal': 'A', 'tough': 'F'}  entrant {'entrant': 'In'}

The equilibrium the hand calculation predicts is there — (A, F, In) at p = 3/4 and no entry at p = 1/4. But there are extra pure Bayes–Nash equilibria in which the normal incumbent fights. They survive because the entrant stays out, so the incumbent’s decision never actually arises, and any action at an unreached decision point is a costless best response. This is precisely the defect that motivates Subgame Perfect Equilibrium and, when the unreached decision point is not the root of a proper subgame, Sequential Equilibrium. Bayes–Nash equilibrium is a Nash concept and inherits every one of Nash’s blind spots off the path of play. It is worth noticing this on the smallest possible example rather than discovering it in a signalling model with twenty equilibria.

Formal Definition, Symbol by Symbol

Levin’s definition, which follows Harsanyi’s:

A game with incomplete information G = (Θ, S, p, u) consists of:

  1. A set Θ = Θ_1 × ... × Θ_I, where Θ_i is the (finite) set of possible types for player i.
  2. A set S = S_1 × ... × S_I, where S_i is the set of possible strategies for player i.
  3. A joint probability distribution p(θ_1, ..., θ_I) over types. For finite type space, assume that p(θ_i) > 0 for all θ_i ∈ Θ_i.
  4. Payoff functions u_i : S × Θ → ℝ.

Walking the symbols:

  • θ_i — player i’s type. Read it as “everything player i privately knows.” In the entry game θ_incumbent ∈ {normal, tough}; in a private-value auction θ_i is bidder i’s valuation; in Spence’s model θ is a worker’s productivity.
  • Θ_i — the set of types player i could turn out to be. Finiteness is a convenience, not a requirement: auctions routinely use Θ_i = [0,1].
  • p(θ_1, ..., θ_I) — the common prior, a joint distribution over the whole profile. It is joint, not a product, because correlated types are a real and important case (common-value auctions, and hence The Winner’s Curse). The assumption p(θ_i) > 0 matters: a type with prior probability zero has no well-defined conditional beliefs, and the analysis silently breaks.
  • u_i : S × Θ → ℝ — note the domain. Your payoff can depend on everyone’s type, not only your own. When it depends only on your own, the game has private values; when it depends on others’, it has common or interdependent values, and adverse selection appears.

A Bayesian pure strategy is not an action. It is a function f_i : Θ_i → S_i — a plan that says what you do for each type you might turn out to be. This is the same conceptual move as a strategy in Extensive-Form Games being a complete contingent plan rather than a move, and it is the reason the strategy space explodes: with |Θ_i| types and |S_i| actions there are |S_i|^{|Θ_i|} type-contingent strategies per player.

Bayes–Nash equilibrium. A profile (f_1, ..., f_I) is a Bayes–Nash equilibrium if for every player i, every type θ_i, and every alternative action s_i:

   Σ_{θ_{-i}}  u_i( f_i(θ_i), f_{-i}(θ_{-i}), θ_i, θ_{-i} ) · p(θ_{-i} | θ_i)
 ≥ Σ_{θ_{-i}}  u_i( s_i,      f_{-i}(θ_{-i}), θ_i, θ_{-i} ) · p(θ_{-i} | θ_i)

Reading it left to right: fix player i and fix the type he turned out to be. Sum over the type profiles the others might have, weighting each by the conditional probability p(θ_{-i} | θ_i) — this is the Bayesian part, and it is where the prior gets used. Inside the sum, the others play their type-contingent strategies f_{-i}(θ_{-i}). The inequality says: what f_i tells you to do, given the type you are, beats every alternative action.

This is called the interim condition — after learning your type, before learning anyone else’s. Levin gives the equivalent ex ante form (maximise before learning your own type, over whole functions f_i) and notes that the interim version “just says that in order to maximize your expected payoff given that you know your types, then the strategy you choose for each type should maximize your payoff conditional on your having that type.” The two are equivalent exactly when every type has positive prior probability, which is why item 3 of the definition insists on it.

Harsanyi’s own framing is more radical and worth keeping alongside: treat each type as a separate player. A two-player game with K types for player 1 and M for player 2 becomes, under this reading, “a (K + M)-person game whose real ‘players’ are the K types of player 1 and the M types of player 2.” Bayes–Nash equilibrium of the original is then literally Nash equilibrium of the (K + M)-player game. This is exactly the representation the solver below implements, and it is why the implementation is short.

A Bayes–Nash Solver, Verified Exactly

The strategy space is finite when types and actions are, so a Bayes–Nash equilibrium can be found by brute-force enumeration over type-contingent strategies. Doing it in exact rational arithmetic matters more here than in most places: interim payoffs are conditional expectations, so they are ratios, and a floating-point solver will report 0.30000000000000004 > 0.3 and hand you an equilibrium that is not one. Python’s fractions.Fraction is stdlib, needs no install (there is no pip and no numpy on this machine), and makes every comparison exact.

from fractions import Fraction as F
from itertools import product
 
class BayesianGame:
    def __init__(self, types, actions, prior, payoff):
        self.types = types          # types[i]  : tuple of type labels for player i
        self.actions = actions      # actions[i]: tuple of actions for player i
        self.prior = prior          # dict: type profile tuple -> Fraction, sums to 1
        self.payoff = payoff        # (action profile, type profile) -> tuple of Fractions
        self.n = len(types)
        assert sum(prior.values()) == 1, "prior must sum to exactly 1"
 
    def pure_strategies(self, i):
        "Every function f_i : T_i -> A_i, as a dict."
        for combo in product(self.actions[i], repeat=len(self.types[i])):
            yield dict(zip(self.types[i], combo))
 
    def marginal(self, i, ti):
        "Pr[t_i = ti], for conditioning."
        return sum(p for t, p in self.prior.items() if t[i] == ti)
 
    def interim_payoff(self, i, ti, ai, profile):
        """Player i's expected payoff conditional on being type ti and playing ai,
        when everyone else uses their type-contingent strategy in `profile`."""
        m = self.marginal(i, ti)
        if m == 0:
            return F(0)
        tot = F(0)
        for t, p in self.prior.items():
            if t[i] != ti or p == 0:
                continue
            acts = tuple(ai if j == i else profile[j][t[j]] for j in range(self.n))
            tot += p * self.payoff(acts, t)[i]
        return tot / m                       # exact conditional expectation
 
    def is_bne(self, profile):
        for i in range(self.n):
            for ti in self.types[i]:
                if self.marginal(i, ti) == 0:
                    continue
                here = self.interim_payoff(i, ti, profile[i][ti], profile)
                if any(self.interim_payoff(i, ti, a, profile) > here
                       for a in self.actions[i]):
                    return False
        return True
 
    def solve(self):
        "All pure-strategy Bayes-Nash equilibria, by exhaustive enumeration."
        out = []
        for profile in product(*(list(self.pure_strategies(i)) for i in range(self.n))):
            if self.is_bne(list(profile)):
                out.append(profile)
        return out

Line-by-line, the parts that are easy to get wrong:

  • assert sum(prior.values()) == 1 — with Fraction this is a real check. With floats it would be a lie roughly half the time, and it would hide the most common data-entry bug in Bayesian games.
  • marginal(i, ti) computes Pr[θ_i = t_i] by summing the joint over every profile in which player i has that type. This is the denominator of Bayes’ rule. Computing it from the joint rather than storing it separately is what makes correlated priors work without special-casing.
  • interim_payoff divides by that marginal. Note it sums p * payoff first and divides once at the end, rather than dividing each term — with Fraction both are exact, but the single division keeps the denominators smaller and the code faster.
  • The if m == 0: return F(0) guard is the type-with-zero-probability case. Returning zero is not “correct” — the conditional expectation is genuinely undefined — but the equilibrium check skips such types anyway, so the value is never used. It is there so a malformed prior fails loudly at the assertion rather than quietly here.
  • is_bne checks the interim condition and only single-action deviations. That is sufficient: since a type-contingent strategy’s value decomposes type by type, a profitable deviation in a whole function implies a profitable deviation at some single type.

Sanity check against a known answer. Levin’s public-good example (§4.1) has player 1 with known cost c1 < 1/2, player 2 with cost c_low with probability p and c_high with probability 1 − p, where 0 < c_low < 1 < c_high and p < 1/2. He proves the equilibrium is unique: player 1 calls, both types of player 2 do not. With c1 = 1/4, c_low = 1/2, c_high = 3/2, p = 1/3:

type-contingent pure strategy profiles enumerated: 8
  BNE: [{'only': 'Call'}, {'low': 'Dont', 'high': 'Dont'}]
high type: u(Call) - u(Dont) when 1 Calls = -3/2

Unique, and it matches Levin’s Proposition 1. The −3/2 is the exact dominance margin for the high-cost type: (1 − c_high) − 1 = −c_high. Levin remarks that the argument “works a bit like iterated dominance,” and the enumeration confirms the conclusion without relying on the elimination order — see Dominant Strategies and Iterated Elimination for why order-independence is not free.

The Common Prior Assumption, and Its Critics

Everything above rests on one assumption that is easy to skate past: all players use the same joint distribution p over type profiles. Harsanyi states it as an epistemic hypothesis, not a mathematical convenience:

I shall assume also that the two players will try to estimate these H probabilities on the basis of their information about the nature of the relevant social forces, using only information available to both of them. In fact, they will try to estimate these probabilities as an outside observer would do, one restricted to information common to both players. … Moreover, I shall assume that, unless he has information to the contrary, each player will act on the assumption that the other player will estimate these probabilities much in the same way as he does. This is often called the common priors assumption.

The stronger philosophical version, usually called the Harsanyi Doctrine, appears in his 1977 book and is glossed by the Stanford Encyclopedia as “the idea … that any differences in subjective probability assignments by Bayesian players should result exclusively from different information” (SEP, Game Theory). Two rational agents who have seen the same evidence must agree; disagreement is always traceable to divergent data, never to divergent priors.

This is not a small assumption, and it has consequences you can test.

Aumann’s agreement theorem. If two agents share a prior, have partitional information, and it is common knowledge that agent 1 assigns probability η₁ to some event and agent 2 assigns η₂ to the same event, then η₁ = η₂ (Levin, Knowledge and Equilibrium, Proposition 2, citing Aumann 1976). Rational agents with a common prior cannot agree to disagree.

No-trade theorems. The agreement theorem propagates into markets. Levin’s statement of the intuition: “for some agent 1 to make an even money bet that a coin will come up Heads, he must believe that Pr(Heads) > 1/2. For some agent 2 to take the other side of this bet, he must believe that Pr(Heads) < 1/2. Aumann’s theorem says the bet cannot happen since these opposing beliefs would then be common knowledge.” Purely speculative trade between common-prior Bayesians is impossible. Since speculative trade demonstrably occurs, something in the package is false.

The equivalence. Feinberg (2000) showed the connection is exact: “the common prior assumption is equivalent to the no-trade theorem in the sense that if it fails, agents can find some purely speculative bet that they would all want to take.” So the common prior is not a modelling detail you can weaken quietly — it is precisely the assumption that rules out speculation.

Gul’s objection. Levin records the sharpest conceptual criticism: correlated equilibrium is characterised epistemically by assuming players’ beliefs derive from a common prior over an abstract state space, but “here the information structure is just there. Gul (1998) argues that this leads to a conceptual problem — if the information structure is ‘just there,’ it’s hard to know what to make of the common prior assumption.” A common prior over a state space that no one ever occupied, at a time before anyone existed, is doing real work in the theorem while having no operational meaning.

flowchart TB
    CPA["Common prior assumption<br/>everyone shares p"]
    AG["Aumann 1976:<br/>cannot agree to disagree"]
    NT["No-trade theorems<br/>no purely speculative bets"]
    FB["Feinberg 2000:<br/>CPA is EQUIVALENT to no-trade"]
    OBS["but speculative trade<br/>plainly happens"]
    R1["relax rationality<br/>noise traders, rules of thumb"]
    R2["relax common knowledge<br/>each thinks the other is naive"]
    R3["relax the CPA itself<br/>heterogeneous priors"]
    CPA --> AG --> NT
    NT --- FB
    OBS --> R1
    OBS --> R2
    OBS --> R3
    R3 -.->|"Morris 1994 characterises<br/>which trades survive"| NT
    style CPA fill:#ffe9cc
    style OBS fill:#ffecec

Figure 4 — the common prior and the three exits. The insight to take away: the assumption is load-bearing, and it fails an empirical test that is easy to run. Levin lists exactly the three exits shown, and each leads somewhere different: relaxing rationality gives behavioural finance, relaxing common knowledge gives models where “one or both may think her trading partner is non-rational,” and relaxing the prior gives the heterogeneous-priors literature. None of them is free, and a model that assumes a common prior in an application where speculation is the phenomenon of interest is assuming its conclusion.

For the practical implications in mechanism design specifically — the reason the “Wilson doctrine” pushes toward mechanisms that work without knowing the prior — see Mechanism Design and Incentive Compatibility. The relevant tension: a dominant-strategy mechanism like The Vickrey Auction needs no prior at all, while a Bayes–Nash mechanism like the revenue-optimal auction of Reserve Prices and Optimal Auctions needs the prior to be right.

Application 1 — Private-Value Auctions as Bayesian Games

A sealed-bid auction is the textbook Bayesian game and the reason this note is a prerequisite for First-Price and Second-Price Auctions and Revenue Equivalence. Levin’s setup: “each player knows his own value for the item (i.e. bidder i knows v_i), but does not know the valuation of his rival. Instead, we assume that each bidder had a prior belief that his rival’s valuation is a draw from a uniform distribution on [0,1], and that these prior beliefs are common knowledge.”

Mapping to the definition: Θ_i = [0,1] is the type space, the type is the valuation, p is the product of two uniforms (independent private values), and the action is a bid. Payoffs are private-value: your utility depends on your own v_i and on everyone’s bids, but not on the others’ valuations.

The continuous answer. For the first-price auction with two bidders and uniform values, the unique Bayes–Nash equilibrium is f_i(v_i) = v_i / 2 — bid half your value. Levin’s verification is worth reproducing because the structure recurs: assume the rival bids f_2(v_2) = v_2/2, so Pr[f_2(v_2) < b_1] = Pr[v_2 < 2b_1] = 2b_1 for b_1 ∈ (0, 1/2]. Then the expected payoff is (v_1 − b_1)·2b_1, whose first-order condition is 0 = 2v_1 − 4b_1, giving b_1 = v_1/2. Deriving it rather than verifying it means solving a differential equation obtained by inverting the (assumed strictly increasing, differentiable) bid function.

The discrete answer, computed exactly. The solver handles a discretised version without any calculus, and the discretisation exposes structure the continuous solution hides. Two bidders, values i.i.d. uniform on {1, 2, 3}, bids from {0, 1, 2, 3}, ties broken by a fair coin:

--- first-price, 4096 type-contingent profiles, 3 pure BNE
   symmetric BNE bid function b(1),b(2),b(3) = (0, 1, 1)   -> exact expected revenue 8/9
   symmetric BNE bid function b(1),b(2),b(3) = (1, 1, 1)   -> exact expected revenue 1
   symmetric BNE bid function b(1),b(2),b(3) = (1, 1, 2)   -> exact expected revenue 14/9
   truthful bidding is a BNE: False

--- second-price, 4096 type-contingent profiles, 61 pure BNE
   symmetric BNE bid function b(1),b(2),b(3) = (1, 2, 3)   -> exact expected revenue 14/9
   truthful bidding is a BNE: True

--- dominance check, second-price
   profitable deviations from truth-telling against any single opponent bid: 0
   of 61 pure BNE, 60 have at least one non-truthful type

Four measured findings, each of which is a thing to know before writing an auction note:

  1. Bid shading is forced, not chosen. In none of the three first-price equilibria does any type bid its value. b(3) = 2 at most. The continuous model’s v/2 is the same phenomenon under a finer grid.
  2. Truthful bidding is not an equilibrium of the first-price auction at all — the solver says False, and that is a statement about every type-contingent profile, not a heuristic.
  3. Truth-telling in the second-price auction is dominant, not merely equilibrium. Zero profitable deviations across all 48 combinations of (own value, own bid, opponent bid). This is the precise sense in which The Vickrey Auction is strategyproof, and it is why it needs no prior.
  4. The second-price auction has 61 pure Bayes–Nash equilibria and 60 of them are not truthful. This is the single most under-advertised fact about second-price auctions. Dominance does not imply uniqueness. The other 60 survive because a bid only matters when it is pivotal, and a bidder who will lose anyway can bid anything. Every one of them uses a weakly dominated strategy, which is exactly the terrain where Sequential Equilibrium’s relationship to trembling-hand perfection lives.
  5. A discrete echo of revenue equivalence. The first-price equilibrium (1,1,2) and the truthful second-price equilibrium both yield expected revenue exactly 14/9. That is not a coincidence and not a proof — it is the discrete shadow of the theorem developed in Revenue Equivalence, whose hypotheses (symmetric, independent, risk-neutral, same allocation rule, same payoff to the lowest type) are all satisfied by that particular pair.

Uncertain

Verify: whether the three first-price equilibria found above are all the equilibria, including mixed ones. Reason: the solver enumerates pure type-contingent strategies only. A discretised first-price auction generically has mixed equilibria as well, because a bidder indifferent between two adjacent bids can randomise, and this is exactly how the discrete model approximates a continuous bid function. To resolve: implement support enumeration over the 4³ = 64 pure type-contingent strategies per player in the induced 64×64 normal-form game — the same technique as Support Enumeration, which is tractable at this size — and compare.

Application 2 — Signalling

The other great application, and the one that makes types do something they cannot do in an auction: get revealed by choice.

The structure. A signalling game is a two-stage Bayesian game with a specific shape.

sequenceDiagram
    participant N as Nature
    participant S as Sender
    participant R as Receiver
    N->>S: draws type θ from prior p, tells S only
    Note over S: S knows θ; R does not
    S->>R: chooses a message m (costly, and the cost depends on θ)
    Note over R: R sees m but not θ;<br/>updates belief mu(θ | m) by Bayes where possible
    R->>S: chooses an action a
    Note over S,R: payoffs u_S(m, a, θ), u_R(m, a, θ)

Figure 5 — the sender/receiver structure. The insight to take away: the message is chosen by the informed party, so it carries information only if types find it differentially costly. If the cost of sending m were the same for every type, every type would send whichever m the receiver rewards, and the message would be uninformative. The technical name for the required cost structure is single crossing; it is the entire content of “the signal works.”

Two equilibrium shapes are possible, and the names are used everywhere:

  • Separating — different types send different messages, so the receiver learns the type exactly. Beliefs on the equilibrium path are degenerate.
  • Pooling — all types send the same message, so the receiver learns nothing and holds the prior. Every other message is off the equilibrium path, and the equilibrium is held up by what the receiver would believe on seeing one.

That last clause is where signalling games and Sequential Equilibrium meet: a pooling equilibrium is a claim about off-path beliefs, and off-path beliefs are exactly what Bayes’ rule cannot supply.

Spence’s Education Model, Exactly

Michael Spence’s 1973 job-market model is the founding example and won a share of the 2001 Nobel Prize, awarded jointly with George Akerlof and Joseph Stiglitz “for their analyses of markets with asymmetric information” (Nobel press release, 10 October 2001). The numbers below are Spence’s own, taken from his Nobel lecture of 8 December 2001.

The setup. Two groups of workers, with productivity 1 and 2 respectively; a fraction α are in the low group. Education E is visible, and — this is the assumption that makes the point sharp — does not affect productivity at all. Spence is emphatic that this is a modelling simplification and not a claim: “I do this purely to keep it simple and not to suggest that human capital, including that acquired through education, is somehow not relevant.” The costs differ: “the cost of E years of education for group 1 is E, and the cost for group 2 individuals is E/2.” Higher-productivity workers find education cheaper. That is the single crossing condition.

Why the equilibrium is a fixed point, not an optimisation. Spence’s own description of the circularity is the best short statement of what a signalling equilibrium is:

employers’ beliefs/expectations determine the wage offers that are made at various levels of education. These wage offers in turn determine the returns to individuals from investments in education, and finally, those returns determine the investment decisions that individuals make with respect to education, and hence the actual relationship between productivity and education that is observed by employers in the marketplace. This is a complete circle. Therefore it is probably more accurate to say that in equilibrium, the employers’ beliefs are self-confirming. … It is the self-confirming nature of the beliefs that gives rise to the potential presence of multiple equilibria in the market.

The separating equilibrium. Suppose group 1 sets E = 0, group 2 sets E = E*, and employers believe productivity is 1 below E* and 2 at or above it. Group 1 stays put provided 2 − E* < 1; group 2 climbs provided 2 − E*/2 > 1. Therefore any E* with 1 < E* < 2 is an equilibrium.

Verified on a quarter-year grid with α = 1/2, exact:

population: 1/2 group 1 (productivity 1), 1/2 group 2 (productivity 2)
pooling wage if nobody signals: 3/2 = 2 - alpha

SEPARATING equilibria (type 1 -> 0, type 2 -> E*), pessimistic off-path belief 0:
   E* = 1:     group 1 gets 1, group 2 gets 3/2
   E* = 5/4:   group 1 gets 1, group 2 gets 11/8
   E* = 3/2:   group 1 gets 1, group 2 gets 5/4
   E* = 7/4:   group 1 gets 1, group 2 gets 9/8
   E* = 2:     group 1 gets 1, group 2 gets 1

POOLING equilibria (both types choose the same E), off-path belief 0:
   both at E = 0:   wage 3/2, group 1 nets 3/2, group 2 nets 3/2
   both at E = 1/4: wage 3/2, group 1 nets 5/4, group 2 nets 11/8
   both at E = 1/2: wage 3/2, group 1 nets 1,   group 2 nets 5/4

Same pooling check with an OPTIMISTIC off-path belief (Pr[type 2] = 1):
   pooling levels that survive: none

The endpoints E* = 1 and E* = 2 appear because the grid check uses weak inequalities, so the marginal type is exactly indifferent; Spence’s strict inequalities give the open interval, and the interior points 5/4, 3/2, 7/4 are unambiguous equilibria.

Three things fall out that are worth stating plainly.

The signal is pure waste, and more of it is worse. Group 2’s payoff falls monotonically across the separating equilibria — 3/2, 11/8, 5/4, 9/8, 1 — while group 1’s is pinned at 1 throughout. Spence’s assessment: “There is a continuum of equilibria, in each of which there is more investment in the signal than there would be in a world of full information. Because investment in the signal dissipates resources without adding to productivity, the equilibria are orderable by the Pareto criterion, that is, as you move from one equilibrium to another, everyone is either worse off or no better off.” Nothing in the equilibrium concept picks out the least wasteful one.

Adverse selection is the thing signalling is a response to. Without a signal, everyone is paid the average productivity 2 − α. Spence: “If the higher productivity group through dissatisfaction or for any other reason, exits this labor market, the average productivity and the wage drop to 1. This phenomenon when it occurs is sometimes called the adverse selection problem … It is structurally the same problem that Akerlof described in his famous paper on used cars (lemons).” Note the citation detail: Spence’s lecture prints the Akerlof reference as Quarterly Journal of Economics, 1971; the paper is in fact QJE 84(3), 1970, pp. 488–500. Minor, but the note flags it because bibliographic drift propagates.

The whole equilibrium set is a function of unobservable beliefs. Change the off-path belief from pessimistic (Pr[high type] = 0 at unseen education levels) to optimistic (= 1) and every pooling equilibrium disappears — because if any unused education level would be rewarded with a wage of 2, the low-cost type deviates to it. That single line in the output is the reason the refinement literature exists, and it is the hand-off point to Sequential Equilibrium, where the question “which off-path beliefs are legitimate?” becomes the whole subject.

Uncertain

Verify: the exact statement and payoffs of Spence’s 1973 model as published. Reason: the primary paper — Spence, Job Market Signaling, Quarterly Journal of Economics 87(3), 1973, pp. 355–374 — was not retrieved here. jstor.org landing pages return HTTP 200 with a 3 kB chrome page and no article, and four guessed course-page mirrors returned 404 or a small HTML shell. As with Harsanyi above, the failure is retrieval rather than extraction: nothing was downloaded, so there was no scan to render and read as images. Everything above comes from Spence’s own Nobel lecture, which restates the model with the productivity-1/productivity-2 and cost-E/cost-E/2 parameterisation used here. The lecture is a primary source for the model as Spence describes it in 2001, not for the 1973 text. To resolve: obtain QJE 87(3) and compare the parameterisation.

Failure Modes and Gotchas

Confusing “incomplete” with “imperfect.” The most common vocabulary error in the whole area, and Harsanyi anticipated it by writing a section to prevent it. Incomplete = you do not know the rules. Imperfect = you do not know the history. After the transformation, a Bayesian game is complete and imperfect. If a paper says “a game of incomplete information” and then draws a tree with Nature at the root, it is describing the post-transformation object with the pre-transformation word. Everyone does this, including good textbooks; just know which object is on the page.

Assuming independent types because the notation looks like it. The definition gives a joint prior p(θ₁, ..., θ_I), not a product. Independent private values is a special case chosen because it is tractable. Correlated types are where the winner’s curse comes from, and a solver that stores per-player marginals instead of the joint cannot represent them at all. The solver above stores the joint and derives marginals, which is why the correlated case needs no code change.

Forgetting that a type with prior probability zero has undefined beliefs. The definition insists p(θ_i) > 0 for every type in the space. Drop a type’s probability to zero “to disable it” and the interim condition for that type divides by zero. Delete the type instead.

Treating Bayes–Nash equilibrium as if it had sequential force. It does not. The entry example above has extra equilibria in which the normal incumbent fights, kept alive by the fact that the entrant stays out and the incumbent never moves. Bayes–Nash is Nash; it audits nothing off the path. In an extensive-form Bayesian game you almost always want at least Subgame Perfect Equilibrium and, once information sets stop supplying proper subgames, Sequential Equilibrium.

Reading a dominant strategy as a unique equilibrium. Truthful bidding is dominant in the second-price auction and there are still 61 pure Bayes–Nash equilibria, 60 of them untruthful. Strategyproofness is a statement about one player’s incentives holding everything else fixed; it says nothing about how many equilibria the game has. Any claim of the form “the mechanism will produce outcome X because truth-telling is dominant” needs the extra step of arguing why the other 60 will not occur.

Assuming a signalling equilibrium exists in a unique or sensible form. Spence’s model has a continuum of separating equilibria, Pareto-ranked, plus pooling equilibria, and which ones exist depends on beliefs at education levels no one chooses. Reporting “the separating equilibrium” without saying which E* and which off-path beliefs is reporting nothing.

Floating-point equilibrium checks. An interim payoff is a ratio of sums of products. Comparing two of them in double will, on realistic priors, report strict inequality where exact arithmetic reports equality — and indifference is precisely what mixed and boundary equilibria are made of. Use Fraction. It costs a constant factor and buys correctness. (For the same reason and the same reasoning applied to normal-form games, see the exact-arithmetic note in Mixed Strategies.)

Enumerating type-contingent strategies without noticing the exponent. The strategy space is ∏_i |A_i|^{|Θ_i|}. Three values and four bids per player gives 4096 profiles for two players — instant. Five values and six bids gives 6⁵ × 6⁵ ≈ 6·10⁷ — minutes. Ten of each is hopeless. Enumeration is a checking tool, not a solving tool; for anything larger the sequence form and the machinery in Imperfect Information and Information Sets is the route.

Alternatives and When to Choose Them

ApproachWhat it assumesWhere it is the right toolWhere it breaks
Bayes–Nash equilibriumCommon prior; simultaneous or one-shot structureAuctions, oligopoly with private costs, static screeningBlind off the path; multiple equilibria with no selection
Sequential EquilibriumCommon prior; extensive form; beliefs part of the solutionSignalling, reputation, any game with non-singleton information setsConsistency is fiddly; still leaves implausible equilibria
Perfect Bayesian equilibriumAs above with weaker consistencyApplied industrial organisation, most signalling papersSeveral inequivalent definitions circulate; weaker than sequential
Correlated EquilibriumCommon prior plus a mediator or public signalWhen you want a computationally easy, larger solution setSays nothing about private types or sequential rationality
Dominant-strategy mechanismsNo prior at allThe Vickrey Auction, The VCG Mechanism, anything that must be robustImpossibility results bind much harder — see Impossibility Results
Ex-post / robust mechanismsTruth is optimal whatever the others’ types turn out to beDeployments where the designer does not trust the priorOften nonexistent; a strictly smaller class than Bayes–Nash
Heterogeneous priorsPlayers may disagree at the rootModelling speculation, bubbles, disagreementLoses no-trade theorems; equilibrium concepts get murkier

The practical selection rule is short. If your mechanism has to work when you are wrong about the distribution, do not use a Bayes–Nash solution concept — the whole point of dominant strategies is that the prior drops out. If you are modelling behaviour rather than designing a rule, Bayes–Nash is usually right and usually not enough: check whether any of your equilibria are propped up by behaviour at unreached information sets, and if so, escalate to sequential. And if the phenomenon you care about is people betting against each other, the common prior is not a simplification you can make — Feinberg’s equivalence says you would be assuming the phenomenon away.

Production Notes

The transformation is the reason auction theory is computable at all. Every practical auction analysis — First-Price and Second-Price Auctions, Revenue Equivalence, Reserve Prices and Optimal Auctions, Ad Auctions and GSP — starts by writing “values are drawn i.i.d. from F, commonly known.” That sentence is the Harsanyi transformation, applied so routinely that nobody names it. The cost of the routine is that the common prior gets assumed without argument in settings (thin markets, one-off spectrum sales, novel ad formats) where nobody actually has it.

Machine-readable game files are a better citation than a scanned figure. While writing the sibling note on Sequential Equilibrium, the three figures from Selten’s 1975 paper turned out to be available as exact .efg files in Gambit’s catalogue under catalog/journals/ijgt/selten1975/, maintained with :cite:p: annotations pointing back to the source. Payoffs read from those files reproduce every quantitative claim in the Kreps–Wilson text that discusses them. If you need the numbers from a classic figure and the scan’s OCR is unreliable, check whether Gambit has already transcribed it — its catalogue also covers Myerson (1991), von Stengel (2022), Shoham & Leyton-Brown (2008), and several journal papers.

The reference solvers are not installable here, and that turns out not to matter. Verified 2026-08-28 on this machine: no pip, no numpy, no gambit executable, no nashpy. Both are readable as source and worth reading. But for games at the scale where enumeration works, fractions.Fraction in the standard library is a better oracle than a floating-point library, because it makes indifference detectable. The 61 second-price equilibria above are all found exactly, and several of them exist only because of exact ties that a double comparison would have resolved arbitrarily in one direction or the other.

The Fraction cost is real but tolerable. Enumerating 4096 profiles with interim checks over a 9-point prior takes well under a second here. The denominators stay small because the prior is 1/9 and the payoffs are integers; a prior with awkward denominators grows them, and the standard fix is to scale the prior to a common denominator once at construction and carry integers, which is what a production solver would do.

Where the algorithmic literature picks this up. The Nisan–Roughgarden–Tardos–Vazirani volume treats Bayesian games in §1.6 (“Nash Equilibrium without Full Information: Bayesian Games”) and then works almost entirely in the Bayes–Nash setting for mechanism design, including Bayes–Nash incentive compatibility for online and dynamic mechanisms (Algorithmic Game Theory, Cambridge 2007, fetched and read on build). Their framing of the design trade-off is the one to carry into Incentive Compatibility: dominant-strategy incentive compatibility is the strong notion you want and often cannot have; Bayes–Nash incentive compatibility is the weak notion you can usually get, and it buys tractability by spending the common prior.

See Also

  • Sequential Equilibrium — the sibling note written alongside this one: what happens when a Bayesian game is extensive-form and Bayes’ rule goes silent off the path. Every pooling equilibrium in this note is a claim about off-path beliefs, and that note is where such claims get adjudicated
  • Nash Equilibrium — the concept Bayes–Nash is, applied to the enlarged game with Nature as a player
  • Extensive-Form Games — trees, chance moves, and information sets; the representation the transformation targets
  • Imperfect Information and Information Sets — the modelling device that carries the private information after the transformation, and the computational consequences
  • Common Knowledge and Rationality Assumptions — the epistemic backdrop; the common prior assumption is a common-knowledge assumption in disguise, and the agreement theorem lives there
  • Subgame Perfect Equilibrium — the first refinement to reach for once a Bayesian game is drawn as a tree
  • Mixed Strategies — the indifference principle, and the same argument for exact rational arithmetic
  • First-Price and Second-Price Auctions — the canonical private-value application; the discrete equilibria computed here are its exact small-case shadow
  • Revenue Equivalence — the theorem whose hypotheses are all statements about the Bayesian structure set up here
  • Mechanism Design and Incentive Compatibility — design run backwards; the dominant-strategy versus Bayes–Nash split is exactly the question of whether you are willing to spend the prior
  • The Vickrey Auction — the mechanism whose whole appeal is that it needs no prior
  • The Winner’s Curse — what happens when types are correlated and values are not private
  • Stackelberg Games and Commitment — commitment under private information; the leader’s problem becomes a screening problem
  • Games and Strategic Systems in C MOC — the parent map; this note is prerequisite reading for stage P4 (auctions) and stage P7 (mechanism design)