Parimutuel markets

A parimutuel (French pari mutuel, "mutual betting") is pool betting. All wagers on a set of mutually exclusive, exhaustive outcomes go into one pool; the operator removes a fixed takeout $\tau$ and distributes the remainder pro rata to the backers of the winning outcome. No price is quoted by anyone; the odds are read off the pool, and they are not fixed until betting closes. The operator carries no outcome risk: the bettors collectively fund every payout. Invented by Pierre Oller in the 1860s and mechanised by the totalisator, it remains the settlement system for horse and greyhound racing worldwide.

The pool and the payout formula

Let there be $n$ outcomes. Write $W_i$ for the total staked on outcome $i$ and $W = \sum_{i} W_i$ for the whole pool. With takeout $\tau \in [0,1)$, the net pool $(1-\tau)\,W$ is shared among the winners. A bettor who staked $w$ on the winning outcome $j$ receives

$\text{payout} = w \cdot \dfrac{(1-\tau)\,W}{W_j}.$

The factor $(1-\tau)\,W / W_i$ is the implied decimal odds on outcome $i$, the payout per unit staked. Because each winner's share is proportional to their stake and the pool is closed, the house can never pay out more than it took in: settlement is self-funding by construction. The takeout is the operator's only revenue and the bettors' aggregate edge against the pool.

In code: ParimutuelPool in mechanisms/parimutuel.py exposes bet(), pool_on(), decimal_odds(), implied_probabilities(), and settle(), which returns the per-bettor payouts above. (When no ticket backs the winner it refunds the net pool pro rata across all stakes.)

A homage: Julius's totalisator

The few lines of arithmetic above, sum the stakes on each runner, sum the whole pool, divide, were once a machine. The Australian engineer George Julius patented an automatic totalisator in 1909 and installed the first one at Ellerslie racecourse in Auckland in 1913; his company, Automatic Totalisators Limited (1917), then supplied them to racetracks worldwide for half a century. A Julius tote was a room-sized mechanical computer of shafts, cables, and epicyclic adders that accumulated bets from hundreds of selling windows at once and displayed the live pool totals and odds in real time, continuously recomputing the same $p_i = s_i / \sum_j s_j$ this module evaluates in a line of code. Brian Conlon makes the case that it was the world's first large-scale, multi-user, real-time computing system, predating electronic computers by decades: the parimutuel was a working analog computer before it was an equation. See Conlon's totalisator history and his account in the Rutherford Journal, and where it lands Australia in the World Cup of prediction markets.

Endogenous odds and implied probabilities

The defining feature is that odds are endogenous. They are not offered to a bettor at bet time and locked in; they are determined by the final distribution of money across outcomes, and so move as later money arrives. A bet placed early on what becomes a heavily backed outcome ends up paying short odds. This is the opposite of fixed-odds bookmaking, where the house quotes a price, takes the other side, and bears the risk.

The pool fractions are the market's implied probabilities:

$p_i = \dfrac{W_i}{W}.$

Read this way a parimutuel is a simple information-aggregation mechanism; the crowd's money is the probability estimate. Racetrack favourites turn out to be remarkably well calibrated, which is why these markets are treated as a laboratory for the wisdom of crowds and a conceptual bridge from gambling to prediction markets. Because the operator never quotes or holds a position, there is no inventory to hedge and no analogue of the pm-AMM's loss-versus-rebalancing; the bettors price each other.

The favourite–longshot bias

The most robust empirical regularity in these markets is the favourite–longshot bias: bettors systematically overbet longshots (low-probability outcomes) and underbet favourites. The implied probabilities on longshots run above their realised frequencies, so the expected return on a longshot is more negative than on a favourite, rather than equalised across all horses as calibrated odds (implied probabilities matching realised frequencies) would give.

The anomaly is old and well documented. Thaler & Ziemba (1988) synthesise it in the JEP "Anomalies" series; Snowberg & Wolfers (2010), on a large dataset, build a test that distinguishes risk-loving preferences from misperception of probabilities and find the evidence favours misperception (probability weighting). The bias is a reminder that the pool fractions reflect how bettors weight and wager, a behavioural aggregate, not the realised outcome frequencies.

Pennock's dynamic parimutuel market

A static pool fixes nothing until close, so it gives no running price and no way to take a profit before settlement. Pennock's dynamic parimutuel market (DPM, ACM EC'04) keeps the self-funding, no-operator-risk property of a pool but adds continuous price discovery, hybridising the pool with order-book-style pricing. Traders buy shares of outcomes; an outcome's instantaneous price is its share of the money in the pool,

$p_i = \dfrac{s_i}{\sum_k s_k},$

and shares are priced by a cost function so the price rises as an outcome is bought. An early buyer at a low price therefore profits when later buying lifts the price, a live mark-to-market that a static pool cannot offer. On resolution the whole money pool is divided among holders of winning shares pro rata. The DPM powered the Yahoo! Buzz market and is a direct precursor to Hanson's market scoring rules and the LMSR.

In code: DynamicParimutuelMarket in mechanisms/parimutuel.py exposes prices(), buy(), and settle(); the teaching variant uses the instantaneous share-ratio price above with a linear cost approximation.

Watch the pool find the odds

Bets stream onto three runners, drawn from a hidden true distribution. The pool fractions are the implied probabilities and the decimal odds re-flow with every bet; early noise settles as the money piles up.

Try it: set the stakes

Stakes on three outcomes set the pool fractions (implied probabilities) and the decimal odds, net of a takeout.

Code: mechanisms/parimutuel.py · Demo: examples/sim_parimutuel.py · Related: pm-AMM, LMSR · Research: parimutuel-and-scoring-rules.md