FAILURE MAP
← Case archive

FA-84576 / Betting odds conversion / Open access

Arbitrage scan keeps the worst price per outcome · case 01

Genuine sure bets are missed because the lowest quote is used.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The best-price comparison keeps a lower price.

VERIFIED REPAIR

Keep the highest price per outcome.

Unsuccessful approach: Keeping the last quote seen per outcome depends on feed order.

Case contract

Arbitrage finder. books rows are [bookmaker, outcome, decimal price]. For each outcome take the highest price; ties go to the alphabetically first bookmaker. S = sum of 1/best price. If S >= 1 return ["no arb"]. Otherwise stake_i = floor(total * (1/d_i) / S) cents; guaranteed return = min over outcomes of floor(stake_i * d_i). Return ["arb", [[outcome, bookmaker, stake] sorted by outcome], guaranteed return - sum of stakes].

Why this case matters

Odds comparison tools flag sure bets and split a bankroll across bookmakers.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(books, total_cents):
    best = {}
    for book, outcome, price in books:
        d = Fraction(price)
        cur = best.get(outcome)
        if cur is None or d < cur[0] or (d == cur[0] and book < cur[1]):
            best[outcome] = (d, book)
    S = sum(1 / d for d, _ in best.values())
    if S >= 1:
        return ['no arb']
    rows = []
    ret = None
    for outcome in sorted(best):
        d, book = best[outcome]
        stake = math.floor(total_cents * (1 / d) / S)
        rows.append([outcome, book, stake])
        r = math.floor(stake * d)
        ret = r if ret is None else min(ret, r)
    return ['arb', rows, ret - sum(r[2] for r in rows)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
    try:
        return solve(*args)
    except Exception as exc:
        return 'raised ' + type(exc).__name__
cases = [[('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '1.77'],
     ['delta', 'home', '1.79'],
     ['kilo', 'away', '2.33'],
     ['bravo', 'away', '2.21'],
     ['delta', 'away', '2.07']],
    25000),
   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),
  ('variant scenario 1',
   ([['bravo', 'home', '1.69'],
     ['alpha', 'away', '2.32'],
     ['bravo', 'away', '2.14'],
     ['delta', 'away', '2.26']],
    10000),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),
   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.08'],
     ['alpha', 'home', '2.92'],
     ['kilo', 'draw', '2.68'],
     ['alpha', 'away', '3.29'],
     ['delta', 'away', '3.29'],
     ['kilo', 'away', '3.68']],
    10000),
   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),
  ('variant scenario 1',
   ([['delta', 'home', '3.01'],
     ['kilo', 'home', '2.64'],
     ['kilo', 'draw', '3.17'],
     ['alpha', 'draw', '3.30'],
     ['delta', 'away', '3.27']],
    25000),
   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),
  ('variant scenario 2',
   ([['kilo', 'home', '2.66'],
     ['alpha', 'home', '2.70'],
     ['bravo', 'home', '2.71'],
     ['kilo', 'away', '1.72'],
     ['delta', 'away', '1.54'],
     ['alpha', 'home', '2.66']],
    25000),
   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '2.23'],
     ['alpha', 'away', '1.83'],
     ['kilo', 'away', '2.07'],
     ['bravo', 'away', '1.86']],
    10000),
   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),
  ('variant scenario 1',
   ([['delta', 'home', '1.53'],
     ['delta', 'away', '2.80'],
     ['bravo', 'away', '2.80'],
     ['kilo', 'away', '2.70']],
    9999),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.53'],
     ['delta', 'home', '3.01'],
     ['alpha', 'draw', '3.61'],
     ['kilo', 'draw', '3.70'],
     ['delta', 'draw', '3.67'],
     ['kilo', 'away', '2.87'],
     ['bravo', 'away', '2.92'],
     ['delta', 'away', '2.58']],
    10000),
   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.40'],
     ['bravo', 'home', '3.33'],
     ['kilo', 'draw', '2.36'],
     ['delta', 'draw', '2.28'],
     ['kilo', 'away', '3.93'],
     ['bravo', 'away', '3.75']],
    10000),
   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),
  ('variant scenario 1',
   ([['kilo', 'home', '3.59'],
     ['bravo', 'home', '3.20'],
     ['alpha', 'home', '3.30'],
     ['alpha', 'draw', '2.44'],
     ['kilo', 'draw', '2.29'],
     ['bravo', 'draw', '2.36'],
     ['delta', 'away', '3.54'],
     ['bravo', 'away', '3.81']],
    9999),
   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),
  ('variant scenario 2',
   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),
   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['bravo', 'home', '2.92'],
     ['alpha', 'home', '3.07'],
     ['kilo', 'home', '3.06'],
     ['alpha', 'draw', '3.65'],
     ['delta', 'draw', '3.52'],
     ['delta', 'away', '2.53'],
     ['alpha', 'away', '2.36'],
     ['bravo', 'away', '2.67']],
    9999),
   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),
  ('variant scenario 1',
   ([['kilo', 'home', '2.38'],
     ['alpha', 'home', '2.05'],
     ['bravo', 'home', '2.37'],
     ['alpha', 'away', '1.74'],
     ['bravo', 'away', '1.82']],
    10000),
   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),
  ('variant scenario 2',
   ([['delta', 'home', '4.55'],
     ['bravo', 'home', '4.54'],
     ['kilo', 'home', '4.47'],
     ['kilo', 'draw', '2.17'],
     ['delta', 'draw', '2.23'],
     ['bravo', 'draw', '2.19'],
     ['bravo', 'away', '3.24'],
     ['delta', 'away', '3.26'],
     ['kilo', 'away', '3.37']],
    10000),
   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]
for label, args, expected in cases[N - 1]:
    check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
control two-way arb['no arb']['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]Failed
boundary exactly fair book['no arb']['no arb']Passed
boundary tie goes to first name['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]Passed
control no arb['no arb']['no arb']Passed
regression: best price selection['no arb']['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]Failed
variant scenario 1['no arb']['no arb']Passed
variant scenario 2['arb', [['away', 'delta', 5533], ['home', 'kilo', 4465]], 404]['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495]Failed

SHA-256 / d6979eb523c8c01680ab3e00deb9f27e32f907b8670043c70f7edb0754e317d1

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(books, total_cents):
    best = {}
    for book, outcome, price in books:
        d = Fraction(price)
        cur = best.get(outcome)
        if True:
            best[outcome] = (d, book)
    S = sum(1 / d for d, _ in best.values())
    if S >= 1:
        return ['no arb']
    rows = []
    ret = None
    for outcome in sorted(best):
        d, book = best[outcome]
        stake = math.floor(total_cents * (1 / d) / S)
        rows.append([outcome, book, stake])
        r = math.floor(stake * d)
        ret = r if ret is None else min(ret, r)
    return ['arb', rows, ret - sum(r[2] for r in rows)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
    try:
        return solve(*args)
    except Exception as exc:
        return 'raised ' + type(exc).__name__
cases = [[('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '1.77'],
     ['delta', 'home', '1.79'],
     ['kilo', 'away', '2.33'],
     ['bravo', 'away', '2.21'],
     ['delta', 'away', '2.07']],
    25000),
   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),
  ('variant scenario 1',
   ([['bravo', 'home', '1.69'],
     ['alpha', 'away', '2.32'],
     ['bravo', 'away', '2.14'],
     ['delta', 'away', '2.26']],
    10000),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),
   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.08'],
     ['alpha', 'home', '2.92'],
     ['kilo', 'draw', '2.68'],
     ['alpha', 'away', '3.29'],
     ['delta', 'away', '3.29'],
     ['kilo', 'away', '3.68']],
    10000),
   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),
  ('variant scenario 1',
   ([['delta', 'home', '3.01'],
     ['kilo', 'home', '2.64'],
     ['kilo', 'draw', '3.17'],
     ['alpha', 'draw', '3.30'],
     ['delta', 'away', '3.27']],
    25000),
   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),
  ('variant scenario 2',
   ([['kilo', 'home', '2.66'],
     ['alpha', 'home', '2.70'],
     ['bravo', 'home', '2.71'],
     ['kilo', 'away', '1.72'],
     ['delta', 'away', '1.54'],
     ['alpha', 'home', '2.66']],
    25000),
   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '2.23'],
     ['alpha', 'away', '1.83'],
     ['kilo', 'away', '2.07'],
     ['bravo', 'away', '1.86']],
    10000),
   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),
  ('variant scenario 1',
   ([['delta', 'home', '1.53'],
     ['delta', 'away', '2.80'],
     ['bravo', 'away', '2.80'],
     ['kilo', 'away', '2.70']],
    9999),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.53'],
     ['delta', 'home', '3.01'],
     ['alpha', 'draw', '3.61'],
     ['kilo', 'draw', '3.70'],
     ['delta', 'draw', '3.67'],
     ['kilo', 'away', '2.87'],
     ['bravo', 'away', '2.92'],
     ['delta', 'away', '2.58']],
    10000),
   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.40'],
     ['bravo', 'home', '3.33'],
     ['kilo', 'draw', '2.36'],
     ['delta', 'draw', '2.28'],
     ['kilo', 'away', '3.93'],
     ['bravo', 'away', '3.75']],
    10000),
   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),
  ('variant scenario 1',
   ([['kilo', 'home', '3.59'],
     ['bravo', 'home', '3.20'],
     ['alpha', 'home', '3.30'],
     ['alpha', 'draw', '2.44'],
     ['kilo', 'draw', '2.29'],
     ['bravo', 'draw', '2.36'],
     ['delta', 'away', '3.54'],
     ['bravo', 'away', '3.81']],
    9999),
   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),
  ('variant scenario 2',
   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),
   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['bravo', 'home', '2.92'],
     ['alpha', 'home', '3.07'],
     ['kilo', 'home', '3.06'],
     ['alpha', 'draw', '3.65'],
     ['delta', 'draw', '3.52'],
     ['delta', 'away', '2.53'],
     ['alpha', 'away', '2.36'],
     ['bravo', 'away', '2.67']],
    9999),
   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),
  ('variant scenario 1',
   ([['kilo', 'home', '2.38'],
     ['alpha', 'home', '2.05'],
     ['bravo', 'home', '2.37'],
     ['alpha', 'away', '1.74'],
     ['bravo', 'away', '1.82']],
    10000),
   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),
  ('variant scenario 2',
   ([['delta', 'home', '4.55'],
     ['bravo', 'home', '4.54'],
     ['kilo', 'home', '4.47'],
     ['kilo', 'draw', '2.17'],
     ['delta', 'draw', '2.23'],
     ['bravo', 'draw', '2.19'],
     ['bravo', 'away', '3.24'],
     ['delta', 'away', '3.26'],
     ['kilo', 'away', '3.37']],
    10000),
   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]
for label, args, expected in cases[N - 1]:
    check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
control two-way arb['no arb']['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]Failed
boundary exactly fair book['no arb']['no arb']Passed
boundary tie goes to first name['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]Passed
control no arb['no arb']['no arb']Passed
regression: best price selection['no arb']['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]Failed
variant scenario 1['no arb']['no arb']Passed
variant scenario 2['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495]['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495]Passed

SHA-256 / 61711b2a9369255294524fcf487435fb75fa87c177cd878fd7895a008d757007

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(books, total_cents):
    best = {}
    for book, outcome, price in books:
        d = Fraction(price)
        cur = best.get(outcome)
        if cur is None or d > cur[0] or (d == cur[0] and book < cur[1]):
            best[outcome] = (d, book)
    S = sum(1 / d for d, _ in best.values())
    if S >= 1:
        return ['no arb']
    rows = []
    ret = None
    for outcome in sorted(best):
        d, book = best[outcome]
        stake = math.floor(total_cents * (1 / d) / S)
        rows.append([outcome, book, stake])
        r = math.floor(stake * d)
        ret = r if ret is None else min(ret, r)
    return ['arb', rows, ret - sum(r[2] for r in rows)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
    try:
        return solve(*args)
    except Exception as exc:
        return 'raised ' + type(exc).__name__
cases = [[('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '1.77'],
     ['delta', 'home', '1.79'],
     ['kilo', 'away', '2.33'],
     ['bravo', 'away', '2.21'],
     ['delta', 'away', '2.07']],
    25000),
   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),
  ('variant scenario 1',
   ([['bravo', 'home', '1.69'],
     ['alpha', 'away', '2.32'],
     ['bravo', 'away', '2.14'],
     ['delta', 'away', '2.26']],
    10000),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),
   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.08'],
     ['alpha', 'home', '2.92'],
     ['kilo', 'draw', '2.68'],
     ['alpha', 'away', '3.29'],
     ['delta', 'away', '3.29'],
     ['kilo', 'away', '3.68']],
    10000),
   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),
  ('variant scenario 1',
   ([['delta', 'home', '3.01'],
     ['kilo', 'home', '2.64'],
     ['kilo', 'draw', '3.17'],
     ['alpha', 'draw', '3.30'],
     ['delta', 'away', '3.27']],
    25000),
   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),
  ('variant scenario 2',
   ([['kilo', 'home', '2.66'],
     ['alpha', 'home', '2.70'],
     ['bravo', 'home', '2.71'],
     ['kilo', 'away', '1.72'],
     ['delta', 'away', '1.54'],
     ['alpha', 'home', '2.66']],
    25000),
   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['kilo', 'home', '2.23'],
     ['alpha', 'away', '1.83'],
     ['kilo', 'away', '2.07'],
     ['bravo', 'away', '1.86']],
    10000),
   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),
  ('variant scenario 1',
   ([['delta', 'home', '1.53'],
     ['delta', 'away', '2.80'],
     ['bravo', 'away', '2.80'],
     ['kilo', 'away', '2.70']],
    9999),
   ['no arb']),
  ('variant scenario 2',
   ([['kilo', 'home', '2.53'],
     ['delta', 'home', '3.01'],
     ['alpha', 'draw', '3.61'],
     ['kilo', 'draw', '3.70'],
     ['delta', 'draw', '3.67'],
     ['kilo', 'away', '2.87'],
     ['bravo', 'away', '2.92'],
     ['delta', 'away', '2.58']],
    10000),
   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['delta', 'home', '3.40'],
     ['bravo', 'home', '3.33'],
     ['kilo', 'draw', '2.36'],
     ['delta', 'draw', '2.28'],
     ['kilo', 'away', '3.93'],
     ['bravo', 'away', '3.75']],
    10000),
   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),
  ('variant scenario 1',
   ([['kilo', 'home', '3.59'],
     ['bravo', 'home', '3.20'],
     ['alpha', 'home', '3.30'],
     ['alpha', 'draw', '2.44'],
     ['kilo', 'draw', '2.29'],
     ['bravo', 'draw', '2.36'],
     ['delta', 'away', '3.54'],
     ['bravo', 'away', '3.81']],
    9999),
   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),
  ('variant scenario 2',
   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),
   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],
 [('control two-way arb',
   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),
  ('boundary exactly fair book',
   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),
   ['no arb']),
  ('boundary tie goes to first name',
   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),
   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),
  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),
  ('regression: best price selection',
   ([['bravo', 'home', '2.92'],
     ['alpha', 'home', '3.07'],
     ['kilo', 'home', '3.06'],
     ['alpha', 'draw', '3.65'],
     ['delta', 'draw', '3.52'],
     ['delta', 'away', '2.53'],
     ['alpha', 'away', '2.36'],
     ['bravo', 'away', '2.67']],
    9999),
   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),
  ('variant scenario 1',
   ([['kilo', 'home', '2.38'],
     ['alpha', 'home', '2.05'],
     ['bravo', 'home', '2.37'],
     ['alpha', 'away', '1.74'],
     ['bravo', 'away', '1.82']],
    10000),
   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),
  ('variant scenario 2',
   ([['delta', 'home', '4.55'],
     ['bravo', 'home', '4.54'],
     ['kilo', 'home', '4.47'],
     ['kilo', 'draw', '2.17'],
     ['delta', 'draw', '2.23'],
     ['bravo', 'draw', '2.19'],
     ['bravo', 'away', '3.24'],
     ['delta', 'away', '3.26'],
     ['kilo', 'away', '3.37']],
    10000),
   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]
for label, args, expected in cases[N - 1]:
    check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
control two-way arb['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]Passed
boundary exactly fair book['no arb']['no arb']Passed
boundary tie goes to first name['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]Passed
control no arb['no arb']['no arb']Passed
regression: best price selection['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]Passed
variant scenario 1['no arb']['no arb']Passed
variant scenario 2['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495]['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495]Passed

SHA-256 / 648981d678645f154c7a9e6bc6883a050dd3b71dfc0fc659e291aca0dcfc7b5d

Verification & scope

Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any operator, exchange or regulator rule set. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:32.283172+00:00.

Case digest / 119133fc895d7670ef7b1323ca6fb2ed2a596f13a3fabbe848d390b5fcbc8276