---
name: South America anomaly REFUTED on 11,746 games — Pinnacle is calibrated there; our 73-fixture "finding" was noise
description: 2026-07-25. A 73-fixture sample suggested Pinnacle under-prices SA homes (48.2->60.3) and over-prices draws (27.4->16.4). Tested on 11,746 Brazil+Argentina games with Pinnacle CLOSING odds: draws 28.6->28.7 (z+0.20, perfect), homes 44.6->45.6 (+0.97pp). Both trade ideas dead. Byproduct worth keeping: the 20-25% price bucket runs ~5% below implied, and that IS where xlow bets. Run research/sa_history_calibration.py.
metadata:
  type: project
---

**RESOLVED AND REFUTED.** Keep this note as a worked example of a small-sample
mirage — the pattern was sign-consistent across 5/5 leagues, survived dropping the
motivating league, and was still entirely noise.

## The finding

Pooling SA leagues (BSA, BR2, AR1, CL1, CO1, PE1) because no single one has the
sample, over every fixture with Pinnacle odds and a result:

| region | n | homes | draws | aways |
|---|---|---|---|---|
| **S.America** | 73 | 48.2 → **60.3** (z+2.06) | 27.4 → **16.4** (z−2.10) | 24.4 → 23.3 (z−0.21) |
| Europe | 851 | 43.8 → 43.6 (−0.10) | 24.9 → 26.0 (+0.72) | 31.3 → 30.4 (−0.57) |
| N.America | 245 | 45.5 → 44.1 (−0.44) | 24.4 → 23.7 (−0.28) | 30.1 → 32.2 (+0.74) |
| Asia | 50 | 41.7 → 42.0 (+0.05) | 26.1 → 34.0 (+1.28) | 32.3 → 24.0 (−1.25) |

Only SA deviates. Two controls make this more than a scan:

- **Drops the motivating league and gets STRONGER.** BSA raised the question and is
  44% of the sample; SA-ex-BSA (n=41) still shows H z+1.87 / D z−1.55, and BSA
  alone is the *weakest* member (H z+0.99). So this is not a BSA artifact.
- **Sign-consistent across leagues.** home z>0 in **5/5** SA leagues, draw z<0 in
  4/5; sign test p=0.062. This is the exact criterion
  [[project_pin_calibration_verified]] laid down for telling structure from noise
  ("random signs at small n = noise; real bias is consistent across comparable
  leagues"). SA meets it; nothing else does.

## Why it does NOT explain our SA losses

**25 of our 28 SA forward bets are AWAY — and away is the one side Pinnacle prices
correctly in SA (z−0.21).** The significant error is in the home/draw split, which
xlow essentially never touches (3 home bets, draws closed long ago).

So the SA record (n=28, ROI −35.3%) is *not* explained by this. That record is
z=−0.46 on win count — ordinary variance, same verdict as every other
league-level slice.

## The twist worth remembering

If the home under-pricing is real, SA homes are an **opportunity, not a hazard**:
pin_fair understates the true home probability by ~12pp there, so measured CLV on
an SA home bet *understates* the real edge.

The one genuine headwind: away implied 24.4% vs actual 23.3% is a ~4.5% relative
overstatement, and our band is 5-12% CLV — if that held up it would eat the bottom
of the band on SA aways. But z=−0.21 means it is nowhere near significant. Watch it;
don't act on it.

## THE RESOLUTION (11,746 games, football-data.co.uk Pinnacle closing odds)

`research/sa_history_calibration.py` pulls Brazil + Argentina (plus Mexico/USA as
controls) from football-data.co.uk's `/new/` archive, which carries **Pinnacle
closing odds** (PSCH/PSCD/PSCA) — the same anchor our pipeline uses.

| | our 73 fixtures | **11,746 games** |
|---|---|---|
| homes | 48.2 → **60.3** | 44.6 → **45.6** (+0.97pp) |
| draws | 27.4 → **16.4** | 28.6 → **28.7** (z+0.20) |

**The draw anomaly does not exist.** Pinnacle is calibrated on SA draws to within
0.1pp across 11.7k games, and the season-by-season table is stable — no season
comes close to 16%. Our 16.4% was a 73-game fluke, exactly as the ~26-28%
historical base rate predicted.

Both trade ideas are therefore dead:
- **fade the draw (buy home+away): −0.1% ROI** before vig; Pinnacle's overround is
  3.3%, so deeply negative in practice.
- **buy every home: +2.2%** at fair value — less than the 3.3% overround, so also
  negative once you actually pay a price.

The residual home tilt (+0.97pp, z+2.10) is real but tiny, and the Mexico/USA
control shows the same direction (+0.6pp) — it is a mild general home bias, not
anything South American.

## THE BYPRODUCT THAT MATTERS MORE

Bucketing all 67,398 outcome observations by implied probability:

| implied | n | actual vs implied | z |
|---|---|---|---|
| 0.15–0.20 | 4,837 | −2.2% | −0.71 |
| **0.20–0.25** | **9,350** | **−7.1%** | **−3.72** |
| 0.25–0.30 | 17,167 | −0.2% | −0.16 |
| 0.40–0.55 | 11,716 | +2.7% | +2.73 |

**xlow's average bet is at 23.7% implied — dead centre of the one bucket that
underperforms.** Part is a devig artifact: proportional devig (what we use)
overstates longshots, and switching to power devig cuts the bucket from −7.1%
(z−3.72) to −4.8% (z−2.55). But a residual survives.

If ~5% relative overstatement is real, it eats the bottom half of the [5%,12%) CLV
band and would explain a forward test sitting near zero. **Caveat before acting:**
it is one isolated bucket (neighbours are clean), borderline after
multiple-comparison correction, and measured on Brazil/Argentina/Mexico/USA — NOT
on the European leagues that were 78% of the backtest. Re-run over
football-data's `mmz4281` European archive before believing it.

## Do not act on this yet

n=73 detects only ~16pp errors. The scan was 4 regions × 3 outcomes = 12 tests, so
a lone |z|≈2.1 would not survive multiple-comparison correction on its own — the
BSA control and the sign test are what give it weight, not the z. The standing bar
in [[project_pin_calibration_verified]] is |z|>2 **with n>=100**; SA is at n=73.
Re-run when SA passes ~130 fixtures (roughly a full season).

Also note this cuts against the BSA real-money exclusion rationale in
[[project_pin_fair_execution_floor]]: BSA is the *mildest* SA league here.

## Action taken 2026-07-25

User: *"stop trading SA leagues until we have more data. Keep it in the forward
test though."* All six (BSA, BR2, AR1, CL1, CO1, PE1) added to
`daily_signals.AUTO_TRADE_EXCLUDE_LEAGUES` — real-money only. Signals still fire,
still log to pending_bets, still count unfiltered in the frozen forward test, so
the data keeps accruing and the test stays clean. Same category as the
[[project_pin_fair_execution_floor]] cutoff: **a risk-comfort pause, not
evidence-backed culling** — the SA bet record is z=−0.47 and the away hint is
z=−1.07, both noise, and [[project_league_filter_study]] already showed culling on
ROI is fitting noise.

Un-exclude when SA reaches ~130 fixtures and the calibration test still clears the
away side. Drop SA aways for real only if their pooled z passes −2.

Re-run: `python research\region_calibration_test.py`
