---
name: project-pin-coverage-and-consensus
description: API-Football carries no Pinnacle line for ~6-8% of fixtures, costing the maker 4 of 10 in-window games on 2026-07-29; a multi-book consensus tracks Pinnacle to 0.52c median but degrades exactly where coverage thins
metadata:
  type: project
---

Measured 2026-07-29. **Tested, NOT wired — user chose to wait.**

**The coverage gap.** `mm_quoter` skips any fixture with no Pinnacle line. On
2026-07-29, 4 of 10 in-window fixtures were dropped for that reason alone (Sao
Paulo v Santos, Chapecoense v Vasco, Atletico-MG v Bragantino, Gimnasia L.P. v
River) — all four had healthy 3-leg Kalshi books and valid fixture ids. Verified
against the raw API: those fixtures list 7-11 bookmakers and Pinnacle is simply
not among them. Not rate limiting (68k/75k requests remaining), not our mapping.

**It is a genuine tail, not a timing lag.** Per-league Pinnacle coverage measured
on 1,413 pre-match fixtures is **92-100%**, and where present it is there from as
early as we observe (median first appearance T-24h for BSA/AR1/BR2/CN1/KO1).
Decisively, Internacional and Mirassol — same league, same day — had Pinnacle
while Sao Paulo and Chapecoense did not. So it is per-fixture.

**Consensus fallback test** (`research/consensus_fair_test.py`, 20 fixtures /
60 legs with Pinnacle + >=3 other books). Consensus = per-outcome MEDIAN of each
other book's devigged probability, renormalised. Median not mean, so one stale
book cannot drag the level.

| |consensus - Pinnacle| |
|---|---|
| median | **0.52c** |
| p75 / p90 | 0.96c / 1.37c |
| within 0.5c (cannot move a 1c-tick quote) | 48% |
| within 1.0c | 82% |
| beyond 2.0c (breaches FAIR_TOLERANCE_C) | 3% |

Against a staged margin of 2-6c that is small.

**THE CAVEAT THAT MATTERS.** This measures error where Pinnacle EXISTS. We would
apply the fallback where it does not, and the error looks worst exactly there:
Botafogo had the fewest books (9) and by far the largest error (2.66c / 3.21c);
Pittsburgh (10 books) and Louisville (11) were next worst. Error appears to rise
as coverage thins — i.e. precisely in the population we would rely on it for.

**If it is ever wired, do it this way:** maker ONLY (the betting strategy's edge
is defined as a deviation from Pinnacle specifically, so substituting a reference
changes what is measured); require >=8 books, not 3; TAG fixtures priced off
consensus so their fills and P&L can be analysed separately; keep
FAIR_TOLERANCE_C as the backstop.

**Bearing on the feed decision (API-Football expires 2026-08-07):** the relay is
both **stale** (updates every ~5.8h, see [[project-pin-line-staleness]]) and
**incomplete** (~6-8% of fixtures missing). A real-time Pinnacle feed fixes both;
the coverage gap is arguably the worse of the two, since a stale line still lets
you quote and a missing one does not.
