{"abstract":"The stake split loses money on one outcome.","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].","contract_signature":"books, total_cents","evaluation_group":"w2-odds-conversion-surebet-stake-split","failed_approach":"Splitting the total equally only equalises returns when the prices are equal.","family":"w2-odds-conversion-surebet-stake-split-stake-proportion","id":"FA-84591","implementations":{"attempt":{"sha256":"0fc3b084115ae606d74a2e9d987b5d7469fc24e2e5f50d0a0eeb775f67f1bc0f","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 = total_cents // len(best)\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: stake proportion',\n   ([['kilo', 'home', '1.77'], ['bravo', 'home', '1.70'], ['alpha', 'away', '2.31']], 10000),\n   ['arb', [['away', 'alpha', 4338], ['home', 'kilo', 5661]], 20]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '3.03'],\n     ['kilo', 'home', '3.37'],\n     ['bravo', 'home', '3.49'],\n     ['alpha', 'draw', '2.44'],\n     ['kilo', 'draw', '2.76'],\n     ['bravo', 'away', '3.15'],\n     ['alpha', 'away', '3.31'],\n     ['bravo', 'home', '3.03']],\n    10000),\n   ['arb', [['away', 'alpha', 3176], ['draw', 'kilo', 3810], ['home', 'bravo', 3013]], 513]),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.80'],\n     ['delta', 'draw', '2.92'],\n     ['alpha', 'draw', '2.54'],\n     ['kilo', 'draw', '2.85'],\n     ['kilo', 'away', '3.32'],\n     ['delta', 'away', '3.86'],\n     ['alpha', 'away', '3.71']],\n    10000),\n   ['arb', [['away', 'delta', 2702], ['draw', 'delta', 3572], ['home', 'kilo', 3725]], 430])],\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: stake proportion',\n   ([['bravo', 'home', '2.41'],\n     ['delta', 'home', '2.58'],\n     ['delta', 'away', '1.71'],\n     ['kilo', 'away', '1.73'],\n     ['alpha', 'home', '2.41']],\n    25000),\n   ['arb', [['away', 'kilo', 14965], ['home', 'delta', 10034]], 888]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '2.55'],\n     ['bravo', 'home', '2.43'],\n     ['bravo', 'draw', '3.12'],\n     ['alpha', 'away', '3.68'],\n     ['delta', 'away', '4.14'],\n     ['kilo', 'away', '4.12']],\n    25000),\n   ['arb', [['away', 'delta', 6328], ['draw', 'bravo', 8397], ['home', 'alpha', 10274]], 1198]),\n  ('variant scenario 2',\n   ([['bravo', 'home', '1.81'],\n     ['delta', 'draw', '4.47'],\n     ['kilo', 'away', '4.69'],\n     ['bravo', 'away', '4.85'],\n     ['bravo', 'home', '1.81']],\n    9999),\n   ['arb', [['away', 'bravo', 2098], ['draw', 'delta', 2277], ['home', 'bravo', 5623]], 177])],\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: stake proportion',\n   ([['alpha', 'home', '4.00'],\n     ['delta', 'home', '4.38'],\n     ['bravo', 'home', '4.21'],\n     ['kilo', 'draw', '1.87'],\n     ['bravo', 'draw', '1.93'],\n     ['delta', 'draw', '1.87'],\n     ['bravo', 'away', '3.76'],\n     ['kilo', 'away', '4.13'],\n     ['delta', 'away', '4.11']],\n    25000),\n   ['arb', [['away', 'kilo', 6123], ['draw', 'bravo', 13103], ['home', 'delta', 5773]], 286]),\n  ('variant scenario 1',\n   ([['bravo', 'home', '3.11'],\n     ['delta', 'home', '3.18'],\n     ['delta', 'draw', '4.37'],\n     ['bravo', 'draw', '4.52'],\n     ['kilo', 'draw', '4.14'],\n     ['bravo', 'away', '2.15']],\n    25000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['alpha', 'home', '2.53'],\n     ['delta', 'home', '2.41'],\n     ['kilo', 'home', '2.24'],\n     ['bravo', 'away', '1.78'],\n     ['delta', 'away', '1.55']],\n    25000),\n   ['arb', [['away', 'bravo', 14675], ['home', 'alpha', 10324]], 1120])],\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: stake proportion',\n   ([['bravo', 'home', '2.35'],\n     ['kilo', 'home', '2.21'],\n     ['delta', 'home', '2.23'],\n     ['kilo', 'draw', '2.92'],\n     ['bravo', 'draw', '3.06'],\n     ['alpha', 'draw', '2.87'],\n     ['delta', 'away', '4.09'],\n     ['bravo', 'away', '4.25'],\n     ['alpha', 'away', '4.23']],\n    10000),\n   ['arb', [['away', 'bravo', 2382], ['draw', 'bravo', 3308], ['home', 'bravo', 4308]], 124]),\n  ('variant scenario 1',\n   ([['delta', 'home', '1.77'],\n     ['alpha', 'home', '1.75'],\n     ['bravo', 'home', '1.66'],\n     ['bravo', 'away', '2.34'],\n     ['kilo', 'away', '2.44'],\n     ['delta', 'away', '2.39']],\n    9999),\n   ['arb', [['away', 'kilo', 4203], ['home', 'delta', 5795]], 257]),\n  ('variant scenario 2',\n   ([['delta', 'home', '1.88'],\n     ['alpha', 'home', '2.19'],\n     ['bravo', 'home', '2.04'],\n     ['kilo', 'draw', '5.15'],\n     ['alpha', 'away', '2.93']],\n    10000),\n   ['arb', [['away', 'alpha', 3440], ['draw', 'kilo', 1957], ['home', 'alpha', 4602]], 79])],\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: stake proportion',\n   ([['kilo', 'home', '2.14'],\n     ['bravo', 'home', '2.12'],\n     ['alpha', 'home', '1.97'],\n     ['delta', 'away', '1.68'],\n     ['bravo', 'away', '1.77'],\n     ['kilo', 'away', '1.89']],\n    25000),\n   ['arb', [['away', 'kilo', 13275], ['home', 'kilo', 11724]], 90]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '2.52'],\n     ['bravo', 'home', '2.60'],\n     ['delta', 'draw', '2.13'],\n     ['kilo', 'away', '4.85'],\n     ['alpha', 'away', '4.61']],\n    10000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['bravo', 'home', '2.64'],\n     ['kilo', 'home', '2.42'],\n     ['delta', 'home', '2.49'],\n     ['bravo', 'away', '1.55']],\n    25000),\n   ['no arb'])]]\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":"814f220cf92bb541738e8d95793884755452d99521f1099b405cffc7d7685004","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 * d / sum(x for x, _ in best.values()))\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: stake proportion',\n   ([['kilo', 'home', '1.77'], ['bravo', 'home', '1.70'], ['alpha', 'away', '2.31']], 10000),\n   ['arb', [['away', 'alpha', 4338], ['home', 'kilo', 5661]], 20]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '3.03'],\n     ['kilo', 'home', '3.37'],\n     ['bravo', 'home', '3.49'],\n     ['alpha', 'draw', '2.44'],\n     ['kilo', 'draw', '2.76'],\n     ['bravo', 'away', '3.15'],\n     ['alpha', 'away', '3.31'],\n     ['bravo', 'home', '3.03']],\n    10000),\n   ['arb', [['away', 'alpha', 3176], ['draw', 'kilo', 3810], ['home', 'bravo', 3013]], 513]),\n  ('variant scenario 2',\n   ([['kilo', 'home', '2.80'],\n     ['delta', 'draw', '2.92'],\n     ['alpha', 'draw', '2.54'],\n     ['kilo', 'draw', '2.85'],\n     ['kilo', 'away', '3.32'],\n     ['delta', 'away', '3.86'],\n     ['alpha', 'away', '3.71']],\n    10000),\n   ['arb', [['away', 'delta', 2702], ['draw', 'delta', 3572], ['home', 'kilo', 3725]], 430])],\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: stake proportion',\n   ([['bravo', 'home', '2.41'],\n     ['delta', 'home', '2.58'],\n     ['delta', 'away', '1.71'],\n     ['kilo', 'away', '1.73'],\n     ['alpha', 'home', '2.41']],\n    25000),\n   ['arb', [['away', 'kilo', 14965], ['home', 'delta', 10034]], 888]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '2.55'],\n     ['bravo', 'home', '2.43'],\n     ['bravo', 'draw', '3.12'],\n     ['alpha', 'away', '3.68'],\n     ['delta', 'away', '4.14'],\n     ['kilo', 'away', '4.12']],\n    25000),\n   ['arb', [['away', 'delta', 6328], ['draw', 'bravo', 8397], ['home', 'alpha', 10274]], 1198]),\n  ('variant scenario 2',\n   ([['bravo', 'home', '1.81'],\n     ['delta', 'draw', '4.47'],\n     ['kilo', 'away', '4.69'],\n     ['bravo', 'away', '4.85'],\n     ['bravo', 'home', '1.81']],\n    9999),\n   ['arb', [['away', 'bravo', 2098], ['draw', 'delta', 2277], ['home', 'bravo', 5623]], 177])],\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: stake proportion',\n   ([['alpha', 'home', '4.00'],\n     ['delta', 'home', '4.38'],\n     ['bravo', 'home', '4.21'],\n     ['kilo', 'draw', '1.87'],\n     ['bravo', 'draw', '1.93'],\n     ['delta', 'draw', '1.87'],\n     ['bravo', 'away', '3.76'],\n     ['kilo', 'away', '4.13'],\n     ['delta', 'away', '4.11']],\n    25000),\n   ['arb', [['away', 'kilo', 6123], ['draw', 'bravo', 13103], ['home', 'delta', 5773]], 286]),\n  ('variant scenario 1',\n   ([['bravo', 'home', '3.11'],\n     ['delta', 'home', '3.18'],\n     ['delta', 'draw', '4.37'],\n     ['bravo', 'draw', '4.52'],\n     ['kilo', 'draw', '4.14'],\n     ['bravo', 'away', '2.15']],\n    25000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['alpha', 'home', '2.53'],\n     ['delta', 'home', '2.41'],\n     ['kilo', 'home', '2.24'],\n     ['bravo', 'away', '1.78'],\n     ['delta', 'away', '1.55']],\n    25000),\n   ['arb', [['away', 'bravo', 14675], ['home', 'alpha', 10324]], 1120])],\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: stake proportion',\n   ([['bravo', 'home', '2.35'],\n     ['kilo', 'home', '2.21'],\n     ['delta', 'home', '2.23'],\n     ['kilo', 'draw', '2.92'],\n     ['bravo', 'draw', '3.06'],\n     ['alpha', 'draw', '2.87'],\n     ['delta', 'away', '4.09'],\n     ['bravo', 'away', '4.25'],\n     ['alpha', 'away', '4.23']],\n    10000),\n   ['arb', [['away', 'bravo', 2382], ['draw', 'bravo', 3308], ['home', 'bravo', 4308]], 124]),\n  ('variant scenario 1',\n   ([['delta', 'home', '1.77'],\n     ['alpha', 'home', '1.75'],\n     ['bravo', 'home', '1.66'],\n     ['bravo', 'away', '2.34'],\n     ['kilo', 'away', '2.44'],\n     ['delta', 'away', '2.39']],\n    9999),\n   ['arb', [['away', 'kilo', 4203], ['home', 'delta', 5795]], 257]),\n  ('variant scenario 2',\n   ([['delta', 'home', '1.88'],\n     ['alpha', 'home', '2.19'],\n     ['bravo', 'home', '2.04'],\n     ['kilo', 'draw', '5.15'],\n     ['alpha', 'away', '2.93']],\n    10000),\n   ['arb', [['away', 'alpha', 3440], ['draw', 'kilo', 1957], ['home', 'alpha', 4602]], 79])],\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: stake proportion',\n   ([['kilo', 'home', '2.14'],\n     ['bravo', 'home', '2.12'],\n     ['alpha', 'home', '1.97'],\n     ['delta', 'away', '1.68'],\n     ['bravo', 'away', '1.77'],\n     ['kilo', 'away', '1.89']],\n    25000),\n   ['arb', [['away', 'kilo', 13275], ['home', 'kilo', 11724]], 90]),\n  ('variant scenario 1',\n   ([['alpha', 'home', '2.52'],\n     ['bravo', 'home', '2.60'],\n     ['delta', 'draw', '2.13'],\n     ['kilo', 'away', '4.85'],\n     ['alpha', 'away', '4.61']],\n    10000),\n   ['no arb']),\n  ('variant scenario 2',\n   ([['bravo', 'home', '2.64'],\n     ['kilo', 'home', '2.42'],\n     ['delta', 'home', '2.49'],\n     ['bravo', 'away', '1.55']],\n    25000),\n   ['no arb'])]]\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-stake-proportion","generated_at":"2026-09-29T14:50:32.463511+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.","root_cause":"Stakes are weighted by the decimal price.","sha256":"84693f3151cae7bc1f479996ea86779a782119f023628654fdb49b6c85f4fb8c","title":"Arbitrage stakes proportional to price instead of implied probability · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":44.753,"exit_code":1,"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","alpha",5000],["home","kilo",5000]],-1150],"check":"regression: stake proportion","expected":["arb",[["away","alpha",4338],["home","kilo",5661]],20],"passed":false},{"actual":["arb",[["away","alpha",3333],["draw","kilo",3333],["home","bravo",3333]],-800],"check":"variant scenario 1","expected":["arb",[["away","alpha",3176],["draw","kilo",3810],["home","bravo",3013]],513],"passed":false},{"actual":["arb",[["away","delta",3333],["draw","delta",3333],["home","kilo",3333]],-667],"check":"variant scenario 2","expected":["arb",[["away","delta",2702],["draw","delta",3572],["home","kilo",3725]],430],"passed":false}],"passed":false,"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: stake proportion\", \"actual\": [\"arb\", [[\"away\", \"alpha\", 5000], [\"home\", \"kilo\", 5000]], -1150], \"expected\": [\"arb\", [[\"away\", \"alpha\", 4338], [\"home\", \"kilo\", 5661]], 20], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"arb\", [[\"away\", \"alpha\", 3333], [\"draw\", \"kilo\", 3333], [\"home\", \"bravo\", 3333]], -800], \"expected\": [\"arb\", [[\"away\", \"alpha\", 3176], [\"draw\", \"kilo\", 3810], [\"home\", \"bravo\", 3013]], 513], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [\"arb\", [[\"away\", \"delta\", 3333], [\"draw\", \"delta\", 3333], [\"home\", \"kilo\", 3333]], -667], \"expected\": [\"arb\", [[\"away\", \"delta\", 2702], [\"draw\", \"delta\", 3572], [\"home\", \"kilo\", 3725]], 430], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.084,"exit_code":1,"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","alpha",5661],["home","kilo",4338]],-2321],"check":"regression: stake proportion","expected":["arb",[["away","alpha",4338],["home","kilo",5661]],20],"passed":false},{"actual":["arb",[["away","alpha",3462],["draw","kilo",2887],["home","bravo",3650]],-2031],"check":"variant scenario 1","expected":["arb",[["away","alpha",3176],["draw","kilo",3810],["home","bravo",3013]],513],"passed":false},{"actual":["arb",[["away","delta",4029],["draw","delta",3048],["home","kilo",2922]],-1818],"check":"variant scenario 2","expected":["arb",[["away","delta",2702],["draw","delta",3572],["home","kilo",3725]],430],"passed":false}],"passed":false,"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: stake proportion\", \"actual\": [\"arb\", [[\"away\", \"alpha\", 5661], [\"home\", \"kilo\", 4338]], -2321], \"expected\": [\"arb\", [[\"away\", \"alpha\", 4338], [\"home\", \"kilo\", 5661]], 20], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"arb\", [[\"away\", \"alpha\", 3462], [\"draw\", \"kilo\", 2887], [\"home\", \"bravo\", 3650]], -2031], \"expected\": [\"arb\", [[\"away\", \"alpha\", 3176], [\"draw\", \"kilo\", 3810], [\"home\", \"bravo\", 3013]], 513], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [\"arb\", [[\"away\", \"delta\", 4029], [\"draw\", \"delta\", 3048], [\"home\", \"kilo\", 2922]], -1818], \"expected\": [\"arb\", [[\"away\", \"delta\", 2702], [\"draw\", \"delta\", 3572], [\"home\", \"kilo\", 3725]], 430], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}