{"abstract":"Covered calls report unbounded loss while naked short stock reports a finite loss.","category":"Options payoff and settlement","checks":8,"contract":"Inputs legs [kind C/P/S, strike (purchase price for stock S), signed qty, premium] and a multiplier. Expiry value V(S) = multiplier * sum(q*(intrinsic - premium)) for options and q*(S - price) for stock, in exact fractions. Breakpoints are 0 and every strike. Tail slope = V(top+1)-V(top). Max gain is None if the slope > 0 else the max over breakpoints; max loss is None if slope < 0 else the min. Breakevens are zeros at breakpoints and linear-interpolated sign changes between them and in the tail. Return [gain, loss, breakevens] rounded to 4.","evaluation_group":"w2-options_payoff_and_settlement-strategy-risk-profile","failed_approach":"Ignoring the tail entirely reports a finite loss for naked short calls.","family":"w2-options_payoff_and_settlement-strategy-risk-profile-unbounded-loss-detection","id":"FA-61491","implementations":{"attempt":{"sha256":"8fc89b9acb0c6b7e9df96ed8528055ea309c3f1491451e4b500f5b37943081a8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(legs, multiplier):\n    def value(S):\n        t = Fraction(0)\n        for kind, k, q, prem in legs:\n            p = Fraction(str(prem))\n            if kind == 'C':\n                t += q * (max(S - k, 0) - p)\n            elif kind == 'P':\n                t += q * (max(k - S, 0) - p)\n            else:\n                t += q * (S - k)\n        return t * multiplier\n    pts = sorted(set([0] + [leg[1] for leg in legs]))\n    top = pts[-1]\n    slope = value(top + 1) - value(top)\n    vals = [value(p) for p in pts]\n    gain = None if slope > 0 else max(vals)\n    loss = None if any(l[0] == 'C' and l[2] < 0 for l in legs) else min(vals)\n    bes = []\n    for a, b in zip(pts, pts[1:]):\n        va, vb = value(a), value(b)\n        if va == 0:\n            bes.append(Fraction(a))\n        elif va * vb < 0:\n            bes.append(a - va * (b - a) / (vb - va))\n    vt = value(top)\n    if vt == 0:\n        bes.append(Fraction(top))\n    elif vt * slope < 0:\n        bes.append(top - vt / slope)\n    def r4(x):\n        return None if x is None else float(round(x, 4))\n    return [r4(gain), r4(loss), [r4(x) for x in sorted(set(bes))]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression unbounded loss detection 1', [[['C', 90, -1, 3.4], ['C', 100, 1, 0.5], ['C', 115, -1, 5.1]], 100], [800.0, None, [98.0]]], ['regression unbounded loss detection 2', [[['S', 105, -1, 0.0]], 100], [10500.0, None, [105.0]]], ['partial repair probe 1', [[['P', 105, 1, 7.75], ['S', 90, 2, 0.0], ['C', 100, -2, 2.0]], 1], [21.25, -78.75, [78.75]]], ['partial repair probe 2', [[['C', 90, -1, 7.75], ['P', 120, 2, 1.25], ['P', 105, 1, 3.4], ['S', 95, 1, 0.0]], 100], [25185.0, -315.0, [118.425]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 100, -1, 0.5]], 100], [50.0, -9950.0, [99.5]]], ['normal control 2', [[['C', 100, 2, 0.5], ['P', 85, 2, 2.0]], 1], [None, -5.0, [82.5, 102.5]]]], [['regression unbounded loss detection 1', [[['S', 110, 1, 0.0], ['C', 110, -1, 7.75], ['C', 80, -1, 3.4]], 1], [-18.85, None, []]], ['regression unbounded loss detection 2', [[['P', 120, -1, 2.0], ['C', 95, -2, 7.75], ['C', 105, 1, 2.0], ['P', 80, -2, 3.4]], 1], [-2.7, None, []]], ['partial repair probe 1', [[['C', 120, 1, 7.75], ['P', 110, -1, 7.75], ['P', 85, -2, 3.4], ['C', 95, -1, 3.4]], 100], [-480.0, -26980.0, []]], ['partial repair probe 2', [[['S', 85, 1, 0.0], ['C', 110, -2, 3.4], ['S', 90, 1, 0.0]], 1], [51.8, -168.2, [84.1]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 115, 1, 7.75], ['P', 105, 1, 0.5], ['P', 85, -2, 5.1], ['S', 100, 1, 0.0]], 100], [None, -4805.0, [48.05]]], ['normal control 2', [[['P', 85, -1, 5.1], ['C', 110, 2, 5.1], ['P', 105, 1, 2.0]], 1], [None, -7.1, [97.9, 113.55]]]], [['regression unbounded loss detection 1', [[['C', 100, 1, 1.25], ['S', 80, -1, 0.0], ['C', 120, -1, 0.5]], 100], [7925.0, None, [79.25]]], ['regression unbounded loss detection 2', [[['S', 95, -2, 0.0], ['C', 95, -1, 2.0], ['C', 90, 1, 1.25]], 1], [190.75, None, [97.875]]], ['partial repair probe 1', [[['P', 105, -1, 5.1], ['P', 95, 1, 1.25], ['C', 100, -1, 1.25], ['C', 90, 2, 3.4]], 100], [None, -1170.0, [95.5667]]], ['partial repair probe 2', [[['P', 85, 1, 5.1], ['S', 110, 1, 0.0], ['C', 110, -1, 0.5]], 1], [-4.6, -29.6, []]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 105, 1, 1.25], ['C', 80, 2, 3.4]], 100], [None, 1695.0, []]], ['normal control 2', [[['P', 115, 1, 1.25], ['P', 90, -1, 1.25]], 1], [25.0, 0.0, [115.0]]]], [['regression unbounded loss detection 1', [[['C', 85, -2, 7.75], ['P', 100, 2, 1.25], ['S', 100, -2, 0.0], ['C', 95, 1, 3.4]], 100], [40960.0, None, [96.92]]], ['regression unbounded loss detection 2', [[['C', 100, -1, 7.75], ['C', 115, -2, 5.1], ['C', 110, 1, 7.75], ['P', 115, -2, 7.75]], 100], [1570.0, None, [104.3, 122.85]]], ['partial repair probe 1', [[['C', 105, -2, 1.25], ['P', 115, 1, 3.4], ['S', 115, 1, 0.0], ['C', 95, 1, 2.0]], 100], [710.0, -290.0, [97.9, 112.1]]], ['partial repair probe 2', [[['C', 115, -1, 2.0], ['P', 115, -2, 5.1], ['S', 120, 1, 0.0], ['C', 100, 1, 0.5]], 1], [None, -338.3, [109.575]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 95, 1, 1.25], ['S', 85, -2, 0.0], ['C', 110, 1, 2.0], ['C', 80, 2, 2.0]], 100], [None, 275.0, []]], ['normal control 2', [[['P', 95, 2, 0.5], ['P', 100, 1, 0.5], ['P', 115, -2, 7.75], ['S', 110, 1, 0.0]], 1], [None, -36.0, [108.6667]]]], [['regression unbounded loss detection 1', [[['C', 100, -2, 0.5], ['C', 100, -1, 0.5], ['P', 80, 1, 3.4], ['P', 110, 2, 0.5]], 100], [29710.0, None, [103.42]]], ['regression unbounded loss detection 2', [[['P', 100, -1, 0.5], ['C', 110, -1, 7.75], ['P', 95, 1, 2.0]], 1], [6.25, None, [116.25]]], ['partial repair probe 1', [[['C', 80, -1, 1.25], ['S', 115, 2, 0.0], ['P', 105, -1, 0.5], ['C', 100, 1, 2.0]], 1], [None, -335.25, [125.125]]], ['partial repair probe 2', [[['C', 80, -1, 5.1], ['S', 115, 1, 0.0], ['P', 100, -1, 5.1], ['P', 120, 2, 0.5]], 1], [34.2, -25.8, [107.1]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 85, 1, 7.75], ['C', 100, 1, 3.4], ['P', 110, -2, 3.4]], 1], [None, -139.35, [108.1167]]], ['normal control 2', [[['P', 90, -2, 2.0]], 1], [4.0, -176.0, [88.0]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*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":"57becafaec64bf46ef336583998478a6dd4fe88bb69a94e05ca66c338e077a67","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(legs, multiplier):\n    def value(S):\n        t = Fraction(0)\n        for kind, k, q, prem in legs:\n            p = Fraction(str(prem))\n            if kind == 'C':\n                t += q * (max(S - k, 0) - p)\n            elif kind == 'P':\n                t += q * (max(k - S, 0) - p)\n            else:\n                t += q * (S - k)\n        return t * multiplier\n    pts = sorted(set([0] + [leg[1] for leg in legs]))\n    top = pts[-1]\n    slope = value(top + 1) - value(top)\n    vals = [value(p) for p in pts]\n    gain = None if slope > 0 else max(vals)\n    loss = min(vals)\n    bes = []\n    for a, b in zip(pts, pts[1:]):\n        va, vb = value(a), value(b)\n        if va == 0:\n            bes.append(Fraction(a))\n        elif va * vb < 0:\n            bes.append(a - va * (b - a) / (vb - va))\n    vt = value(top)\n    if vt == 0:\n        bes.append(Fraction(top))\n    elif vt * slope < 0:\n        bes.append(top - vt / slope)\n    def r4(x):\n        return None if x is None else float(round(x, 4))\n    return [r4(gain), r4(loss), [r4(x) for x in sorted(set(bes))]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression unbounded loss detection 1', [[['C', 90, -1, 3.4], ['C', 100, 1, 0.5], ['C', 115, -1, 5.1]], 100], [800.0, None, [98.0]]], ['regression unbounded loss detection 2', [[['S', 105, -1, 0.0]], 100], [10500.0, None, [105.0]]], ['partial repair probe 1', [[['P', 105, 1, 7.75], ['S', 90, 2, 0.0], ['C', 100, -2, 2.0]], 1], [21.25, -78.75, [78.75]]], ['partial repair probe 2', [[['C', 90, -1, 7.75], ['P', 120, 2, 1.25], ['P', 105, 1, 3.4], ['S', 95, 1, 0.0]], 100], [25185.0, -315.0, [118.425]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 100, -1, 0.5]], 100], [50.0, -9950.0, [99.5]]], ['normal control 2', [[['C', 100, 2, 0.5], ['P', 85, 2, 2.0]], 1], [None, -5.0, [82.5, 102.5]]]], [['regression unbounded loss detection 1', [[['S', 110, 1, 0.0], ['C', 110, -1, 7.75], ['C', 80, -1, 3.4]], 1], [-18.85, None, []]], ['regression unbounded loss detection 2', [[['P', 120, -1, 2.0], ['C', 95, -2, 7.75], ['C', 105, 1, 2.0], ['P', 80, -2, 3.4]], 1], [-2.7, None, []]], ['partial repair probe 1', [[['C', 120, 1, 7.75], ['P', 110, -1, 7.75], ['P', 85, -2, 3.4], ['C', 95, -1, 3.4]], 100], [-480.0, -26980.0, []]], ['partial repair probe 2', [[['S', 85, 1, 0.0], ['C', 110, -2, 3.4], ['S', 90, 1, 0.0]], 1], [51.8, -168.2, [84.1]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 115, 1, 7.75], ['P', 105, 1, 0.5], ['P', 85, -2, 5.1], ['S', 100, 1, 0.0]], 100], [None, -4805.0, [48.05]]], ['normal control 2', [[['P', 85, -1, 5.1], ['C', 110, 2, 5.1], ['P', 105, 1, 2.0]], 1], [None, -7.1, [97.9, 113.55]]]], [['regression unbounded loss detection 1', [[['C', 100, 1, 1.25], ['S', 80, -1, 0.0], ['C', 120, -1, 0.5]], 100], [7925.0, None, [79.25]]], ['regression unbounded loss detection 2', [[['S', 95, -2, 0.0], ['C', 95, -1, 2.0], ['C', 90, 1, 1.25]], 1], [190.75, None, [97.875]]], ['partial repair probe 1', [[['P', 105, -1, 5.1], ['P', 95, 1, 1.25], ['C', 100, -1, 1.25], ['C', 90, 2, 3.4]], 100], [None, -1170.0, [95.5667]]], ['partial repair probe 2', [[['P', 85, 1, 5.1], ['S', 110, 1, 0.0], ['C', 110, -1, 0.5]], 1], [-4.6, -29.6, []]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 105, 1, 1.25], ['C', 80, 2, 3.4]], 100], [None, 1695.0, []]], ['normal control 2', [[['P', 115, 1, 1.25], ['P', 90, -1, 1.25]], 1], [25.0, 0.0, [115.0]]]], [['regression unbounded loss detection 1', [[['C', 85, -2, 7.75], ['P', 100, 2, 1.25], ['S', 100, -2, 0.0], ['C', 95, 1, 3.4]], 100], [40960.0, None, [96.92]]], ['regression unbounded loss detection 2', [[['C', 100, -1, 7.75], ['C', 115, -2, 5.1], ['C', 110, 1, 7.75], ['P', 115, -2, 7.75]], 100], [1570.0, None, [104.3, 122.85]]], ['partial repair probe 1', [[['C', 105, -2, 1.25], ['P', 115, 1, 3.4], ['S', 115, 1, 0.0], ['C', 95, 1, 2.0]], 100], [710.0, -290.0, [97.9, 112.1]]], ['partial repair probe 2', [[['C', 115, -1, 2.0], ['P', 115, -2, 5.1], ['S', 120, 1, 0.0], ['C', 100, 1, 0.5]], 1], [None, -338.3, [109.575]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 95, 1, 1.25], ['S', 85, -2, 0.0], ['C', 110, 1, 2.0], ['C', 80, 2, 2.0]], 100], [None, 275.0, []]], ['normal control 2', [[['P', 95, 2, 0.5], ['P', 100, 1, 0.5], ['P', 115, -2, 7.75], ['S', 110, 1, 0.0]], 1], [None, -36.0, [108.6667]]]], [['regression unbounded loss detection 1', [[['C', 100, -2, 0.5], ['C', 100, -1, 0.5], ['P', 80, 1, 3.4], ['P', 110, 2, 0.5]], 100], [29710.0, None, [103.42]]], ['regression unbounded loss detection 2', [[['P', 100, -1, 0.5], ['C', 110, -1, 7.75], ['P', 95, 1, 2.0]], 1], [6.25, None, [116.25]]], ['partial repair probe 1', [[['C', 80, -1, 1.25], ['S', 115, 2, 0.0], ['P', 105, -1, 0.5], ['C', 100, 1, 2.0]], 1], [None, -335.25, [125.125]]], ['partial repair probe 2', [[['C', 80, -1, 5.1], ['S', 115, 1, 0.0], ['P', 100, -1, 5.1], ['P', 120, 2, 0.5]], 1], [34.2, -25.8, [107.1]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 85, 1, 7.75], ['C', 100, 1, 3.4], ['P', 110, -2, 3.4]], 1], [None, -139.35, [108.1167]]], ['normal control 2', [[['P', 90, -2, 2.0]], 1], [4.0, -176.0, [88.0]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*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":"463b5f16cd7e52fc88739b83cb37f095ea4db961d5eb71ab57daff67351d3584","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(legs, multiplier):\n    def value(S):\n        t = Fraction(0)\n        for kind, k, q, prem in legs:\n            p = Fraction(str(prem))\n            if kind == 'C':\n                t += q * (max(S - k, 0) - p)\n            elif kind == 'P':\n                t += q * (max(k - S, 0) - p)\n            else:\n                t += q * (S - k)\n        return t * multiplier\n    pts = sorted(set([0] + [leg[1] for leg in legs]))\n    top = pts[-1]\n    slope = value(top + 1) - value(top)\n    vals = [value(p) for p in pts]\n    gain = None if slope > 0 else max(vals)\n    loss = None if slope < 0 else min(vals)\n    bes = []\n    for a, b in zip(pts, pts[1:]):\n        va, vb = value(a), value(b)\n        if va == 0:\n            bes.append(Fraction(a))\n        elif va * vb < 0:\n            bes.append(a - va * (b - a) / (vb - va))\n    vt = value(top)\n    if vt == 0:\n        bes.append(Fraction(top))\n    elif vt * slope < 0:\n        bes.append(top - vt / slope)\n    def r4(x):\n        return None if x is None else float(round(x, 4))\n    return [r4(gain), r4(loss), [r4(x) for x in sorted(set(bes))]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression unbounded loss detection 1', [[['C', 90, -1, 3.4], ['C', 100, 1, 0.5], ['C', 115, -1, 5.1]], 100], [800.0, None, [98.0]]], ['regression unbounded loss detection 2', [[['S', 105, -1, 0.0]], 100], [10500.0, None, [105.0]]], ['partial repair probe 1', [[['P', 105, 1, 7.75], ['S', 90, 2, 0.0], ['C', 100, -2, 2.0]], 1], [21.25, -78.75, [78.75]]], ['partial repair probe 2', [[['C', 90, -1, 7.75], ['P', 120, 2, 1.25], ['P', 105, 1, 3.4], ['S', 95, 1, 0.0]], 100], [25185.0, -315.0, [118.425]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 100, -1, 0.5]], 100], [50.0, -9950.0, [99.5]]], ['normal control 2', [[['C', 100, 2, 0.5], ['P', 85, 2, 2.0]], 1], [None, -5.0, [82.5, 102.5]]]], [['regression unbounded loss detection 1', [[['S', 110, 1, 0.0], ['C', 110, -1, 7.75], ['C', 80, -1, 3.4]], 1], [-18.85, None, []]], ['regression unbounded loss detection 2', [[['P', 120, -1, 2.0], ['C', 95, -2, 7.75], ['C', 105, 1, 2.0], ['P', 80, -2, 3.4]], 1], [-2.7, None, []]], ['partial repair probe 1', [[['C', 120, 1, 7.75], ['P', 110, -1, 7.75], ['P', 85, -2, 3.4], ['C', 95, -1, 3.4]], 100], [-480.0, -26980.0, []]], ['partial repair probe 2', [[['S', 85, 1, 0.0], ['C', 110, -2, 3.4], ['S', 90, 1, 0.0]], 1], [51.8, -168.2, [84.1]]], ['boundary control 1', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['boundary control 2', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['normal control 1', [[['P', 115, 1, 7.75], ['P', 105, 1, 0.5], ['P', 85, -2, 5.1], ['S', 100, 1, 0.0]], 100], [None, -4805.0, [48.05]]], ['normal control 2', [[['P', 85, -1, 5.1], ['C', 110, 2, 5.1], ['P', 105, 1, 2.0]], 1], [None, -7.1, [97.9, 113.55]]]], [['regression unbounded loss detection 1', [[['C', 100, 1, 1.25], ['S', 80, -1, 0.0], ['C', 120, -1, 0.5]], 100], [7925.0, None, [79.25]]], ['regression unbounded loss detection 2', [[['S', 95, -2, 0.0], ['C', 95, -1, 2.0], ['C', 90, 1, 1.25]], 1], [190.75, None, [97.875]]], ['partial repair probe 1', [[['P', 105, -1, 5.1], ['P', 95, 1, 1.25], ['C', 100, -1, 1.25], ['C', 90, 2, 3.4]], 100], [None, -1170.0, [95.5667]]], ['partial repair probe 2', [[['P', 85, 1, 5.1], ['S', 110, 1, 0.0], ['C', 110, -1, 0.5]], 1], [-4.6, -29.6, []]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 105, 1, 1.25], ['C', 80, 2, 3.4]], 100], [None, 1695.0, []]], ['normal control 2', [[['P', 115, 1, 1.25], ['P', 90, -1, 1.25]], 1], [25.0, 0.0, [115.0]]]], [['regression unbounded loss detection 1', [[['C', 85, -2, 7.75], ['P', 100, 2, 1.25], ['S', 100, -2, 0.0], ['C', 95, 1, 3.4]], 100], [40960.0, None, [96.92]]], ['regression unbounded loss detection 2', [[['C', 100, -1, 7.75], ['C', 115, -2, 5.1], ['C', 110, 1, 7.75], ['P', 115, -2, 7.75]], 100], [1570.0, None, [104.3, 122.85]]], ['partial repair probe 1', [[['C', 105, -2, 1.25], ['P', 115, 1, 3.4], ['S', 115, 1, 0.0], ['C', 95, 1, 2.0]], 100], [710.0, -290.0, [97.9, 112.1]]], ['partial repair probe 2', [[['C', 115, -1, 2.0], ['P', 115, -2, 5.1], ['S', 120, 1, 0.0], ['C', 100, 1, 0.5]], 1], [None, -338.3, [109.575]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 95, 1, 1.25], ['S', 85, -2, 0.0], ['C', 110, 1, 2.0], ['C', 80, 2, 2.0]], 100], [None, 275.0, []]], ['normal control 2', [[['P', 95, 2, 0.5], ['P', 100, 1, 0.5], ['P', 115, -2, 7.75], ['S', 110, 1, 0.0]], 1], [None, -36.0, [108.6667]]]], [['regression unbounded loss detection 1', [[['C', 100, -2, 0.5], ['C', 100, -1, 0.5], ['P', 80, 1, 3.4], ['P', 110, 2, 0.5]], 100], [29710.0, None, [103.42]]], ['regression unbounded loss detection 2', [[['P', 100, -1, 0.5], ['C', 110, -1, 7.75], ['P', 95, 1, 2.0]], 1], [6.25, None, [116.25]]], ['partial repair probe 1', [[['C', 80, -1, 1.25], ['S', 115, 2, 0.0], ['P', 105, -1, 0.5], ['C', 100, 1, 2.0]], 1], [None, -335.25, [125.125]]], ['partial repair probe 2', [[['C', 80, -1, 5.1], ['S', 115, 1, 0.0], ['P', 100, -1, 5.1], ['P', 120, 2, 0.5]], 1], [34.2, -25.8, [107.1]]], ['boundary control 1', [[['P', 100, 1, 2.0]], 1], [98.0, -2.0, [98.0]]], ['boundary control 2', [[['C', 100, 1, 2.0]], 100], [None, -200.0, [102.0]]], ['normal control 1', [[['P', 85, 1, 7.75], ['C', 100, 1, 3.4], ['P', 110, -2, 3.4]], 1], [None, -139.35, [108.1167]]], ['normal control 2', [[['P', 90, -2, 2.0]], 1], [4.0, -176.0, [88.0]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*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":"A deterministic toy contract stated explicitly in the contract field; no claim of conformance to any exchange or clearing rulebook. 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-options_payoff_and_settlement-strategy-risk-profile-unbounded-loss-detection","generated_at":"2026-09-29T14:46:55.714992+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Option expiry, exercise and settlement engines move cash and shares; a wrong branch misstates obligations.","repair":"Report an unbounded loss when the tail slope is negative.","root_cause":"Unbounded loss is flagged by leg type instead of by the tail slope.","sha256":"5bbc6493745d1fe4429475f37f37dde3de8b56f433206e9bc433390024536826","title":"Option strategy max gain, max loss and breakevens: maximum loss is inferred from the presence of a short call · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.78,"exit_code":1,"observations":[{"actual":[800.0,null,[98.0]],"check":"regression unbounded loss detection 1","expected":[800.0,null,[98.0]],"passed":true},{"actual":[10500.0,0.0,[105.0]],"check":"regression unbounded loss detection 2","expected":[10500.0,null,[105.0]],"passed":false},{"actual":[21.25,null,[78.75]],"check":"partial repair probe 1","expected":[21.25,-78.75,[78.75]],"passed":false},{"actual":[25185.0,null,[118.425]],"check":"partial repair probe 2","expected":[25185.0,-315.0,[118.425]],"passed":false},{"actual":[null,-200.0,[102.0]],"check":"boundary control 1","expected":[null,-200.0,[102.0]],"passed":true},{"actual":[98.0,-2.0,[98.0]],"check":"boundary control 2","expected":[98.0,-2.0,[98.0]],"passed":true},{"actual":[50.0,-9950.0,[99.5]],"check":"normal control 1","expected":[50.0,-9950.0,[99.5]],"passed":true},{"actual":[null,-5.0,[82.5,102.5]],"check":"normal control 2","expected":[null,-5.0,[82.5,102.5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression unbounded loss detection 1\", \"actual\": [800.0, null, [98.0]], \"expected\": [800.0, null, [98.0]], \"passed\": true}, {\"check\": \"regression unbounded loss detection 2\", \"actual\": [10500.0, 0.0, [105.0]], \"expected\": [10500.0, null, [105.0]], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [21.25, null, [78.75]], \"expected\": [21.25, -78.75, [78.75]], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [25185.0, null, [118.425]], \"expected\": [25185.0, -315.0, [118.425]], \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": [null, -200.0, [102.0]], \"expected\": [null, -200.0, [102.0]], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [98.0, -2.0, [98.0]], \"expected\": [98.0, -2.0, [98.0]], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [50.0, -9950.0, [99.5]], \"expected\": [50.0, -9950.0, [99.5]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [null, -5.0, [82.5, 102.5]], \"expected\": [null, -5.0, [82.5, 102.5]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.355,"exit_code":1,"observations":[{"actual":[800.0,-200.0,[98.0]],"check":"regression unbounded loss detection 1","expected":[800.0,null,[98.0]],"passed":false},{"actual":[10500.0,0.0,[105.0]],"check":"regression unbounded loss detection 2","expected":[10500.0,null,[105.0]],"passed":false},{"actual":[21.25,-78.75,[78.75]],"check":"partial repair probe 1","expected":[21.25,-78.75,[78.75]],"passed":true},{"actual":[25185.0,-315.0,[118.425]],"check":"partial repair probe 2","expected":[25185.0,-315.0,[118.425]],"passed":true},{"actual":[null,-200.0,[102.0]],"check":"boundary control 1","expected":[null,-200.0,[102.0]],"passed":true},{"actual":[98.0,-2.0,[98.0]],"check":"boundary control 2","expected":[98.0,-2.0,[98.0]],"passed":true},{"actual":[50.0,-9950.0,[99.5]],"check":"normal control 1","expected":[50.0,-9950.0,[99.5]],"passed":true},{"actual":[null,-5.0,[82.5,102.5]],"check":"normal control 2","expected":[null,-5.0,[82.5,102.5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression unbounded loss detection 1\", \"actual\": [800.0, -200.0, [98.0]], \"expected\": [800.0, null, [98.0]], \"passed\": false}, {\"check\": \"regression unbounded loss detection 2\", \"actual\": [10500.0, 0.0, [105.0]], \"expected\": [10500.0, null, [105.0]], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [21.25, -78.75, [78.75]], \"expected\": [21.25, -78.75, [78.75]], \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": [25185.0, -315.0, [118.425]], \"expected\": [25185.0, -315.0, [118.425]], \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": [null, -200.0, [102.0]], \"expected\": [null, -200.0, [102.0]], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [98.0, -2.0, [98.0]], \"expected\": [98.0, -2.0, [98.0]], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [50.0, -9950.0, [99.5]], \"expected\": [50.0, -9950.0, [99.5]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [null, -5.0, [82.5, 102.5]], \"expected\": [null, -5.0, [82.5, 102.5]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.057,"exit_code":0,"observations":[{"actual":[800.0,null,[98.0]],"check":"regression unbounded loss detection 1","expected":[800.0,null,[98.0]],"passed":true},{"actual":[10500.0,null,[105.0]],"check":"regression unbounded loss detection 2","expected":[10500.0,null,[105.0]],"passed":true},{"actual":[21.25,-78.75,[78.75]],"check":"partial repair probe 1","expected":[21.25,-78.75,[78.75]],"passed":true},{"actual":[25185.0,-315.0,[118.425]],"check":"partial repair probe 2","expected":[25185.0,-315.0,[118.425]],"passed":true},{"actual":[null,-200.0,[102.0]],"check":"boundary control 1","expected":[null,-200.0,[102.0]],"passed":true},{"actual":[98.0,-2.0,[98.0]],"check":"boundary control 2","expected":[98.0,-2.0,[98.0]],"passed":true},{"actual":[50.0,-9950.0,[99.5]],"check":"normal control 1","expected":[50.0,-9950.0,[99.5]],"passed":true},{"actual":[null,-5.0,[82.5,102.5]],"check":"normal control 2","expected":[null,-5.0,[82.5,102.5]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression unbounded loss detection 1\", \"actual\": [800.0, null, [98.0]], \"expected\": [800.0, null, [98.0]], \"passed\": true}, {\"check\": \"regression unbounded loss detection 2\", \"actual\": [10500.0, null, [105.0]], \"expected\": [10500.0, null, [105.0]], \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": [21.25, -78.75, [78.75]], \"expected\": [21.25, -78.75, [78.75]], \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": [25185.0, -315.0, [118.425]], \"expected\": [25185.0, -315.0, [118.425]], \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": [null, -200.0, [102.0]], \"expected\": [null, -200.0, [102.0]], \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": [98.0, -2.0, [98.0]], \"expected\": [98.0, -2.0, [98.0]], \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": [50.0, -9950.0, [99.5]], \"expected\": [50.0, -9950.0, [99.5]], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [null, -5.0, [82.5, 102.5]], \"expected\": [null, -5.0, [82.5, 102.5]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}