{"abstract":"Put minimums are wrong whenever the underlying differs from the strike.","category":"Options payoff and settlement","checks":8,"contract":"Inputs kind, underlying price, strike, premium, contracts and multiplier. Out-of-the-money amount is max(K-S,0) for calls and max(S-K,0) for puts. Per-unit requirement = premium + max(20% of underlying - OTM amount, 10% of floor base) where the floor base is the underlying for calls and the strike for puts. Return requirement*multiplier*contracts rounded to cents.","evaluation_group":"w2-options_payoff_and_settlement-naked-short-margin","failed_approach":"Using the strike for calls too moves the error to calls.","family":"w2-options_payoff_and_settlement-naked-short-margin-minimum-floor-base","id":"FA-61621","implementations":{"attempt":{"sha256":"1421c9d4d7a2d1ffaf2c49b0ddcd4c389e2f092311c5dfaf44cc787fc8726b8f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(kind, underlying, strike, premium, contracts, multiplier):\n    S = Fraction(str(underlying))\n    K = Fraction(str(strike))\n    P = Fraction(str(premium))\n    otm = max(K - S, 0) if kind == 'C' else max(S - K, 0)\n    floor_base = K\n    req = P + max(S * Fraction(20, 100) - otm, floor_base * Fraction(10, 100))\n    return float(round(req * multiplier * contracts, 2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 10], 1000.0], ['regression minimum floor base 2', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['partial repair probe 1', ['C', 92.5, 110, 8.0, 1, 100], 1725.0], ['partial repair probe 2', ['C', 92.5, 105, 3.4, 2, 100], 2530.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 100.0, 110, 3.4, 2, 10], 468.0], ['normal control 2', ['C', 92.5, 100, 1.25, 2, 10], 245.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 100], 2580.0], ['regression minimum floor base 2', ['P', 104.25, 90, 3.4, 10, 100], 12400.0], ['partial repair probe 1', ['C', 100.0, 110, 15.1, 1, 100], 2510.0], ['partial repair probe 2', ['C', 80.0, 90, 1.25, 10, 10], 925.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 1.25, 2, 100], 4250.0], ['normal control 2', ['P', 92.5, 95, 3.4, 1, 100], 2190.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 10], 258.0], ['regression minimum floor base 2', ['P', 120.0, 95, 3.4, 1, 100], 1290.0], ['partial repair probe 1', ['C', 80.0, 95, 8.0, 1, 10], 160.0], ['partial repair probe 2', ['C', 80.0, 110, 8.0, 1, 100], 1600.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 104.25, 105, 0.5, 2, 100], 4270.0], ['normal control 2', ['P', 100.0, 110, 1.25, 10, 10], 2125.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 1, 10], 129.0], ['regression minimum floor base 2', ['P', 120.0, 105, 3.4, 10, 10], 1390.0], ['partial repair probe 1', ['C', 80.0, 100, 3.4, 1, 100], 1140.0], ['partial repair probe 2', ['C', 100.0, 110, 3.4, 2, 100], 2680.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 120.0, 110, 8.0, 10, 100], 22000.0], ['normal control 2', ['P', 92.5, 100, 15.1, 1, 10], 336.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['regression minimum floor base 2', ['P', 120.0, 100, 8.0, 1, 100], 1800.0], ['partial repair probe 1', ['C', 92.5, 105, 0.5, 2, 100], 1950.0], ['partial repair probe 2', ['C', 80.0, 105, 3.4, 1, 10], 114.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['boundary control 2', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['normal control 1', ['P', 104.25, 95, 15.1, 10, 100], 26700.0], ['normal control 2', ['C', 104.25, 110, 1.25, 10, 10], 1635.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":"5e3f9bed2745ff9ecc27129e35dc6784b3744a3cddca4a7dc0657ed96e53c5ec","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(kind, underlying, strike, premium, contracts, multiplier):\n    S = Fraction(str(underlying))\n    K = Fraction(str(strike))\n    P = Fraction(str(premium))\n    otm = max(K - S, 0) if kind == 'C' else max(S - K, 0)\n    floor_base = S\n    req = P + max(S * Fraction(20, 100) - otm, floor_base * Fraction(10, 100))\n    return float(round(req * multiplier * contracts, 2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 10], 1000.0], ['regression minimum floor base 2', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['partial repair probe 1', ['C', 92.5, 110, 8.0, 1, 100], 1725.0], ['partial repair probe 2', ['C', 92.5, 105, 3.4, 2, 100], 2530.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 100.0, 110, 3.4, 2, 10], 468.0], ['normal control 2', ['C', 92.5, 100, 1.25, 2, 10], 245.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 100], 2580.0], ['regression minimum floor base 2', ['P', 104.25, 90, 3.4, 10, 100], 12400.0], ['partial repair probe 1', ['C', 100.0, 110, 15.1, 1, 100], 2510.0], ['partial repair probe 2', ['C', 80.0, 90, 1.25, 10, 10], 925.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 1.25, 2, 100], 4250.0], ['normal control 2', ['P', 92.5, 95, 3.4, 1, 100], 2190.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 10], 258.0], ['regression minimum floor base 2', ['P', 120.0, 95, 3.4, 1, 100], 1290.0], ['partial repair probe 1', ['C', 80.0, 95, 8.0, 1, 10], 160.0], ['partial repair probe 2', ['C', 80.0, 110, 8.0, 1, 100], 1600.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 104.25, 105, 0.5, 2, 100], 4270.0], ['normal control 2', ['P', 100.0, 110, 1.25, 10, 10], 2125.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 1, 10], 129.0], ['regression minimum floor base 2', ['P', 120.0, 105, 3.4, 10, 10], 1390.0], ['partial repair probe 1', ['C', 80.0, 100, 3.4, 1, 100], 1140.0], ['partial repair probe 2', ['C', 100.0, 110, 3.4, 2, 100], 2680.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 120.0, 110, 8.0, 10, 100], 22000.0], ['normal control 2', ['P', 92.5, 100, 15.1, 1, 10], 336.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['regression minimum floor base 2', ['P', 120.0, 100, 8.0, 1, 100], 1800.0], ['partial repair probe 1', ['C', 92.5, 105, 0.5, 2, 100], 1950.0], ['partial repair probe 2', ['C', 80.0, 105, 3.4, 1, 10], 114.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['boundary control 2', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['normal control 1', ['P', 104.25, 95, 15.1, 10, 100], 26700.0], ['normal control 2', ['C', 104.25, 110, 1.25, 10, 10], 1635.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":"52cc109bb1b678a3a2654e376e4e1006b96d0aed80d9955978fbfeaa657d1cad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(kind, underlying, strike, premium, contracts, multiplier):\n    S = Fraction(str(underlying))\n    K = Fraction(str(strike))\n    P = Fraction(str(premium))\n    otm = max(K - S, 0) if kind == 'C' else max(S - K, 0)\n    floor_base = S if kind == 'C' else K\n    req = P + max(S * Fraction(20, 100) - otm, floor_base * Fraction(10, 100))\n    return float(round(req * multiplier * contracts, 2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 10], 1000.0], ['regression minimum floor base 2', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['partial repair probe 1', ['C', 92.5, 110, 8.0, 1, 100], 1725.0], ['partial repair probe 2', ['C', 92.5, 105, 3.4, 2, 100], 2530.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 100.0, 110, 3.4, 2, 10], 468.0], ['normal control 2', ['C', 92.5, 100, 1.25, 2, 10], 245.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 100], 2580.0], ['regression minimum floor base 2', ['P', 104.25, 90, 3.4, 10, 100], 12400.0], ['partial repair probe 1', ['C', 100.0, 110, 15.1, 1, 100], 2510.0], ['partial repair probe 2', ['C', 80.0, 90, 1.25, 10, 10], 925.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 1.25, 2, 100], 4250.0], ['normal control 2', ['P', 92.5, 95, 3.4, 1, 100], 2190.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 2, 10], 258.0], ['regression minimum floor base 2', ['P', 120.0, 95, 3.4, 1, 100], 1290.0], ['partial repair probe 1', ['C', 80.0, 95, 8.0, 1, 10], 160.0], ['partial repair probe 2', ['C', 80.0, 110, 8.0, 1, 100], 1600.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 104.25, 105, 0.5, 2, 100], 4270.0], ['normal control 2', ['P', 100.0, 110, 1.25, 10, 10], 2125.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 3.4, 1, 10], 129.0], ['regression minimum floor base 2', ['P', 120.0, 105, 3.4, 10, 10], 1390.0], ['partial repair probe 1', ['C', 80.0, 100, 3.4, 1, 100], 1140.0], ['partial repair probe 2', ['C', 100.0, 110, 3.4, 2, 100], 2680.0], ['boundary control 1', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['boundary control 2', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['P', 120.0, 110, 8.0, 10, 100], 22000.0], ['normal control 2', ['P', 92.5, 100, 15.1, 1, 10], 336.0]], [['regression minimum floor base 1', ['P', 120.0, 95, 0.5, 10, 100], 10000.0], ['regression minimum floor base 2', ['P', 120.0, 100, 8.0, 1, 100], 1800.0], ['partial repair probe 1', ['C', 92.5, 105, 0.5, 2, 100], 1950.0], ['partial repair probe 2', ['C', 80.0, 105, 3.4, 1, 10], 114.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['boundary control 2', ['P', 80.0, 100, 20.5, 1, 100], 3650.0], ['normal control 1', ['P', 104.25, 95, 15.1, 10, 100], 26700.0], ['normal control 2', ['C', 104.25, 110, 1.25, 10, 10], 1635.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-naked-short-margin-minimum-floor-base","generated_at":"2026-09-29T14:46:56.875138+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":"Puts use 10% of the strike as the minimum.","root_cause":"The floor base is the underlying for every kind.","sha256":"8b24268c152ebb99396df4aef61ad51cc7093991a95b52d697058bed8e1a71fa","title":"Uncovered short option margin requirement: the put minimum uses the underlying price · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.569,"exit_code":1,"observations":[{"actual":1000.0,"check":"regression minimum floor base 1","expected":1000.0,"passed":true},{"actual":10000.0,"check":"regression minimum floor base 2","expected":10000.0,"passed":true},{"actual":1900.0,"check":"partial repair probe 1","expected":1725.0,"passed":false},{"actual":2780.0,"check":"partial repair probe 2","expected":2530.0,"passed":false},{"actual":3650.0,"check":"boundary control 1","expected":3650.0,"passed":true},{"actual":2200.0,"check":"boundary control 2","expected":2200.0,"passed":true},{"actual":468.0,"check":"normal control 1","expected":468.0,"passed":true},{"actual":245.0,"check":"normal control 2","expected":245.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression minimum floor base 1\", \"actual\": 1000.0, \"expected\": 1000.0, \"passed\": true}, {\"check\": \"regression minimum floor base 2\", \"actual\": 10000.0, \"expected\": 10000.0, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 1900.0, \"expected\": 1725.0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 2780.0, \"expected\": 2530.0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 3650.0, \"expected\": 3650.0, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 468.0, \"expected\": 468.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 245.0, \"expected\": 245.0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.032,"exit_code":1,"observations":[{"actual":1250.0,"check":"regression minimum floor base 1","expected":1000.0,"passed":false},{"actual":12500.0,"check":"regression minimum floor base 2","expected":10000.0,"passed":false},{"actual":1725.0,"check":"partial repair probe 1","expected":1725.0,"passed":true},{"actual":2530.0,"check":"partial repair probe 2","expected":2530.0,"passed":true},{"actual":3650.0,"check":"boundary control 1","expected":3650.0,"passed":true},{"actual":2200.0,"check":"boundary control 2","expected":2200.0,"passed":true},{"actual":468.0,"check":"normal control 1","expected":468.0,"passed":true},{"actual":245.0,"check":"normal control 2","expected":245.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression minimum floor base 1\", \"actual\": 1250.0, \"expected\": 1000.0, \"passed\": false}, {\"check\": \"regression minimum floor base 2\", \"actual\": 12500.0, \"expected\": 10000.0, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 1725.0, \"expected\": 1725.0, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 2530.0, \"expected\": 2530.0, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 3650.0, \"expected\": 3650.0, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 468.0, \"expected\": 468.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 245.0, \"expected\": 245.0, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.14,"exit_code":0,"observations":[{"actual":1000.0,"check":"regression minimum floor base 1","expected":1000.0,"passed":true},{"actual":10000.0,"check":"regression minimum floor base 2","expected":10000.0,"passed":true},{"actual":1725.0,"check":"partial repair probe 1","expected":1725.0,"passed":true},{"actual":2530.0,"check":"partial repair probe 2","expected":2530.0,"passed":true},{"actual":3650.0,"check":"boundary control 1","expected":3650.0,"passed":true},{"actual":2200.0,"check":"boundary control 2","expected":2200.0,"passed":true},{"actual":468.0,"check":"normal control 1","expected":468.0,"passed":true},{"actual":245.0,"check":"normal control 2","expected":245.0,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression minimum floor base 1\", \"actual\": 1000.0, \"expected\": 1000.0, \"passed\": true}, {\"check\": \"regression minimum floor base 2\", \"actual\": 10000.0, \"expected\": 10000.0, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 1725.0, \"expected\": 1725.0, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 2530.0, \"expected\": 2530.0, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 3650.0, \"expected\": 3650.0, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 468.0, \"expected\": 468.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 245.0, \"expected\": 245.0, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}