---
name: Both-sides-fire dedupe rule
description: When HOME and AWAY both fire CLV on the same match, keep only the higher-CLV side
type: feedback
---

When both HOME and AWAY signals fire on the same soccer match in the live CLV pipeline, **keep only the side with the higher CLV** — do not bet both.

**Why:** Both sides firing arithmetically means Kalshi is overpricing the draw — it's a single synthetic "NO DRAW" call expressed redundantly as two bets. The smaller CLV is noise on the same underlying mispricing, you pay the bid-ask spread twice, and "both fire" cases correlate with Pinnacle disagreeing about the draw shape (which may itself be a stale/wrong signal). Concentrating on the higher-CLV side captures the strongest expression of the call. Decided 2026-05-23 after audit found zero resolved both-fire fixtures in 230-bet history, so this is a forward-looking rule on theory not data.

**How to apply:**
- Implemented in `daily_signals.py` (B365 path) and `live_monitor.py` (Kalshi+B365 OR path) on 2026-05-23
- In `live_monitor.py`, comparison uses `max(kalshi_CLV, b365_CLV)` per side since either book can trigger
- Dedupe happens BEFORE the NO HOME / NO AWAY synthetic-position logic — so synthetics only build off the surviving YES side
- Logs a `[DEDUPE]` line when it fires so you can audit
- If you ever see this rule cause repeated wrong picks, the alternative was "skip both entirely" — that's the next fallback to try
