{"abstract":"Genuine sure bets are missed because the lowest quote is used.","category":"Betting odds conversion","checks":7,"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].","evaluation_group":"w2-odds-conversion-surebet-stake-split","failed_approach":"Keeping the last quote seen per outcome depends on feed order.","family":"w2-odds-conversion-surebet-stake-split-best-price-selection","id":"FA-84576","implementations":{"attempt":{"sha256":"61711b2a9369255294524fcf487435fb75fa87c177cd878fd7895a008d757007","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(books, total_cents):\n    best = {}\n    for book, outcome, price in books:\n        d = Fraction(price)\n        cur = best.get(outcome)\n        if True:\n            best[outcome] = (d, book)\n    S = sum(1 / d for d, _ in best.values())\n    if S >= 1:\n        return ['no arb']\n    rows = []\n    ret = None\n    for outcome in sorted(best):\n        d, book = best[outcome]\n        stake = math.floor(total_cents * (1 / d) / S)\n        rows.append([outcome, book, stake])\n        r = math.floor(stake * d)\n        ret = r if ret is None else min(ret, r)\n    return ['arb', rows, ret - sum(r[2] for r in rows)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '1.77'],\n     ['delta', 'home', '1.79'],\n     ['kilo', 'away', '2.33'],\n     ['bravo', 'away', '2.21'],\n     ['delta', 'away', '2.07']],\n    25000),\n   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),\n  ('variant scenario 1',\n   ([['bravo', 'home', '1.69'],\n     ['alpha', 'away', '2.32'],\n     ['bravo', 'away', '2.14'],\n     ['delta', 'away', '2.26']],\n    10000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),\n   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.08'],\n     ['alpha', 'home', '2.92'],\n     ['kilo', 'draw', '2.68'],\n     ['alpha', 'away', '3.29'],\n     ['delta', 'away', '3.29'],\n     ['kilo', 'away', '3.68']],\n    10000),\n   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),\n  ('variant scenario 1',\n   ([['delta', 'home', '3.01'],\n     ['kilo', 'home', '2.64'],\n     ['kilo', 'draw', '3.17'],\n     ['alpha', 'draw', '3.30'],\n     ['delta', 'away', '3.27']],\n    25000),\n   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.66'],\n     ['alpha', 'home', '2.70'],\n     ['bravo', 'home', '2.71'],\n     ['kilo', 'away', '1.72'],\n     ['delta', 'away', '1.54'],\n     ['alpha', 'home', '2.66']],\n    25000),\n   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '2.23'],\n     ['alpha', 'away', '1.83'],\n     ['kilo', 'away', '2.07'],\n     ['bravo', 'away', '1.86']],\n    10000),\n   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),\n  ('variant scenario 1',\n   ([['delta', 'home', '1.53'],\n     ['delta', 'away', '2.80'],\n     ['bravo', 'away', '2.80'],\n     ['kilo', 'away', '2.70']],\n    9999),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.53'],\n     ['delta', 'home', '3.01'],\n     ['alpha', 'draw', '3.61'],\n     ['kilo', 'draw', '3.70'],\n     ['delta', 'draw', '3.67'],\n     ['kilo', 'away', '2.87'],\n     ['bravo', 'away', '2.92'],\n     ['delta', 'away', '2.58']],\n    10000),\n   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.40'],\n     ['bravo', 'home', '3.33'],\n     ['kilo', 'draw', '2.36'],\n     ['delta', 'draw', '2.28'],\n     ['kilo', 'away', '3.93'],\n     ['bravo', 'away', '3.75']],\n    10000),\n   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '3.59'],\n     ['bravo', 'home', '3.20'],\n     ['alpha', 'home', '3.30'],\n     ['alpha', 'draw', '2.44'],\n     ['kilo', 'draw', '2.29'],\n     ['bravo', 'draw', '2.36'],\n     ['delta', 'away', '3.54'],\n     ['bravo', 'away', '3.81']],\n    9999),\n   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),\n  ('variant scenario 2',\n   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),\n   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['bravo', 'home', '2.92'],\n     ['alpha', 'home', '3.07'],\n     ['kilo', 'home', '3.06'],\n     ['alpha', 'draw', '3.65'],\n     ['delta', 'draw', '3.52'],\n     ['delta', 'away', '2.53'],\n     ['alpha', 'away', '2.36'],\n     ['bravo', 'away', '2.67']],\n    9999),\n   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '2.38'],\n     ['alpha', 'home', '2.05'],\n     ['bravo', 'home', '2.37'],\n     ['alpha', 'away', '1.74'],\n     ['bravo', 'away', '1.82']],\n    10000),\n   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),\n  ('variant scenario 2',\n   ([['delta', 'home', '4.55'],\n     ['bravo', 'home', '4.54'],\n     ['kilo', 'home', '4.47'],\n     ['kilo', 'draw', '2.17'],\n     ['delta', 'draw', '2.23'],\n     ['bravo', 'draw', '2.19'],\n     ['bravo', 'away', '3.24'],\n     ['delta', 'away', '3.26'],\n     ['kilo', 'away', '3.37']],\n    10000),\n   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"d6979eb523c8c01680ab3e00deb9f27e32f907b8670043c70f7edb0754e317d1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(books, total_cents):\n    best = {}\n    for book, outcome, price in books:\n        d = Fraction(price)\n        cur = best.get(outcome)\n        if cur is None or d < cur[0] or (d == cur[0] and book < cur[1]):\n            best[outcome] = (d, book)\n    S = sum(1 / d for d, _ in best.values())\n    if S >= 1:\n        return ['no arb']\n    rows = []\n    ret = None\n    for outcome in sorted(best):\n        d, book = best[outcome]\n        stake = math.floor(total_cents * (1 / d) / S)\n        rows.append([outcome, book, stake])\n        r = math.floor(stake * d)\n        ret = r if ret is None else min(ret, r)\n    return ['arb', rows, ret - sum(r[2] for r in rows)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '1.77'],\n     ['delta', 'home', '1.79'],\n     ['kilo', 'away', '2.33'],\n     ['bravo', 'away', '2.21'],\n     ['delta', 'away', '2.07']],\n    25000),\n   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),\n  ('variant scenario 1',\n   ([['bravo', 'home', '1.69'],\n     ['alpha', 'away', '2.32'],\n     ['bravo', 'away', '2.14'],\n     ['delta', 'away', '2.26']],\n    10000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),\n   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.08'],\n     ['alpha', 'home', '2.92'],\n     ['kilo', 'draw', '2.68'],\n     ['alpha', 'away', '3.29'],\n     ['delta', 'away', '3.29'],\n     ['kilo', 'away', '3.68']],\n    10000),\n   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),\n  ('variant scenario 1',\n   ([['delta', 'home', '3.01'],\n     ['kilo', 'home', '2.64'],\n     ['kilo', 'draw', '3.17'],\n     ['alpha', 'draw', '3.30'],\n     ['delta', 'away', '3.27']],\n    25000),\n   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.66'],\n     ['alpha', 'home', '2.70'],\n     ['bravo', 'home', '2.71'],\n     ['kilo', 'away', '1.72'],\n     ['delta', 'away', '1.54'],\n     ['alpha', 'home', '2.66']],\n    25000),\n   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '2.23'],\n     ['alpha', 'away', '1.83'],\n     ['kilo', 'away', '2.07'],\n     ['bravo', 'away', '1.86']],\n    10000),\n   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),\n  ('variant scenario 1',\n   ([['delta', 'home', '1.53'],\n     ['delta', 'away', '2.80'],\n     ['bravo', 'away', '2.80'],\n     ['kilo', 'away', '2.70']],\n    9999),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.53'],\n     ['delta', 'home', '3.01'],\n     ['alpha', 'draw', '3.61'],\n     ['kilo', 'draw', '3.70'],\n     ['delta', 'draw', '3.67'],\n     ['kilo', 'away', '2.87'],\n     ['bravo', 'away', '2.92'],\n     ['delta', 'away', '2.58']],\n    10000),\n   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.40'],\n     ['bravo', 'home', '3.33'],\n     ['kilo', 'draw', '2.36'],\n     ['delta', 'draw', '2.28'],\n     ['kilo', 'away', '3.93'],\n     ['bravo', 'away', '3.75']],\n    10000),\n   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '3.59'],\n     ['bravo', 'home', '3.20'],\n     ['alpha', 'home', '3.30'],\n     ['alpha', 'draw', '2.44'],\n     ['kilo', 'draw', '2.29'],\n     ['bravo', 'draw', '2.36'],\n     ['delta', 'away', '3.54'],\n     ['bravo', 'away', '3.81']],\n    9999),\n   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),\n  ('variant scenario 2',\n   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),\n   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['bravo', 'home', '2.92'],\n     ['alpha', 'home', '3.07'],\n     ['kilo', 'home', '3.06'],\n     ['alpha', 'draw', '3.65'],\n     ['delta', 'draw', '3.52'],\n     ['delta', 'away', '2.53'],\n     ['alpha', 'away', '2.36'],\n     ['bravo', 'away', '2.67']],\n    9999),\n   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '2.38'],\n     ['alpha', 'home', '2.05'],\n     ['bravo', 'home', '2.37'],\n     ['alpha', 'away', '1.74'],\n     ['bravo', 'away', '1.82']],\n    10000),\n   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),\n  ('variant scenario 2',\n   ([['delta', 'home', '4.55'],\n     ['bravo', 'home', '4.54'],\n     ['kilo', 'home', '4.47'],\n     ['kilo', 'draw', '2.17'],\n     ['delta', 'draw', '2.23'],\n     ['bravo', 'draw', '2.19'],\n     ['bravo', 'away', '3.24'],\n     ['delta', 'away', '3.26'],\n     ['kilo', 'away', '3.37']],\n    10000),\n   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"648981d678645f154c7a9e6bc6883a050dd3b71dfc0fc659e291aca0dcfc7b5d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(books, total_cents):\n    best = {}\n    for book, outcome, price in books:\n        d = Fraction(price)\n        cur = best.get(outcome)\n        if cur is None or d > cur[0] or (d == cur[0] and book < cur[1]):\n            best[outcome] = (d, book)\n    S = sum(1 / d for d, _ in best.values())\n    if S >= 1:\n        return ['no arb']\n    rows = []\n    ret = None\n    for outcome in sorted(best):\n        d, book = best[outcome]\n        stake = math.floor(total_cents * (1 / d) / S)\n        rows.append([outcome, book, stake])\n        r = math.floor(stake * d)\n        ret = r if ret is None else min(ret, r)\n    return ['arb', rows, ret - sum(r[2] for r in rows)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '1.77'],\n     ['delta', 'home', '1.79'],\n     ['kilo', 'away', '2.33'],\n     ['bravo', 'away', '2.21'],\n     ['delta', 'away', '2.07']],\n    25000),\n   ['arb', [['away', 'kilo', 10861], ['home', 'delta', 14138]], 307]),\n  ('variant scenario 1',\n   ([['bravo', 'home', '1.69'],\n     ['alpha', 'away', '2.32'],\n     ['bravo', 'away', '2.14'],\n     ['delta', 'away', '2.26']],\n    10000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.33'], ['delta', 'away', '1.88'], ['bravo', 'away', '1.91']], 9999),\n   ['arb', [['away', 'bravo', 5494], ['home', 'kilo', 4504]], 495])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.08'],\n     ['alpha', 'home', '2.92'],\n     ['kilo', 'draw', '2.68'],\n     ['alpha', 'away', '3.29'],\n     ['delta', 'away', '3.29'],\n     ['kilo', 'away', '3.68']],\n    10000),\n   ['arb', [['away', 'kilo', 2802], ['draw', 'kilo', 3848], ['home', 'delta', 3348]], 313]),\n  ('variant scenario 1',\n   ([['delta', 'home', '3.01'],\n     ['kilo', 'home', '2.64'],\n     ['kilo', 'draw', '3.17'],\n     ['alpha', 'draw', '3.30'],\n     ['delta', 'away', '3.27']],\n    25000),\n   ['arb', [['away', 'delta', 8124], ['draw', 'alpha', 8050], ['home', 'delta', 8825]], 1564]),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.66'],\n     ['alpha', 'home', '2.70'],\n     ['bravo', 'home', '2.71'],\n     ['kilo', 'away', '1.72'],\n     ['delta', 'away', '1.54'],\n     ['alpha', 'home', '2.66']],\n    25000),\n   ['arb', [['away', 'kilo', 15293], ['home', 'bravo', 9706]], 1304])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['kilo', 'home', '2.23'],\n     ['alpha', 'away', '1.83'],\n     ['kilo', 'away', '2.07'],\n     ['bravo', 'away', '1.86']],\n    10000),\n   ['arb', [['away', 'kilo', 5186], ['home', 'kilo', 4813]], 733]),\n  ('variant scenario 1',\n   ([['delta', 'home', '1.53'],\n     ['delta', 'away', '2.80'],\n     ['bravo', 'away', '2.80'],\n     ['kilo', 'away', '2.70']],\n    9999),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.53'],\n     ['delta', 'home', '3.01'],\n     ['alpha', 'draw', '3.61'],\n     ['kilo', 'draw', '3.70'],\n     ['delta', 'draw', '3.67'],\n     ['kilo', 'away', '2.87'],\n     ['bravo', 'away', '2.92'],\n     ['delta', 'away', '2.58']],\n    10000),\n   ['arb', [['away', 'bravo', 3624], ['draw', 'kilo', 2860], ['home', 'delta', 3515]], 581])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['delta', 'home', '3.40'],\n     ['bravo', 'home', '3.33'],\n     ['kilo', 'draw', '2.36'],\n     ['delta', 'draw', '2.28'],\n     ['kilo', 'away', '3.93'],\n     ['bravo', 'away', '3.75']],\n    10000),\n   ['arb', [['away', 'kilo', 2617], ['draw', 'kilo', 4358], ['home', 'delta', 3024]], 282]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '3.59'],\n     ['bravo', 'home', '3.20'],\n     ['alpha', 'home', '3.30'],\n     ['alpha', 'draw', '2.44'],\n     ['kilo', 'draw', '2.29'],\n     ['bravo', 'draw', '2.36'],\n     ['delta', 'away', '3.54'],\n     ['bravo', 'away', '3.81']],\n    9999),\n   ['arb', [['away', 'bravo', 2760], ['draw', 'alpha', 4309], ['home', 'kilo', 2929]], 515]),\n  ('variant scenario 2',\n   ([['alpha', 'home', '3.52'], ['delta', 'away', '1.35'], ['bravo', 'away', '1.48']], 9999),\n   ['arb', [['away', 'bravo', 7039], ['home', 'alpha', 2959]], 417])],\n [('control two-way arb',\n   ([['alpha', 'home', '2.10'], ['bravo', 'away', '2.10'], ['bravo', 'home', '1.90']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 500]),\n  ('boundary exactly fair book',\n   ([['alpha', 'home', '2.00'], ['bravo', 'away', '2.00']], 10000),\n   ['no arb']),\n  ('boundary tie goes to first name',\n   ([['kilo', 'home', '2.20'], ['alpha', 'home', '2.20'], ['bravo', 'away', '2.20']], 10000),\n   ['arb', [['away', 'bravo', 5000], ['home', 'alpha', 5000]], 1000]),\n  ('control no arb', ([['alpha', 'home', '1.90'], ['alpha', 'away', '1.90']], 10000), ['no arb']),\n  ('regression: best price selection',\n   ([['bravo', 'home', '2.92'],\n     ['alpha', 'home', '3.07'],\n     ['kilo', 'home', '3.06'],\n     ['alpha', 'draw', '3.65'],\n     ['delta', 'draw', '3.52'],\n     ['delta', 'away', '2.53'],\n     ['alpha', 'away', '2.36'],\n     ['bravo', 'away', '2.67']],\n    9999),\n   ['arb', [['away', 'bravo', 3843], ['draw', 'alpha', 2811], ['home', 'alpha', 3343]], 263]),\n  ('variant scenario 1',\n   ([['kilo', 'home', '2.38'],\n     ['alpha', 'home', '2.05'],\n     ['bravo', 'home', '2.37'],\n     ['alpha', 'away', '1.74'],\n     ['bravo', 'away', '1.82']],\n    10000),\n   ['arb', [['away', 'bravo', 5666], ['home', 'kilo', 4333]], 313]),\n  ('variant scenario 2',\n   ([['delta', 'home', '4.55'],\n     ['bravo', 'home', '4.54'],\n     ['kilo', 'home', '4.47'],\n     ['kilo', 'draw', '2.17'],\n     ['delta', 'draw', '2.23'],\n     ['bravo', 'draw', '2.19'],\n     ['bravo', 'away', '3.24'],\n     ['delta', 'away', '3.26'],\n     ['kilo', 'away', '3.37']],\n    10000),\n   ['arb', [['away', 'kilo', 3075], ['draw', 'delta', 4647], ['home', 'delta', 2277]], 361])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-odds-conversion-surebet-stake-split-best-price-selection","generated_at":"2026-09-29T14:50:32.283172+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Odds comparison tools flag sure bets and split a bankroll across bookmakers.","repair":"Keep the highest price per outcome.","root_cause":"The best-price comparison keeps a lower price.","sha256":"119133fc895d7670ef7b1323ca6fb2ed2a596f13a3fabbe848d390b5fcbc8276","title":"Arbitrage scan keeps the worst price per outcome · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.161,"exit_code":1,"observations":[{"actual":["no arb"],"check":"control two-way arb","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],500],"passed":false},{"actual":["no arb"],"check":"boundary exactly fair book","expected":["no arb"],"passed":true},{"actual":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"check":"boundary tie goes to first name","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"passed":true},{"actual":["no arb"],"check":"control no arb","expected":["no arb"],"passed":true},{"actual":["no arb"],"check":"regression: best price selection","expected":["arb",[["away","kilo",10861],["home","delta",14138]],307],"passed":false},{"actual":["no arb"],"check":"variant scenario 1","expected":["no arb"],"passed":true},{"actual":["arb",[["away","bravo",5494],["home","kilo",4504]],495],"check":"variant scenario 2","expected":["arb",[["away","bravo",5494],["home","kilo",4504]],495],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control two-way arb\", \"actual\": [\"no arb\"], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 500], \"passed\": false}, {\"check\": \"boundary exactly fair book\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"boundary tie goes to first name\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"passed\": true}, {\"check\": \"control no arb\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"regression: best price selection\", \"actual\": [\"no arb\"], \"expected\": [\"arb\", [[\"away\", \"kilo\", 10861], [\"home\", \"delta\", 14138]], 307], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5494], [\"home\", \"kilo\", 4504]], 495], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5494], [\"home\", \"kilo\", 4504]], 495], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.345,"exit_code":1,"observations":[{"actual":["no arb"],"check":"control two-way arb","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],500],"passed":false},{"actual":["no arb"],"check":"boundary exactly fair book","expected":["no arb"],"passed":true},{"actual":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"check":"boundary tie goes to first name","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"passed":true},{"actual":["no arb"],"check":"control no arb","expected":["no arb"],"passed":true},{"actual":["no arb"],"check":"regression: best price selection","expected":["arb",[["away","kilo",10861],["home","delta",14138]],307],"passed":false},{"actual":["no arb"],"check":"variant scenario 1","expected":["no arb"],"passed":true},{"actual":["arb",[["away","delta",5533],["home","kilo",4465]],404],"check":"variant scenario 2","expected":["arb",[["away","bravo",5494],["home","kilo",4504]],495],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control two-way arb\", \"actual\": [\"no arb\"], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 500], \"passed\": false}, {\"check\": \"boundary exactly fair book\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"boundary tie goes to first name\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"passed\": true}, {\"check\": \"control no arb\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"regression: best price selection\", \"actual\": [\"no arb\"], \"expected\": [\"arb\", [[\"away\", \"kilo\", 10861], [\"home\", \"delta\", 14138]], 307], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"arb\", [[\"away\", \"delta\", 5533], [\"home\", \"kilo\", 4465]], 404], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5494], [\"home\", \"kilo\", 4504]], 495], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.742,"exit_code":0,"observations":[{"actual":["arb",[["away","bravo",5000],["home","alpha",5000]],500],"check":"control two-way arb","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],500],"passed":true},{"actual":["no arb"],"check":"boundary exactly fair book","expected":["no arb"],"passed":true},{"actual":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"check":"boundary tie goes to first name","expected":["arb",[["away","bravo",5000],["home","alpha",5000]],1000],"passed":true},{"actual":["no arb"],"check":"control no arb","expected":["no arb"],"passed":true},{"actual":["arb",[["away","kilo",10861],["home","delta",14138]],307],"check":"regression: best price selection","expected":["arb",[["away","kilo",10861],["home","delta",14138]],307],"passed":true},{"actual":["no arb"],"check":"variant scenario 1","expected":["no arb"],"passed":true},{"actual":["arb",[["away","bravo",5494],["home","kilo",4504]],495],"check":"variant scenario 2","expected":["arb",[["away","bravo",5494],["home","kilo",4504]],495],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control two-way arb\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 500], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 500], \"passed\": true}, {\"check\": \"boundary exactly fair book\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"boundary tie goes to first name\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5000], [\"home\", \"alpha\", 5000]], 1000], \"passed\": true}, {\"check\": \"control no arb\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"regression: best price selection\", \"actual\": [\"arb\", [[\"away\", \"kilo\", 10861], [\"home\", \"delta\", 14138]], 307], \"expected\": [\"arb\", [[\"away\", \"kilo\", 10861], [\"home\", \"delta\", 14138]], 307], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [\"no arb\"], \"expected\": [\"no arb\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"arb\", [[\"away\", \"bravo\", 5494], [\"home\", \"kilo\", 4504]], 495], \"expected\": [\"arb\", [[\"away\", \"bravo\", 5494], [\"home\", \"kilo\", 4504]], 495], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}