{"abstract":"A heavy longshot receives a negative or zero fair probability.","category":"Betting odds conversion","checks":8,"contract":"Remove the bookmaker margin from decimal prices (implied p = 1/d, book = sum p > 1 assumed). multiplicative: p / book. additive: p - (book - 1) / n; if any result is negative return \"additive infeasible\". power: p ** k with k found by 60 bisection steps on [1, 10] so that the powered probabilities sum to 1 (k = midpoint of the final bracket). Any other method returns \"invalid method\". Return the fair probabilities formatted \"%.4f\".","contract_signature":"prices, method","evaluation_group":"w2-odds-conversion-margin-removal-methods","failed_approach":"Clamping negatives to zero produces probabilities that no longer sum to one.","family":"w2-odds-conversion-margin-removal-methods-additive-feasibility","id":"FA-84446","implementations":{"attempt":{"sha256":"a4c9797ef5b7db03d80b339f763fd95211215c5a8024407c938fa8d125794cce","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prices, method):\n    ps = [1 / float(d) for d in prices]\n    book = sum(ps)\n    n = len(ps)\n    if method == 'multiplicative':\n        fair = [p / book for p in ps]\n    elif method == 'additive':\n        fair = [p - (book - 1) / n for p in ps]\n        fair = [max(0.0, x) for x in fair]\n    elif method == 'power':\n        lo, hi = 1.0, 10.0\n        for _ in range(60):\n            mid = (lo + hi) / 2\n            if sum(p ** mid for p in ps) > 1:\n                lo = mid\n            else:\n                hi = mid\n        k = (lo + hi) / 2\n        fair = [p ** k for p in ps]\n    else:\n        return 'invalid method'\n    return ['%.4f' % x for x in fair]\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 multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['3.86', '4.27', '33.20', '1.56', '33.31'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['1.86', '53.99', '2.05'], 'multiplicative'),\n   ['0.5150', '0.0177', '0.4673']),\n  ('variant scenario 2',\n   (['13.07', '7.90', '2.08', '2.47'], 'additive'),\n   ['0.0543', '0.1044', '0.4586', '0.3827'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['1.49', '2.27', '23.29'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1', (['2.67', '1.32'], 'additive'), ['0.3085', '0.6915']),\n  ('variant scenario 2',\n   (['5.54', '5.02', '7.65', '3.05', '4.02'], 'power'),\n   ['0.1639', '0.1818', '0.1165', '0.3078', '0.2299'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['2.82', '46.21', '2.73', '2.34'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['2.03', '5.34', '4.26', '6.91'], 'power'),\n   ['0.4762', '0.1728', '0.2190', '0.1319']),\n  ('variant scenario 2', (['1.74', '2.07'], 'additive'), ['0.5458', '0.4542'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['29.25', '11.46', '1.90', '1.91'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['4.98', '2.95', '43.55', '3.16', '6.92'], 'multiplicative'),\n   ['0.1962', '0.3311', '0.0224', '0.3091', '0.1412']),\n  ('variant scenario 2',\n   (['4.10', '6.43', '3.04', '2.92'], 'additive'),\n   ['0.2262', '0.1378', '0.3112', '0.3248'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['35.15', '1.83', '1.71'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1', (['14.47', '1.05'], 'power'), ['0.0524', '0.9476']),\n  ('variant scenario 2',\n   (['5.70', '3.60', '5.75', '5.69', '2.89'], 'power'),\n   ['0.1480', '0.2451', '0.1466', '0.1483', '0.3120'])]]\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":"7dc8cce11cb0276324a12f05e2f9d786ba55bb99b0959881fc31cb56dd610890","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prices, method):\n    ps = [1 / float(d) for d in prices]\n    book = sum(ps)\n    n = len(ps)\n    if method == 'multiplicative':\n        fair = [p / book for p in ps]\n    elif method == 'additive':\n        fair = [p - (book - 1) / n for p in ps]\n    elif method == 'power':\n        lo, hi = 1.0, 10.0\n        for _ in range(60):\n            mid = (lo + hi) / 2\n            if sum(p ** mid for p in ps) > 1:\n                lo = mid\n            else:\n                hi = mid\n        k = (lo + hi) / 2\n        fair = [p ** k for p in ps]\n    else:\n        return 'invalid method'\n    return ['%.4f' % x for x in fair]\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 multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['3.86', '4.27', '33.20', '1.56', '33.31'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['1.86', '53.99', '2.05'], 'multiplicative'),\n   ['0.5150', '0.0177', '0.4673']),\n  ('variant scenario 2',\n   (['13.07', '7.90', '2.08', '2.47'], 'additive'),\n   ['0.0543', '0.1044', '0.4586', '0.3827'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['1.49', '2.27', '23.29'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1', (['2.67', '1.32'], 'additive'), ['0.3085', '0.6915']),\n  ('variant scenario 2',\n   (['5.54', '5.02', '7.65', '3.05', '4.02'], 'power'),\n   ['0.1639', '0.1818', '0.1165', '0.3078', '0.2299'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['2.82', '46.21', '2.73', '2.34'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['2.03', '5.34', '4.26', '6.91'], 'power'),\n   ['0.4762', '0.1728', '0.2190', '0.1319']),\n  ('variant scenario 2', (['1.74', '2.07'], 'additive'), ['0.5458', '0.4542'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['29.25', '11.46', '1.90', '1.91'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1',\n   (['4.98', '2.95', '43.55', '3.16', '6.92'], 'multiplicative'),\n   ['0.1962', '0.3311', '0.0224', '0.3091', '0.1412']),\n  ('variant scenario 2',\n   (['4.10', '6.43', '3.04', '2.92'], 'additive'),\n   ['0.2262', '0.1378', '0.3112', '0.3248'])],\n [('control multiplicative', (['1.80', '2.00'], 'multiplicative'), ['0.5263', '0.4737']),\n  ('control additive', (['1.80', '2.00'], 'additive'), ['0.5278', '0.4722']),\n  ('control power', (['1.80', '2.00'], 'power'), ['0.5285', '0.4715']),\n  ('boundary additive longshot',\n   (['1.01', '15.00', '100.00', '100.00'], 'additive'),\n   'additive infeasible'),\n  ('boundary unknown method', (['1.80', '2.00'], 'shin'), 'invalid method'),\n  ('regression: additive feasibility',\n   (['35.15', '1.83', '1.71'], 'additive'),\n   'additive infeasible'),\n  ('variant scenario 1', (['14.47', '1.05'], 'power'), ['0.0524', '0.9476']),\n  ('variant scenario 2',\n   (['5.70', '3.60', '5.75', '5.69', '2.89'], 'power'),\n   ['0.1480', '0.2451', '0.1466', '0.1483', '0.3120'])]]\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-margin-removal-methods-additive-feasibility","generated_at":"2026-09-29T14:50:31.055088+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pricing models strip margins differently; favourite-longshot bias makes the method matter.","root_cause":"The additive result is not checked for negative probabilities.","sha256":"02de5a7f74b24e4f4715488f2ab838b318a8a44083d627dc18ed594381eb8b6e","title":"Negative additive probabilities returned or clamped · 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":39.951,"exit_code":1,"observations":[{"actual":["0.5263","0.4737"],"check":"control multiplicative","expected":["0.5263","0.4737"],"passed":true},{"actual":["0.5278","0.4722"],"check":"control additive","expected":["0.5278","0.4722"],"passed":true},{"actual":["0.5285","0.4715"],"check":"control power","expected":["0.5285","0.4715"],"passed":true},{"actual":["0.9709","0.0475","0.0000","0.0000"],"check":"boundary additive longshot","expected":"additive infeasible","passed":false},{"actual":"invalid method","check":"boundary unknown method","expected":"invalid method","passed":true},{"actual":["0.2202","0.1953","0.0000","0.6021","0.0000"],"check":"regression: additive feasibility","expected":"additive infeasible","passed":false},{"actual":["0.5150","0.0177","0.4673"],"check":"variant scenario 1","expected":["0.5150","0.0177","0.4673"],"passed":true},{"actual":["0.0543","0.1044","0.4586","0.3827"],"check":"variant scenario 2","expected":["0.0543","0.1044","0.4586","0.3827"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control multiplicative\", \"actual\": [\"0.5263\", \"0.4737\"], \"expected\": [\"0.5263\", \"0.4737\"], \"passed\": true}, {\"check\": \"control additive\", \"actual\": [\"0.5278\", \"0.4722\"], \"expected\": [\"0.5278\", \"0.4722\"], \"passed\": true}, {\"check\": \"control power\", \"actual\": [\"0.5285\", \"0.4715\"], \"expected\": [\"0.5285\", \"0.4715\"], \"passed\": true}, {\"check\": \"boundary additive longshot\", \"actual\": [\"0.9709\", \"0.0475\", \"0.0000\", \"0.0000\"], \"expected\": \"additive infeasible\", \"passed\": false}, {\"check\": \"boundary unknown method\", \"actual\": \"invalid method\", \"expected\": \"invalid method\", \"passed\": true}, {\"check\": \"regression: additive feasibility\", \"actual\": [\"0.2202\", \"0.1953\", \"0.0000\", \"0.6021\", \"0.0000\"], \"expected\": \"additive infeasible\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"0.5150\", \"0.0177\", \"0.4673\"], \"expected\": [\"0.5150\", \"0.0177\", \"0.4673\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"0.0543\", \"0.1044\", \"0.4586\", \"0.3827\"], \"expected\": [\"0.0543\", \"0.1044\", \"0.4586\", \"0.3827\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.146,"exit_code":1,"observations":[{"actual":["0.5263","0.4737"],"check":"control multiplicative","expected":["0.5263","0.4737"],"passed":true},{"actual":["0.5278","0.4722"],"check":"control additive","expected":["0.5278","0.4722"],"passed":true},{"actual":["0.5285","0.4715"],"check":"control power","expected":["0.5285","0.4715"],"passed":true},{"actual":["0.9709","0.0475","-0.0092","-0.0092"],"check":"boundary additive longshot","expected":"additive infeasible","passed":false},{"actual":"invalid method","check":"boundary unknown method","expected":"invalid method","passed":true},{"actual":["0.2202","0.1953","-0.0088","0.6021","-0.0089"],"check":"regression: additive feasibility","expected":"additive infeasible","passed":false},{"actual":["0.5150","0.0177","0.4673"],"check":"variant scenario 1","expected":["0.5150","0.0177","0.4673"],"passed":true},{"actual":["0.0543","0.1044","0.4586","0.3827"],"check":"variant scenario 2","expected":["0.0543","0.1044","0.4586","0.3827"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control multiplicative\", \"actual\": [\"0.5263\", \"0.4737\"], \"expected\": [\"0.5263\", \"0.4737\"], \"passed\": true}, {\"check\": \"control additive\", \"actual\": [\"0.5278\", \"0.4722\"], \"expected\": [\"0.5278\", \"0.4722\"], \"passed\": true}, {\"check\": \"control power\", \"actual\": [\"0.5285\", \"0.4715\"], \"expected\": [\"0.5285\", \"0.4715\"], \"passed\": true}, {\"check\": \"boundary additive longshot\", \"actual\": [\"0.9709\", \"0.0475\", \"-0.0092\", \"-0.0092\"], \"expected\": \"additive infeasible\", \"passed\": false}, {\"check\": \"boundary unknown method\", \"actual\": \"invalid method\", \"expected\": \"invalid method\", \"passed\": true}, {\"check\": \"regression: additive feasibility\", \"actual\": [\"0.2202\", \"0.1953\", \"-0.0088\", \"0.6021\", \"-0.0089\"], \"expected\": \"additive infeasible\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"0.5150\", \"0.0177\", \"0.4673\"], \"expected\": [\"0.5150\", \"0.0177\", \"0.4673\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"0.0543\", \"0.1044\", \"0.4586\", \"0.3827\"], \"expected\": [\"0.0543\", \"0.1044\", \"0.4586\", \"0.3827\"], \"passed\": true}], \"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."}}