{"abstract":"A losing lay at 4.00 costs only the backer stake.","category":"Betting odds conversion","checks":7,"contract":"Betting exchange settlement. bets rows are [market, side, stake_cents, price, won] where won says whether the bet won. Back: win profit floor(stake * (price - 1)), loss -stake. Lay: win +stake, loss -ceil(stake * (price - 1)) (the liability). Commission is charged per market on the market net profit only when that net is positive, at rate_pct percent rounded half up to a cent. Return [total net after commission, total commission] in cents.","evaluation_group":"w2-odds-conversion-exchange-market-commission","failed_approach":"Charging stake * price includes the backer stake in the liability.","family":"w2-odds-conversion-exchange-market-commission-lay-liability","id":"FA-84536","implementations":{"attempt":{"sha256":"7d16abe7989810b5147fd03ac7b16763065ff5a34a4cac7851434b606f750866","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(bets, rate_pct):\n    nets = {}\n    for market, side, stake, price, won in bets:\n        p = Fraction(price)\n        if side == 'back':\n            pl = math.floor(stake * (p - 1)) if won else -stake\n        else:\n            pl = stake if won else -math.ceil(stake * p)\n        nets[market] = nets.get(market, 0) + pl\n    comm = 0\n    for m, net in nets.items():\n        if net > 0:\n            comm += math.floor(net * Fraction(rate_pct) / 100 + Fraction(1, 2))\n    return [sum(nets.values()) - comm, comm]\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 single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'back', 2000, '3.91', True],\n     ['m3', 'back', 1000, '4.34', True],\n     ['m2', 'back', 1000, '5.86', True],\n     ['m3', 'lay', 2000, '1.49', False]],\n    '6.5'),\n   [12192, 848]),\n  ('variant scenario 1',\n   ([['m1', 'back', 2000, '5.34', True],\n     ['m1', 'back', 100, '2.32', True],\n     ['m2', 'lay', 1000, '7.42', False],\n     ['m2', 'lay', 1000, '6.91', False],\n     ['m2', 'lay', 2000, '4.87', True]],\n    '6.5'),\n   [-2091, 573]),\n  ('variant scenario 2',\n   ([['m2', 'back', 2000, '1.48', False],\n     ['m2', 'back', 250, '5.52', False],\n     ['m2', 'back', 1000, '7.14', True],\n     ['m1', 'lay', 777, '7.92', False]],\n    '6.5'),\n   [-1740, 253])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'lay', 777, '7.74', False], ['m2', 'lay', 2000, '6.02', True]], '5'),\n   [-3237, 0]),\n  ('variant scenario 1', ([['m1', 'lay', 1000, '3.82', False]], '5'), [-2820, 0]),\n  ('variant scenario 2',\n   ([['m3', 'back', 250, '2.61', True], ['m2', 'lay', 250, '7.61', True]], '2'),\n   [639, 13])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m1', 'lay', 2000, '7.65', False],\n     ['m1', 'back', 100, '7.65', True],\n     ['m2', 'lay', 250, '3.87', True],\n     ['m3', 'back', 250, '7.51', True]],\n    '5'),\n   [-10852, 94]),\n  ('variant scenario 1',\n   ([['m1', 'back', 777, '2.00', True],\n     ['m3', 'lay', 100, '3.56', True],\n     ['m1', 'back', 100, '7.20', False]],\n    '2'),\n   [761, 16]),\n  ('variant scenario 2', ([['m3', 'lay', 2000, '3.18', True]], '2'), [1960, 40])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'lay', 1000, '5.16', True],\n     ['m3', 'back', 100, '3.04', True],\n     ['m1', 'back', 2000, '5.82', False],\n     ['m3', 'lay', 250, '3.59', False],\n     ['m1', 'lay', 2000, '3.53', True]],\n    '2'),\n   [545, 11]),\n  ('variant scenario 1', ([['m1', 'back', 100, '6.47', True]], '2'), [536, 11]),\n  ('variant scenario 2',\n   ([['m2', 'lay', 2000, '7.84', True],\n     ['m1', 'back', 250, '6.18', False],\n     ['m2', 'back', 100, '7.05', True]],\n    '2'),\n   [2303, 52])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'back', 2000, '1.66', False],\n     ['m3', 'lay', 2000, '7.57', True],\n     ['m2', 'back', 250, '5.20', False],\n     ['m3', 'back', 100, '7.50', True],\n     ['m3', 'lay', 250, '2.34', False]],\n    '2'),\n   [19, 46]),\n  ('variant scenario 1', ([['m1', 'lay', 100, '7.27', True]], '2'), [98, 2]),\n  ('variant scenario 2', ([['m1', 'back', 777, '6.40', True]], '5'), [3985, 210])]]\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":"5b6fa033f5bc89f4f83127d4f73d36e810b1ae30c601f8854905dfd06761a757","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(bets, rate_pct):\n    nets = {}\n    for market, side, stake, price, won in bets:\n        p = Fraction(price)\n        if side == 'back':\n            pl = math.floor(stake * (p - 1)) if won else -stake\n        else:\n            pl = stake if won else -stake\n        nets[market] = nets.get(market, 0) + pl\n    comm = 0\n    for m, net in nets.items():\n        if net > 0:\n            comm += math.floor(net * Fraction(rate_pct) / 100 + Fraction(1, 2))\n    return [sum(nets.values()) - comm, comm]\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 single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'back', 2000, '3.91', True],\n     ['m3', 'back', 1000, '4.34', True],\n     ['m2', 'back', 1000, '5.86', True],\n     ['m3', 'lay', 2000, '1.49', False]],\n    '6.5'),\n   [12192, 848]),\n  ('variant scenario 1',\n   ([['m1', 'back', 2000, '5.34', True],\n     ['m1', 'back', 100, '2.32', True],\n     ['m2', 'lay', 1000, '7.42', False],\n     ['m2', 'lay', 1000, '6.91', False],\n     ['m2', 'lay', 2000, '4.87', True]],\n    '6.5'),\n   [-2091, 573]),\n  ('variant scenario 2',\n   ([['m2', 'back', 2000, '1.48', False],\n     ['m2', 'back', 250, '5.52', False],\n     ['m2', 'back', 1000, '7.14', True],\n     ['m1', 'lay', 777, '7.92', False]],\n    '6.5'),\n   [-1740, 253])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'lay', 777, '7.74', False], ['m2', 'lay', 2000, '6.02', True]], '5'),\n   [-3237, 0]),\n  ('variant scenario 1', ([['m1', 'lay', 1000, '3.82', False]], '5'), [-2820, 0]),\n  ('variant scenario 2',\n   ([['m3', 'back', 250, '2.61', True], ['m2', 'lay', 250, '7.61', True]], '2'),\n   [639, 13])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m1', 'lay', 2000, '7.65', False],\n     ['m1', 'back', 100, '7.65', True],\n     ['m2', 'lay', 250, '3.87', True],\n     ['m3', 'back', 250, '7.51', True]],\n    '5'),\n   [-10852, 94]),\n  ('variant scenario 1',\n   ([['m1', 'back', 777, '2.00', True],\n     ['m3', 'lay', 100, '3.56', True],\n     ['m1', 'back', 100, '7.20', False]],\n    '2'),\n   [761, 16]),\n  ('variant scenario 2', ([['m3', 'lay', 2000, '3.18', True]], '2'), [1960, 40])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'lay', 1000, '5.16', True],\n     ['m3', 'back', 100, '3.04', True],\n     ['m1', 'back', 2000, '5.82', False],\n     ['m3', 'lay', 250, '3.59', False],\n     ['m1', 'lay', 2000, '3.53', True]],\n    '2'),\n   [545, 11]),\n  ('variant scenario 1', ([['m1', 'back', 100, '6.47', True]], '2'), [536, 11]),\n  ('variant scenario 2',\n   ([['m2', 'lay', 2000, '7.84', True],\n     ['m1', 'back', 250, '6.18', False],\n     ['m2', 'back', 100, '7.05', True]],\n    '2'),\n   [2303, 52])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'back', 2000, '1.66', False],\n     ['m3', 'lay', 2000, '7.57', True],\n     ['m2', 'back', 250, '5.20', False],\n     ['m3', 'back', 100, '7.50', True],\n     ['m3', 'lay', 250, '2.34', False]],\n    '2'),\n   [19, 46]),\n  ('variant scenario 1', ([['m1', 'lay', 100, '7.27', True]], '2'), [98, 2]),\n  ('variant scenario 2', ([['m1', 'back', 777, '6.40', True]], '5'), [3985, 210])]]\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":"a19d911fdb4bfef16695f0908eb0062337f7d954e61184176bb73b00773661b6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(bets, rate_pct):\n    nets = {}\n    for market, side, stake, price, won in bets:\n        p = Fraction(price)\n        if side == 'back':\n            pl = math.floor(stake * (p - 1)) if won else -stake\n        else:\n            pl = stake if won else -math.ceil(stake * (p - 1))\n        nets[market] = nets.get(market, 0) + pl\n    comm = 0\n    for m, net in nets.items():\n        if net > 0:\n            comm += math.floor(net * Fraction(rate_pct) / 100 + Fraction(1, 2))\n    return [sum(nets.values()) - comm, comm]\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 single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'back', 2000, '3.91', True],\n     ['m3', 'back', 1000, '4.34', True],\n     ['m2', 'back', 1000, '5.86', True],\n     ['m3', 'lay', 2000, '1.49', False]],\n    '6.5'),\n   [12192, 848]),\n  ('variant scenario 1',\n   ([['m1', 'back', 2000, '5.34', True],\n     ['m1', 'back', 100, '2.32', True],\n     ['m2', 'lay', 1000, '7.42', False],\n     ['m2', 'lay', 1000, '6.91', False],\n     ['m2', 'lay', 2000, '4.87', True]],\n    '6.5'),\n   [-2091, 573]),\n  ('variant scenario 2',\n   ([['m2', 'back', 2000, '1.48', False],\n     ['m2', 'back', 250, '5.52', False],\n     ['m2', 'back', 1000, '7.14', True],\n     ['m1', 'lay', 777, '7.92', False]],\n    '6.5'),\n   [-1740, 253])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'lay', 777, '7.74', False], ['m2', 'lay', 2000, '6.02', True]], '5'),\n   [-3237, 0]),\n  ('variant scenario 1', ([['m1', 'lay', 1000, '3.82', False]], '5'), [-2820, 0]),\n  ('variant scenario 2',\n   ([['m3', 'back', 250, '2.61', True], ['m2', 'lay', 250, '7.61', True]], '2'),\n   [639, 13])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m1', 'lay', 2000, '7.65', False],\n     ['m1', 'back', 100, '7.65', True],\n     ['m2', 'lay', 250, '3.87', True],\n     ['m3', 'back', 250, '7.51', True]],\n    '5'),\n   [-10852, 94]),\n  ('variant scenario 1',\n   ([['m1', 'back', 777, '2.00', True],\n     ['m3', 'lay', 100, '3.56', True],\n     ['m1', 'back', 100, '7.20', False]],\n    '2'),\n   [761, 16]),\n  ('variant scenario 2', ([['m3', 'lay', 2000, '3.18', True]], '2'), [1960, 40])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m3', 'lay', 1000, '5.16', True],\n     ['m3', 'back', 100, '3.04', True],\n     ['m1', 'back', 2000, '5.82', False],\n     ['m3', 'lay', 250, '3.59', False],\n     ['m1', 'lay', 2000, '3.53', True]],\n    '2'),\n   [545, 11]),\n  ('variant scenario 1', ([['m1', 'back', 100, '6.47', True]], '2'), [536, 11]),\n  ('variant scenario 2',\n   ([['m2', 'lay', 2000, '7.84', True],\n     ['m1', 'back', 250, '6.18', False],\n     ['m2', 'back', 100, '7.05', True]],\n    '2'),\n   [2303, 52])],\n [('control single back winner', ([['m1', 'back', 1000, '3.00', True]], '5'), [1900, 100]),\n  ('boundary hedged market nets out',\n   ([['m1', 'back', 1000, '3.00', True], ['m1', 'lay', 1000, '2.50', False]], '5'),\n   [475, 25]),\n  ('control lay winner', ([['m2', 'lay', 1000, '4.00', True]], '5'), [950, 50]),\n  ('boundary losing market no commission',\n   ([['m1', 'back', 1000, '3.00', False], ['m1', 'lay', 500, '2.00', True]], '5'),\n   [-500, 0]),\n  ('regression: lay liability',\n   ([['m2', 'back', 2000, '1.66', False],\n     ['m3', 'lay', 2000, '7.57', True],\n     ['m2', 'back', 250, '5.20', False],\n     ['m3', 'back', 100, '7.50', True],\n     ['m3', 'lay', 250, '2.34', False]],\n    '2'),\n   [19, 46]),\n  ('variant scenario 1', ([['m1', 'lay', 100, '7.27', True]], '2'), [98, 2]),\n  ('variant scenario 2', ([['m1', 'back', 777, '6.40', True]], '5'), [3985, 210])]]\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-exchange-market-commission-lay-liability","generated_at":"2026-09-29T14:50:31.854377+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Exchanges charge commission on net market winnings, not per winning bet.","repair":"Charge the liability stake * (price - 1), rounded up to the cent.","root_cause":"The lay-loss branch subtracts the stake.","sha256":"3f58cfc9464aec1dcbe380682193b29a4bd57b01732e8079f2ea2d595238c5be","title":"Losing lay bet charged the stake instead of the liability · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.574,"exit_code":1,"observations":[{"actual":[1900,100],"check":"control single back winner","expected":[1900,100],"passed":true},{"actual":[-500,0],"check":"boundary hedged market nets out","expected":[475,25],"passed":false},{"actual":[950,50],"check":"control lay winner","expected":[950,50],"passed":true},{"actual":[-500,0],"check":"boundary losing market no commission","expected":[-500,0],"passed":true},{"actual":[10322,718],"check":"regression: lay liability","expected":[12192,848],"passed":false},{"actual":[-4091,573],"check":"variant scenario 1","expected":[-2091,573],"passed":false},{"actual":[-2517,253],"check":"variant scenario 2","expected":[-1740,253],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single back winner\", \"actual\": [1900, 100], \"expected\": [1900, 100], \"passed\": true}, {\"check\": \"boundary hedged market nets out\", \"actual\": [-500, 0], \"expected\": [475, 25], \"passed\": false}, {\"check\": \"control lay winner\", \"actual\": [950, 50], \"expected\": [950, 50], \"passed\": true}, {\"check\": \"boundary losing market no commission\", \"actual\": [-500, 0], \"expected\": [-500, 0], \"passed\": true}, {\"check\": \"regression: lay liability\", \"actual\": [10322, 718], \"expected\": [12192, 848], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [-4091, 573], \"expected\": [-2091, 573], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [-2517, 253], \"expected\": [-1740, 253], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.765,"exit_code":1,"observations":[{"actual":[1900,100],"check":"control single back winner","expected":[1900,100],"passed":true},{"actual":[950,50],"check":"boundary hedged market nets out","expected":[475,25],"passed":false},{"actual":[950,50],"check":"control lay winner","expected":[950,50],"passed":true},{"actual":[-500,0],"check":"boundary losing market no commission","expected":[-500,0],"passed":true},{"actual":[11239,781],"check":"regression: lay liability","expected":[12192,848],"passed":false},{"actual":[8239,573],"check":"variant scenario 1","expected":[-2091,573],"passed":false},{"actual":[2860,253],"check":"variant scenario 2","expected":[-1740,253],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single back winner\", \"actual\": [1900, 100], \"expected\": [1900, 100], \"passed\": true}, {\"check\": \"boundary hedged market nets out\", \"actual\": [950, 50], \"expected\": [475, 25], \"passed\": false}, {\"check\": \"control lay winner\", \"actual\": [950, 50], \"expected\": [950, 50], \"passed\": true}, {\"check\": \"boundary losing market no commission\", \"actual\": [-500, 0], \"expected\": [-500, 0], \"passed\": true}, {\"check\": \"regression: lay liability\", \"actual\": [11239, 781], \"expected\": [12192, 848], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [8239, 573], \"expected\": [-2091, 573], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [2860, 253], \"expected\": [-1740, 253], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.704,"exit_code":0,"observations":[{"actual":[1900,100],"check":"control single back winner","expected":[1900,100],"passed":true},{"actual":[475,25],"check":"boundary hedged market nets out","expected":[475,25],"passed":true},{"actual":[950,50],"check":"control lay winner","expected":[950,50],"passed":true},{"actual":[-500,0],"check":"boundary losing market no commission","expected":[-500,0],"passed":true},{"actual":[12192,848],"check":"regression: lay liability","expected":[12192,848],"passed":true},{"actual":[-2091,573],"check":"variant scenario 1","expected":[-2091,573],"passed":true},{"actual":[-1740,253],"check":"variant scenario 2","expected":[-1740,253],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single back winner\", \"actual\": [1900, 100], \"expected\": [1900, 100], \"passed\": true}, {\"check\": \"boundary hedged market nets out\", \"actual\": [475, 25], \"expected\": [475, 25], \"passed\": true}, {\"check\": \"control lay winner\", \"actual\": [950, 50], \"expected\": [950, 50], \"passed\": true}, {\"check\": \"boundary losing market no commission\", \"actual\": [-500, 0], \"expected\": [-500, 0], \"passed\": true}, {\"check\": \"regression: lay liability\", \"actual\": [12192, 848], \"expected\": [12192, 848], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [-2091, 573], \"expected\": [-2091, 573], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [-1740, 253], \"expected\": [-1740, 253], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}