Pairs Trading in Prediction Markets
Prediction market contracts do not price in isolation. A candidate's nomination odds move with their primary polling. A team's tournament-winner price moves with its group-stage results. When two contracts are driven by the same underlying, the interesting trade is often not the level of either one, but the relationship between them. That is a pairs trade.
The market backdrop makes this worth studying now. Combined monthly volume across Kalshi, Polymarket, and Polymarket US reached $44.8 billion in June 2026, with the FIFA World Cup driving the surge, according to data tracked by The Block. (A note on methodology: Kalshi counts notional volume at each contract's $1 face value regardless of price paid, while Polymarket counts taker notional at the actual price paid, so the combined figure is best read as a guide to scale rather than a precise apples-to-apples sum.) More liquid, correlated books means more spreads worth watching.
What a pairs trade actually is
Pairs trading is a market-neutral strategy borrowed from equities. The classic formulation: identify two instruments whose prices share a long-run relationship, then take a long position in the underperformer and a short position in the overperformer when the relationship stretches, betting it reverts.
The academic literature is precise about why this works. The idea traces to the quantitative group led by Nunzio Tartaglia at Morgan Stanley in the 1980s, and the canonical study by Gatev, Goetzmann and Rouwenhorst tested it on decades of stock data. The mechanism is that the spread, a linear combination of the two prices, is stationary and mean-reverting, so short-term deviations from equilibrium are temporary by construction.
The important subtlety, well documented in the literature, is that correlation is not the right tool. Cointegration is preferred, because correlation does not apply cleanly to non-stationary, trending price series, which is what most instrument prices are. Two contracts can be highly correlated and still drift apart forever. Cointegration tests specifically whether a stable linear combination exists.
Where the pairs live in prediction markets
Prediction contracts have a structural feature equities lack: each one is bounded between about $0.01 and $0.99 and settles at $1 or $0, so its price reads directly as an implied probability. That makes some relationships mechanical rather than merely statistical. Candidates for a spread:
- The same event listed on two venues. Kalshi and Polymarket both price World Cup and election outcomes; their prices can diverge because they attract different flow and settle in different assets (USD versus USDC).
- Mutually exclusive outcomes in one market. In a multi-candidate race, the sum of all outcome prices should sit near 100% plus fees. When it drifts, the basket is the spread.
- Nested or conditional outcomes. 'Wins the tournament' cannot exceed 'reaches the final' for the same team. That is a hard inequality, not a soft correlation.
- Economically linked but distinct events. Two candidates competing for the same seat, or a rate-decision market versus an inflation-print market.
The nested cases are the cleanest, because the relationship is enforced by logic, not history. If 'reach the final' trades below 'win the tournament' for the same team, one side is simply mispriced, and there is no cointegration test to run.
Constructing the spread
For statistical pairs (not hard-inequality ones), the standard approach is the Engle-Granger two-step: regress one price on the other, then test whether the residuals are stationary using an ADF test. If the residuals are stationary, the spread is mean-reverting and tradeable. A minimal version in Python:
import numpy as np
from statsmodels.tsa.stattools import coint
from statsmodels.regression.linear_model import OLS
from statsmodels.tools import add_constant
# a, b: aligned price (implied-prob) history for two contracts
score, pvalue, _ = coint(a, b)
# hedge ratio from regression of a on b
beta = OLS(a, add_constant(b)).fit().params[1]
spread = a - beta * b
z = (spread - spread.mean()) / spread.std()
# enter when |z| is large, exit as z reverts toward 0The Gatev distance-method convention is to enter when the spread deviates by more than two historical standard deviations from its mean and exit when it converges. Treat that two-sigma threshold as a starting point to test, not a law.
Two prediction-market caveats. First, because prices are bounded probabilities, a spread near the 0 or 1 edge behaves differently than one near 50%. Second, the equilibrium relationship can break permanently when new information arrives, an injury, a poll, a court ruling, and that is not mean reversion, that is you being on the wrong side of a re-rating.
Sizing the spread
Size the two legs by the hedge ratio, not one-for-one, so the position is neutral to the common driver and exposed only to the spread. From there, cap the dollar risk of the whole spread, not each leg. Points that matter more here than in equities:
- Fees scale with uncertainty. Both major venues use probability-weighted fee structures where trading costs peak near the 50% mark and shrink as a contract's implied probability moves toward either extreme, so a spread built from two coin-flip contracts pays fees twice on the expensive part of the curve. Model fees into your entry threshold.
- Capital is not shared across venues. A cross-venue spread needs margin funded on both Kalshi and Polymarket separately, which caps your true position size and adds settlement-asset risk.
- Reversion can be slow. The spread may sit far from its mean for a long time before converging, so size for the drawdown you can hold through, not the profit you expect.
Managing it
A spread trade has three exits: convergence (take profit), a stop (the relationship broke), and time (the event resolves and forces settlement). The event-resolution deadline is unique to this asset class. A stock pair can revert next year; a market that settles Sunday cannot. Your holding horizon is capped by the contract calendar, which raises the bar for entry.
This is exactly the kind of always-on, rule-based logic that is painful to run by hand across two order books. Banger (bangertrades.com) is built for it: you write the spread and entry rule as a Python banger.Strategy, paper-trade it against the live order book with 'banger run strategy.py --paper', then run it live under a declarative risk envelope, per-trade cap, daily loss stop, max open positions, and a kill switch. Banger never custodies funds; you bring your own venue keys. Install with 'pip install bangertrades'. Paper-trading first matters most here, because a spread that looks stationary in history can be an illusion once fees and thin books are included.
The honest caveats
Studies that account for transaction costs and market impact find pairs-trading profits are real but far smaller than gross backtests suggest, and heterogeneous across how pairs are selected. In prediction markets the frictions are worse: fees are highest exactly where spreads are widest, books can be thin outside marquee events, and the reversion clock is hard-capped by settlement. Treat every cointegration result as a hypothesis to paper-trade, not a signal to size up.
Finally, venue access, available markets, and platform availability shift regularly. Confirm current access and any cross-venue restrictions directly on each platform before funding a strategy.
Sources
- Kalshi and Polymarket trading volumes dramatically increase since mid-2025 | Pew Research Center
- Kalshi and Polymarket's combined volume surges 75% to $45 billion in June amid World Cup fever | The Block
- Kalshi vs Polymarket 2026: fees, volume, and US access compared | MetaMask
- Polymarket vs Kalshi: Which Prediction Market Should You Use in 2026? | FOX Sports
- Prediction Market Fees in 2026: Kalshi vs Polymarket | Laika Labs
- 15.3 Pairs Trading | Portfolio Optimization
- Pre-selection in cointegration-based pairs trading | Statistical Methods & Applications
- Build a Pairs Trading Strategy in Python: A Step-by-Step Guide | Databento
- Optimal Entry and Exit with Signature in Statistical Arbitrage (Gatev et al. distance method)
- Bertram's Pairs Trading Strategy with Bounded Risk