Live experiment v2: can our value signals beat Betfair once the artefacts are removed?
A betting bot runs our public value signals against real Betfair prices, dry-run, with three rules that v1 taught us the hard way: a fresh fair price only, execution within 3 hours of kick-off, and liquidity of at least 500. Every decision, including every skipped signal, stays on the record. v1 ran 262 bets and got a public autopsy.
TIPS-EXP-003 — closed on 30 September 2026
4 settled bets (CLV -2.39%, flat-stake ROI +14.7%): far too few to read. It was closed as recorded because our public signal rule changed (exchange prices excluded), which would have changed its trigger in the middle of the test. Its ledger stays published under EXP-003.
Implementation fix, 30 September 2026: rule 1 covers every public value flag, but the proposal step only picked up matches that already had a Pinnacle price when the prediction was logged. Flags on matches where Pinnacle opened later — shown on the site from the live Pinnacle price — were never proposed and are missing from this ledger (for example matches 7160 and 7648 on 28 September). From 30 September they are proposed like every other signal, and rule 2 (fresh live fair price, otherwise skipped) applies to all of them. The missed signals are not added retroactively.
v1 (TIPS-EXP-002) concluded on 21 September 2026
v1 ran from 18 July to 21 September 2026 and recorded 262 settled bets: stake-weighted ROI +3.4%, flat-stake ROI +0.8%, CLV +2.48% versus the devigged close. Three well-defined segments lost money (stale fair price −14.8%, execution 3–8 h before kick-off −21.0%, liquidity under 500 −7.0%); the rest was positive, mostly on flat stakes barely so. Rather than filter the recorded ledger after the fact, v1 stands as it ran and its lessons became the rules of v2.
Correction disclosed: until 21 September v1's CLV was computed against Pinnacle's raw closing odds (margin included), which inflated it from +2.5% to +6.5%. The ledger now shows CLV versus the devigged close for every bet.
The frozen rules (summary)
- Signals: every public value flag, with exchange prices excluded from the best soft price (rule v2), but without the 90-minute age gate on the soft price — the bet is executed at the Betfair price, and the fair price is re-checked at execution.
- Every public value signal is rechecked at Betfair every ~30 minutes, but a bet is placed only within 3 hours of kick-off; earlier candidates wait (skipped as too_early).
- The fair price is recomputed from the live sharp benchmark at execution. If the latest reading is older than 2 hours, the signal is skipped (fair_stale); there is no fallback to the price logged at detection.
- A bet is recorded only if the Betfair price grants ≥2.5% edge after 2% commission versus the fresh fair, with liquidity of at least 500 and at least 3× the stake.
- Half-Kelly staking on a simulated 1,000-lei bankroll; max 5% per bet, 20% exposure per day. Dry-run: nothing is actually staked; settled at real results minus commission. ROI is reported both stake-weighted and flat.
- Promotion gate, decided in advance: 150+ bets with flat-stake ROI above zero (95% interval excluding zero) and positive CLV versus the devigged Pinnacle close. Otherwise: not viable, public autopsy.
How it actually executes (disclosed 5 October 2026, unchanged since day one): between 2.5 and 3 hours before kick-off the executor asks for 2 points more edge than rule 4 states, and the half-Kelly stake is computed from the soft-bookmaker price that triggered the signal, not from the Betfair edge. Corrections log →
Read the frozen specification → OpenTimestamps proof (.ots) Verify on GitHub (with OpenTimestamps proof) →
The same signals at the bookmaker's own price
At Betfair prices the edge has not survived so far. TIPS-EXP-006 measures the same value flags at the soft bookmaker that showed the price, on paper, with many more flags a day.
Full details →The live ledger
Updated automatically. Skipped signals and losses stay on the record.
| Match | Pick | Odds | Edge Score | Stake | Result | P&L | CLV |
|---|---|---|---|---|---|---|---|
| Goias — CRB edge too small | 1 | 2.20 | -7.6% | — | — | — | — |
| RB Bragantino — Santos edge too small | 1 | 2.12 | +1.2% | — | — | — | — |
| Athletic Club — Ceara no market | X | — | — | — | — | — | — |
| Águilas Doradas — Fortaleza FC fair stale | 1 | — | — | — | — | — | — |
| Sporting Cristal — FC Cajamarca fair stale | 1 | — | — | — | — | — | — |
| Mallorca — Cadiz edge too small | 1 | 1.46 | -3.5% | — | — | — | — |
| Newcastle — Everton edge too small | 1 | 2.24 | +0.2% | — | — | — | — |
| Deportivo La Coruna — Osasuna no market | X | — | — | — | — | — | — |
| Deportivo La Coruna — Osasuna no market | 1 | — | — | — | — | — | — |
| Atalanta — Parma edge too small | 1 | 1.44 | -6.1% | — | — | — | — |
| Lorient — Stade Brestois 29 edge too small | 2 | 3.30 | +1.9% | — | — | — | — |
| Lorient — Stade Brestois 29 edge too small | X | 3.25 | -2.2% | — | — | — | — |
| UTC Cajamarca — Deportivo Garcilaso fair stale | 1 | — | — | — | — | — | — |
| Landskrona BoIS — Orebro SK fair stale | 1 | — | — | — | — | — | — |
| Sportivo Barracas — Leones de Rosario fair stale | X | — | — | — | — | — | — |
| Kongsvinger — Stabaek fair stale | 1 | — | — | — | — | — | — |
| Mjallby AIF — Kalmar FF | 2 | 2.86 | +4.6% | 2.09 | Lost | -2.09 | -2.1% |
| Gais — AIK Stockholm edge too small | 1 | 1.85 | -3.5% | — | — | — | — |
| Chacarita Juniors — Nueva Chicago fair stale | X | — | — | — | — | — | — |
| Atletico DE Rafaela — Patronato fair stale | 1 | — | — | — | — | — | — |
| Sassuolo — Fiorentina edge too small | 2 | 2.44 | -0.7% | — | — | — | — |
| Radomiak Radom — Slask Wroclaw edge too small | 1 | 2.00 | -3.0% | — | — | — | — |
| VPS — HJK Helsinki edge too small | 2 | 1.44 | -1.4% | — | — | — | — |
| Atromitos — Volos NFC edge too small | 1 | 1.89 | -2.3% | — | — | — | — |
| All Boys — CA Estudiantes fair stale | 1 | — | — | — | — | — | — |
| Karpaty — Kudrivka fair stale | 1 | — | — | — | — | — | — |
| FC Voluntari — Farul Constanta fair stale | 2 | — | — | — | — | — | — |
| Montana — Spartak Pleven fair stale | 1 | — | — | — | — | — | — |
| Dobrudzha — Fratria fair stale | 2 | — | — | — | — | — | — |
| Oviedo — Las Palmas edge too small | 1 | 1.75 | -1.0% | — | — | — | — |
| Tenerife — FC Andorra edge too small | 1 | 2.30 | -2.1% | — | — | — | — |
| Sportist Svoge — Ludogorets II fair stale | 1 | — | — | — | — | — | — |
| Portland Timbers — Houston Dynamo edge too small | 1 | 1.77 | -1.3% | — | — | — | — |
| Los Angeles FC — Minnesota United FC edge too small | 1 | 1.81 | -1.5% | — | — | — | — |
| New England Revolution — Inter Miami edge too small | 2 | 2.08 | -3.5% | — | — | — | — |
| Lanus — Gimnasia M. edge too small | 1 | 1.53 | -0.9% | — | — | — | — |
| Independiente Medellin — Alianza Valledupar fair stale | 1 | — | — | — | — | — | — |
| Santos Laguna — Necaxa edge too small | 1 | 1.88 | -3.0% | — | — | — | — |
| Gimnasia Y Tiro — Quilmes fair stale | 1 | — | — | — | — | — | — |
| Atlanta United FC — Toronto FC edge too small | 1 | 2.08 | -8.2% | — | — | — | — |
| San Martin Tucuman — Colegiales fair stale | X | — | — | — | — | — | — |
| Novorizontino — Operario-PR edge too small | 1 | 1.38 | -2.2% | — | — | — | — |
| Deportivo Cali — Chico edge too small | 1 | 1.29 | -1.5% | — | — | — | — |
| Guayaquil City FC — Libertad fair stale | 1 | — | — | — | — | — | — |
| Atletico Grau — Universitario fair stale | 2 | — | — | — | — | — | — |
| SC Braga — Famalicao | 1 | 1.78 | +3.9% | 7.45 | Won | +5.69 | -1.9% |
| Athletic Club — Real Sociedad no market | 1 | — | — | — | — | — | — |
| Juventus — Napoli edge too small | 1 | 2.26 | -5.9% | — | — | — | — |
| Valerenga — Tromso edge too small | 1 | 2.40 | -2.8% | — | — | — | — |
| Burgos — Castellón edge too small | X | 3.35 | -3.7% | — | — | — | — |
| Panathinaikos — AEK Athens FC edge too small | 1 | 2.10 | -4.0% | — | — | — | — |
| Elche — Valencia edge too small | 1 | 2.38 | -3.5% | — | — | — | — |
| Dukla Banská Bystrica — Dunajska Streda fair stale | 2 | — | — | — | — | — | — |
| Lecce — Genoa edge too small | 2 | 2.58 | -1.7% | — | — | — | — |
| Lecce — Genoa edge too small | X | 3.05 | -2.4% | — | — | — | — |
| Liverpool — Arsenal | 2 | 2.48 | +3.2% | 4.04 | Won | +5.86 | -1.3% |
| Eintracht Frankfurt — Hamburger SV edge too small | 1 | 1.55 | -2.7% | — | — | — | — |
| Lyon — Angers edge too small | 1 | 1.44 | -2.7% | — | — | — | — |
| Paris FC — Monaco edge too small | 2 | 2.92 | -2.6% | — | — | — | — |
| KFUM Oslo — Ham-Kam edge too small | 1 | 2.10 | -0.1% | — | — | — | — |
Why signals were rejected
Most value signals never become bets: the exchange price is not good enough, liquidity is thin, or the market cannot be matched. The discipline is the point — a bot that bets everything loses.
edge_too_small: 872 fair_stale: 254 no_market: 117 market_closed: 12 edge_implausible: 11 low_liquidity: 11
Why dry-run? Because our own accumulator and staking studies showed that the honest first step of any strategy is proving the edge exists at the execution venue — before a single leu is risked. If the gate is passed, real-money testing becomes a separate, explicit decision. If not, this page becomes the autopsy. Read the explainer →