BTTS Signals Don't Help: The Problem Is Market Vig, Not Bet Selection
Tested variance filtering, GK changes, and HFA regime on 14,387 BTTS bets (+9.93% CLV, -0.67% ROI). None improve ROI. The edge is real but BTTS market vig eats it. Fix is execution (league selection, Pinnacle/exchange), not better signals.
The Question
Lambda3 BTTS calibration shipped with 14,387 bets at +9.93% CLV but -0.67% closing-odds ROI. The CLV is genuine edge — can our signal stack (variance filter, GK changes, squad strength, context calibration) improve the ROI by removing stale bets?
What We Found
None of the signal filters improve BTTS ROI. The problem isn't stale lambdas — it's market vig.
| Filter Stack | N | ROI | CLV | Δ ROI |
|---|---|---|---|---|
| B: Require regression candidate | 15,415 | -6.34% | 10.13% | +0.12% |
| **Baseline (no filters)** | **17,761** | **-6.46%** | **10.15%** | **—** |
| A: Remove variance-opposing | 9,194 | -8.58% | 10.15% | -2.12% |
| C: Var confirms + regression | 8,067 | -8.63% | 10.11% | -2.17% |
The Nuance
Variance filtering is backwards for BTTS. The standard variance filter asks "is a team overperforming xG?" and fades them. For AH bets, overperforming teams score fewer goals when they regress — bad for your AH bet. But for BTTS, a team regressing from 2.5 to 1.5 goals/game still scores at least 1 — BTTS still hits. The variance filter removes bets that were fine.
GK change: Tiny sample — 94 bets with GK data out of 17,761. BTTS Yes + backup GK: +0.93% ROI but only 61 bets. Statistically meaningless.
HFA regime: No signal. Collapsed vs normal: -6.93% vs -6.56% ROI. Identical.
The bright spot: Entry-adj ROI is +3.77% across all BTTS bets. The CLV is real (+10.15%). The problem is purely the closing-odds → execution gap. BTTS markets have wide vig that eats the edge.
What This Means
The BTTS edge is a market microstructure problem, not a signal quality problem. The model correctly identifies value (+10% CLV) but can't realize it through wide BTTS spreads. Three paths to BTTS profit:
- League selection: Focus on low-vig leagues. Bundesliga 2 (+4.3% ROI after filter), Eredivisie (+1.0%), Turkish Super (-0.3%) are closest to profitable.
- Sharper execution: Pinnacle BTTS specifically, or Betfair exchange.
- Higher threshold: Raise edge requirement from 5% to 8-10%. Fewer bets, wider margin.
What's Next
BTTS betting remains active (lambda3 dual-grid is shipped). No signal filters will be applied — pure edge-based selection. Focus shifts to execution quality and league selection rather than model improvements.