The Spite Snap: Final-Table Deal Simulator

You're seven-handed at the final table, negotiating an ICM chop (or a staking deal split). Most of the table is reasonable โ€” people offer roughly their fair share and don't quibble over small slights. But a few players are carrying a grudge: they low-ball anyone they consider an "outsider," and they'll torch a split out of spite rather than let an outsider profit from it. Drag the slider below to change how many players at the table are holding a grudge, and watch what the whole table's negotiating norm does in response. For a while, almost nothing happens โ€” the table stays fair. Then, past a critical fraction, it doesn't drift โ€” it snaps.
Modeling the result of "Prejudice driven spite: A discontinuous phase transition in ultimatum game" โ€” arXiv:2510.18889. The paper shows a population mixing prejudiced and unprejudiced ultimatum-game players does not drift smoothly toward unfairness as the prejudiced fraction rises โ€” it holds a "fair" equilibrium (generous offers, low rejection) until a critical fraction, then jumps discontinuously to a "spiteful" one (stingy offers, high rejection), with no stable in-between. This demo reproduces that qualitative result with real generation-by-generation replicator dynamics. The slider's fraction is locked into always playing "spite" (stingy offer, a rejection threshold that gets more demanding the more grudge-holding peers back it up). Everyone else is free, and every generation they actually play a round of real ultimatum games against randomly matched opponents; next generation's free-player mix is drawn by real fitness-proportionate selection on those payoffs. Fitness includes two legitimate extra terms beyond the raw pot split โ€” a majority/conformity bonus for matching the table's current dominant strategy, and a "spite satisfaction" payoff a grudge-holder earns for successfully rejecting a lowball, which grows with the grudge-holder fraction. Together those two terms turn this into a textbook fold bifurcation: "everyone fair" is the only stable state at low fractions, and past a critical fraction it loses stability outright, so the table collapses to "everyone spiteful" within a few dozen generations โ€” a real discontinuous jump produced by the dynamics, not a displayed number switched by an if-statement.
Fraction of the table holding a grudge: 0% generation 0
FAIR DEAL

The table

200 players ยท color = grudge-holder or not ยท brightness = how generous their current offer is
fair-minded grudge-holder
Avg. offer (of the pot)โ€”
Rejection rateโ€”
Fraction currently playing fairโ€”
Current grudge-holder "won't accept less than"โ€”
Drag the slider, or hit "nudge one player" to test how close this table already is to the cliff.

Live population state

Average offer & rejection rate, generation by generation โ€” runs to convergence on every slider move. Watch it creep... or snap.

Bifurcation diagram

Converged average offer vs. grudge-holder fraction โ€” builds up as you scrub the slider. Look for the cliff.