V3+AH Portfolio — Live Guide
17 strategies running in paper-trade. 7 H2H draw/away from V3, 10 Asian Handicap from the mega-sweep. Joint-sim expectation: +12.5% ROI / +€25.2k / 6.5% max DD over 4 months (vol_cap 0.75, max_bet 5%).
1. The big picture
Every match in our coverage triggers up to 17 evaluations — one per strategy. Each strategy has its own slot (when before kickoff it fires), feature schema, model, and decision threshold. When a strategy says "bet", we place; when it says "skip", we log predict_returned_skip. A single match can produce zero, one, or several bets depending on which strategies trigger.
Stakes share a single bankroll under a volume cap (no more than 75% of bankroll committed simultaneously) and a per-bet cap of 5% of bankroll. The portfolio was selected by joint simulation — strategies that duplicated each other or under-contributed were pruned.
Slots
T-1440— 24h before kickoff (early market)T-720— 12h beforeT-60— 1h before (late market, sharp money has moved)T-10— 10min before kickoff (last chance, tightest spreads)
A given strategy belongs to exactly one slot. If the OA snapshot or BF AH odds aren't available at that moment, the strategy logs no_bf_odds / no_bf_ah_odds and skips this match.
2. V3 H2H entries (7)
V3 is the cross-market H2H model trained on all 86 books × 4 slots. Inputs: bookmaker H2H odds tensor (1032-dim). Output: probability for each of {home, draw, away}. Six of seven V3 entries BACK the draw; one BACKs away at T-60.
Why so many draws? Bookmakers systematically under-price draws in low-scoring leagues, and the V3 cross-market model picks that up. Different (slot, model, cutoff, stake_algo) combinations exploit it from different angles.
3. AH entries (10)
AH strategies are trained on the mega-sweep feature schema (5610-dim): all 86 books × 4 slots × 33 lines × IP odds + Betfair back/lay/volume per (slot, line, side) + cross-slot deltas. The model outputs P(home covers the line). Each strategy picks one specific (line, side) combination — we don't ensemble lines.
The 4 sides — what each one means
We've moved away from the older COVERS/DOESNT framing. Each AH strategy now picks one of four explicit sides, which match exactly how the bet sits on the Betfair exchange.
Note: BACK_AWAY and LAY_HOME express the same belief (home doesn't cover) but at different prices on the exchange — back odds vs lay odds. Same for BACK_HOME vs LAY_AWAY. Different strategies pick whichever side has the better edge per their model.
The 10 deployed AH entries
All AH entries use cutoff c4 (the most-recent calibration) and stake algoVOL_TARGET (sized to a fixed % of available BF volume so we don't move the line).
4. Quarter-line settlement (−0.25 / +0.75 / etc.)
Real Betfair settles quarter lines by splitting stake 50/50 across the two adjacent half/whole lines (so a bet at −0.25 settles half on 0 and half on −0.5). Possible outcomes: full win, full loss, half-win, half-loss, half-push.
Our paper-trade (and the joint sim that produced the expected ROI) use the training-label settlement: binary covered/not, no half-splits. Reason: the model is trained on that exact label, so paper-trade-vs-joint-sim parity requires the same convention. The difference materialises only on draws and exact-margin outcomes — for live money this is a small known semantic gap (~half a stake on rare matchups) we'll close before going to real money.
The audit script tools/overnight_sanity_check.py flags every quarter-line bet so we can eyeball them.
5. Bet flow (per evaluation)
- simulation_runner heartbeats every 5 min, schedules a
threading.Timerat slot-time before each upcoming kickoff. - At slot-time: pull the OA snapshot tagged with that slot from
oddsapi_snapshots. - Build the feature vector for the strategy: 1032-dim for V3 H2H, 5610-dim for AH (includes BEX back/lay/volume from
betfair_ah_snapshots). - Run the model. For V3 → P(home/draw/away). For AH → P(home covers the line).
- Strategy decides BACK / LAY / skip based on its threshold. Skip → log
predict_returned_skip. - If betting: pull live BF odds for that market. Compute stake via the strategy's algorithm (FLAT, RIDGE, DD_AWARE, or VOL_TARGET).
- Apply portfolio caps: vol_cap (0.75), max_bet_pct (0.05), min_bet_eur (10). Adjust stake or reject (
stake_below_min). - Place on Betfair (paper). Deduct liability from bankroll. Lock until kickoff + 2h.
- After settle grace: pull final score from BF, apply per-side win/loss formula, credit bankroll.
6. Glossary
- Edge — model probability minus market-implied probability at the quoted odds.
- Cutoff (c1 / c2 / c4) — feature-set version. Different cutoffs use different bookmaker / slot subsets at training time. c4 is the most recent.
- Stake algos:
FLAT— same € stake every bet.RIDGE— Kelly-like, dampened by recent edge variance.DD_AWARE— pulls back size while bankroll is below recent peak.VOL_TARGET— stake sized as a % of available exchange volume (used for AH).
- vol_cap — total liability committed across all open bets ≤ 75% of bankroll.
- max_bet_pct — single bet ≤ 5% of bankroll, regardless of what the algo says.
- min_bet_eur — bets below €10 stake are dropped (
stake_below_min). - Liability (LAY) — what we lose if the LAY loses.
stake × (odds − 1).