Sports Dashboard

MI Bivariate Poisson + Dixon-Coles + Elo

← Back to Blog
|Research|REJECTED

Same-Match Stacking: The Risk That Wasn't

Analyzed within-match outcome correlation across 30K matches. Same-match bets are ANTI-correlated (-0.153) — they hedge, not concentrate. 56% of pairs split (one wins, one loses). All 3 capping policies worsen ROI. The 40-60u match swings in live trading are a stake-sizing artifact, not structural correlation risk.

Matches
29,750
137K bets
Correlation
-0.153
anti-correlated
Split %
56%
one wins, one loses
Bootstrap p
0.492
not significant

Same-Match Stacking: The Risk That Wasn't

When a single match produces 2-3 losing bets, it feels like correlated exposure — one bad result wipes out 40-60 units. From 55 live bets, we saw Sheffield Wednesday vs Ipswich produce both a +28u Under win and a -20u AH loss on the same match. Portsmouth vs Derby produced three wins totaling +48u. Are we over-concentrated?

The Question

Should we cap bets per match? Keep only the highest-edge bet? Limit to one per market type? The fear: when a match goes wrong, the correlation between bets means we lose everything at once.

What We Found

Same-match bets are anti-correlated. Win/loss correlation = -0.153. More than half (56%) of same-match bet pairs produce split outcomes — one wins, one loses.

This makes intuitive sense when you look at the market pairs:

PairWin CorrelationSplit %
AH+OU25+0.00849.6%
1X2+AH+0.02947.4%
1X2+OU25-0.01249.0%
AH+AH-1.000100%
OU25+OU25-1.000100%

Same-type pairs (two AH bets or two OU25 bets on the same match) are perfectly anti-correlated: they're opposite sides of the same line. One is Over, one is Under. One is Home AH, one is Away AH. They literally cancel out.

Cross-market pairs (AH + OU25) show near-zero correlation. A team covering the Asian handicap doesn't predict whether the total goes over or under. These are approximately independent bets.

The overall stacking we observed in live paper trading — multiple bets on the same match all losing — is a small-sample artifact, not a structural pattern.

The Policies

We simulated four approaches on 50K out-of-sample bets:

PolicyNROISharpeMax DDMax Match Loss
Status quo49,917**-5.6%**-0.4382,7874.0
Cap-1-best11,352-7.2%-0.2558261.0
Cap-1-per-market27,876-6.6%-0.3181,8523.0
Cap-2-diversified22,674-7.0%-0.3061,6012.0

Every capping policy makes ROI worse. Cap-1-best produces the "best" Sharpe (-0.255 vs -0.438) but that's because it takes 4.4x fewer bets — less exposure to a market that's currently net-negative across all markets blended. The paired bootstrap p-value is 0.49 — not even close to significant.

The Nuance

Cap-1-best consistently improves Sharpe across all walk-forward periods (train, val, test). This isn't because it's a better signal — it's because it reduces exposure. Taking 1 bet per match instead of 4.6 means less total loss in a system that's currently CLV-positive but ROI-negative.

This is a position-sizing observation, not a signal discovery. If the model were profitable (positive ROI), capping would *hurt* — you'd be leaving profit on the table. The capping "improvement" is entirely an artifact of ROI being negative.

The max single-match loss in the backtest is 4 units (4 bets at 1u each). The 40-60u swings in live trading come from 20u stakes, not from stacking. That's a bankroll/sizing decision, not a stacking policy.

What This Means

No production change. Keep all bets. The within-match anti-correlation is actually beneficial — when one bet on a match loses, another often wins, providing natural hedging.

If we want to reduce per-match exposure for bankroll safety, the answer is stake sizing (reduce per-bet stake when multiple bets exist on the same match), not bet elimination. But this is a risk preference, not an edge improvement.

What's Next

Match stacking is closed as a research thread. The bigger question remains the CLV→ROI gap. These two research projects eliminated "thin edges" and "correlated stacking" as explanations, confirming that the gap is driven by model calibration and market structure — which is where the solver tuning and market routing work is focused.

REJECTEDSignal: match-stacking-cap|2026-03-26