{"abstract":"Deep out-of-the-money puts get no margin relief while in-the-money puts get relief.","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 |S-K| for both kinds gives relief to in-the-money options.","family":"w2-options_payoff_and_settlement-naked-short-margin-put-out-of-money-amount","id":"FA-61616","implementations":{"attempt":{"sha256":"6585334b701c25d6122add94f40018b6b2ca7a16e818399a364164812ff078a6","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 = abs(S - K)\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 put out-of-money amount 1', ['P', 120.0, 90, 8.0, 1, 100], 1700.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 15.1, 10, 10], 3110.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 120.0, 90, 0.5, 10, 10], 2450.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 2, 10], 345.0], ['normal control 2', ['C', 100.0, 105, 8.0, 1, 100], 2300.0], ['normal control 3', ['C', 104.25, 105, 8.0, 10, 10], 2810.0]], [['regression put out-of-money amount 1', ['P', 104.25, 100, 0.5, 2, 10], 342.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 1.25, 1, 10], 172.5], ['partial repair probe 1', ['C', 104.25, 100, 8.0, 1, 100], 2885.0], ['partial repair probe 2', ['C', 120.0, 100, 0.5, 10, 100], 24500.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 104.25, 110, 8.0, 10, 10], 2310.0], ['normal control 2', ['C', 80.0, 90, 8.0, 1, 100], 1600.0], ['normal control 3', ['C', 80.0, 95, 15.1, 1, 100], 2310.0]], [['regression put out-of-money amount 1', ['P', 120.0, 95, 1.25, 1, 10], 107.5], ['regression put out-of-money amount 2', ['P', 92.5, 90, 8.0, 2, 100], 4800.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 104.25, 90, 3.4, 10, 100], 24250.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 0.5, 1, 100], 2050.0], ['normal control 2', ['P', 100.0, 100, 3.4, 2, 100], 4680.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 10], 185.0]], [['regression put out-of-money amount 1', ['P', 100.0, 90, 8.0, 2, 10], 360.0], ['regression put out-of-money amount 2', ['P', 100.0, 90, 1.25, 1, 100], 1125.0], ['partial repair probe 1', ['C', 120.0, 90, 15.1, 2, 10], 782.0], ['partial repair probe 2', ['C', 104.25, 90, 0.5, 1, 100], 2135.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 10, 10], 1725.0], ['normal control 2', ['C', 92.5, 95, 15.1, 1, 100], 3110.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 100], 1850.0]], [['regression put out-of-money amount 1', ['P', 100.0, 95, 8.0, 10, 10], 2300.0], ['regression put out-of-money amount 2', ['P', 92.5, 110, 3.4, 2, 10], 438.0], ['partial repair probe 1', ['C', 100.0, 90, 0.5, 1, 10], 205.0], ['partial repair probe 2', ['C', 92.5, 90, 8.0, 2, 100], 5300.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 95, 3.4, 1, 10], 194.0], ['normal control 2', ['C', 92.5, 95, 8.0, 10, 100], 24000.0], ['normal control 3', ['C', 100.0, 100, 3.4, 10, 10], 2340.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":"64790fa0d3df7cebab426551a3c36752732679358b5e523a40b56704607d9772","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)\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 put out-of-money amount 1', ['P', 120.0, 90, 8.0, 1, 100], 1700.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 15.1, 10, 10], 3110.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 120.0, 90, 0.5, 10, 10], 2450.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 2, 10], 345.0], ['normal control 2', ['C', 100.0, 105, 8.0, 1, 100], 2300.0], ['normal control 3', ['C', 104.25, 105, 8.0, 10, 10], 2810.0]], [['regression put out-of-money amount 1', ['P', 104.25, 100, 0.5, 2, 10], 342.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 1.25, 1, 10], 172.5], ['partial repair probe 1', ['C', 104.25, 100, 8.0, 1, 100], 2885.0], ['partial repair probe 2', ['C', 120.0, 100, 0.5, 10, 100], 24500.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 104.25, 110, 8.0, 10, 10], 2310.0], ['normal control 2', ['C', 80.0, 90, 8.0, 1, 100], 1600.0], ['normal control 3', ['C', 80.0, 95, 15.1, 1, 100], 2310.0]], [['regression put out-of-money amount 1', ['P', 120.0, 95, 1.25, 1, 10], 107.5], ['regression put out-of-money amount 2', ['P', 92.5, 90, 8.0, 2, 100], 4800.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 104.25, 90, 3.4, 10, 100], 24250.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 0.5, 1, 100], 2050.0], ['normal control 2', ['P', 100.0, 100, 3.4, 2, 100], 4680.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 10], 185.0]], [['regression put out-of-money amount 1', ['P', 100.0, 90, 8.0, 2, 10], 360.0], ['regression put out-of-money amount 2', ['P', 100.0, 90, 1.25, 1, 100], 1125.0], ['partial repair probe 1', ['C', 120.0, 90, 15.1, 2, 10], 782.0], ['partial repair probe 2', ['C', 104.25, 90, 0.5, 1, 100], 2135.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 10, 10], 1725.0], ['normal control 2', ['C', 92.5, 95, 15.1, 1, 100], 3110.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 100], 1850.0]], [['regression put out-of-money amount 1', ['P', 100.0, 95, 8.0, 10, 10], 2300.0], ['regression put out-of-money amount 2', ['P', 92.5, 110, 3.4, 2, 10], 438.0], ['partial repair probe 1', ['C', 100.0, 90, 0.5, 1, 10], 205.0], ['partial repair probe 2', ['C', 92.5, 90, 8.0, 2, 100], 5300.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 95, 3.4, 1, 10], 194.0], ['normal control 2', ['C', 92.5, 95, 8.0, 10, 100], 24000.0], ['normal control 3', ['C', 100.0, 100, 3.4, 10, 10], 2340.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":"661aa47eda9df43a9fce9e6bbd585d49bd87a49a5f73be7f869a0091d438f02a","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 put out-of-money amount 1', ['P', 120.0, 90, 8.0, 1, 100], 1700.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 15.1, 10, 10], 3110.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 120.0, 90, 0.5, 10, 10], 2450.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 2, 10], 345.0], ['normal control 2', ['C', 100.0, 105, 8.0, 1, 100], 2300.0], ['normal control 3', ['C', 104.25, 105, 8.0, 10, 10], 2810.0]], [['regression put out-of-money amount 1', ['P', 104.25, 100, 0.5, 2, 10], 342.0], ['regression put out-of-money amount 2', ['P', 80.0, 110, 1.25, 1, 10], 172.5], ['partial repair probe 1', ['C', 104.25, 100, 8.0, 1, 100], 2885.0], ['partial repair probe 2', ['C', 120.0, 100, 0.5, 10, 100], 24500.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 104.25, 110, 8.0, 10, 10], 2310.0], ['normal control 2', ['C', 80.0, 90, 8.0, 1, 100], 1600.0], ['normal control 3', ['C', 80.0, 95, 15.1, 1, 100], 2310.0]], [['regression put out-of-money amount 1', ['P', 120.0, 95, 1.25, 1, 10], 107.5], ['regression put out-of-money amount 2', ['P', 92.5, 90, 8.0, 2, 100], 4800.0], ['partial repair probe 1', ['C', 120.0, 110, 0.5, 2, 100], 4900.0], ['partial repair probe 2', ['C', 104.25, 90, 3.4, 10, 100], 24250.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 100.0, 100, 0.5, 1, 100], 2050.0], ['normal control 2', ['P', 100.0, 100, 3.4, 2, 100], 4680.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 10], 185.0]], [['regression put out-of-money amount 1', ['P', 100.0, 90, 8.0, 2, 10], 360.0], ['regression put out-of-money amount 2', ['P', 100.0, 90, 1.25, 1, 100], 1125.0], ['partial repair probe 1', ['C', 120.0, 90, 15.1, 2, 10], 782.0], ['partial repair probe 2', ['C', 104.25, 90, 0.5, 1, 100], 2135.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 105, 8.0, 10, 10], 1725.0], ['normal control 2', ['C', 92.5, 95, 15.1, 1, 100], 3110.0], ['normal control 3', ['C', 80.0, 110, 1.25, 2, 100], 1850.0]], [['regression put out-of-money amount 1', ['P', 100.0, 95, 8.0, 10, 10], 2300.0], ['regression put out-of-money amount 2', ['P', 92.5, 110, 3.4, 2, 10], 438.0], ['partial repair probe 1', ['C', 100.0, 90, 0.5, 1, 10], 205.0], ['partial repair probe 2', ['C', 92.5, 90, 8.0, 2, 100], 5300.0], ['boundary control 1', ['C', 100.0, 100, 2.0, 1, 100], 2200.0], ['normal control 1', ['C', 92.5, 95, 3.4, 1, 10], 194.0], ['normal control 2', ['C', 92.5, 95, 8.0, 10, 100], 24000.0], ['normal control 3', ['C', 100.0, 100, 3.4, 10, 10], 2340.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-put-out-of-money-amount","generated_at":"2026-09-29T14:46:56.832362+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":"For puts the OTM amount is max(S-K,0).","root_cause":"OTM amount for puts is computed as max(K-S,0).","sha256":"e732d9290215638b2d56dd185e10c3656709b3673567aacef19aad76ad24a949","title":"Uncovered short option margin requirement: puts use the call out-of-the-money amount · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.443,"exit_code":1,"observations":[{"actual":1700.0,"check":"regression put out-of-money amount 1","expected":1700.0,"passed":true},{"actual":2610.0,"check":"regression put out-of-money amount 2","expected":3110.0,"passed":false},{"actual":2900.0,"check":"partial repair probe 1","expected":4900.0,"passed":false},{"actual":1250.0,"check":"partial repair probe 2","expected":2450.0,"passed":false},{"actual":2200.0,"check":"boundary control 1","expected":2200.0,"passed":true},{"actual":345.0,"check":"normal control 1","expected":345.0,"passed":true},{"actual":2300.0,"check":"normal control 2","expected":2300.0,"passed":true},{"actual":2810.0,"check":"normal control 3","expected":2810.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression put out-of-money amount 1\", \"actual\": 1700.0, \"expected\": 1700.0, \"passed\": true}, {\"check\": \"regression put out-of-money amount 2\", \"actual\": 2610.0, \"expected\": 3110.0, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 2900.0, \"expected\": 4900.0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 1250.0, \"expected\": 2450.0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 345.0, \"expected\": 345.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 2300.0, \"expected\": 2300.0, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 2810.0, \"expected\": 2810.0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.692,"exit_code":1,"observations":[{"actual":3200.0,"check":"regression put out-of-money amount 1","expected":1700.0,"passed":false},{"actual":2610.0,"check":"regression put out-of-money amount 2","expected":3110.0,"passed":false},{"actual":4900.0,"check":"partial repair probe 1","expected":4900.0,"passed":true},{"actual":2450.0,"check":"partial repair probe 2","expected":2450.0,"passed":true},{"actual":2200.0,"check":"boundary control 1","expected":2200.0,"passed":true},{"actual":345.0,"check":"normal control 1","expected":345.0,"passed":true},{"actual":2300.0,"check":"normal control 2","expected":2300.0,"passed":true},{"actual":2810.0,"check":"normal control 3","expected":2810.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression put out-of-money amount 1\", \"actual\": 3200.0, \"expected\": 1700.0, \"passed\": false}, {\"check\": \"regression put out-of-money amount 2\", \"actual\": 2610.0, \"expected\": 3110.0, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 4900.0, \"expected\": 4900.0, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 2450.0, \"expected\": 2450.0, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 345.0, \"expected\": 345.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 2300.0, \"expected\": 2300.0, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 2810.0, \"expected\": 2810.0, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.559,"exit_code":0,"observations":[{"actual":1700.0,"check":"regression put out-of-money amount 1","expected":1700.0,"passed":true},{"actual":3110.0,"check":"regression put out-of-money amount 2","expected":3110.0,"passed":true},{"actual":4900.0,"check":"partial repair probe 1","expected":4900.0,"passed":true},{"actual":2450.0,"check":"partial repair probe 2","expected":2450.0,"passed":true},{"actual":2200.0,"check":"boundary control 1","expected":2200.0,"passed":true},{"actual":345.0,"check":"normal control 1","expected":345.0,"passed":true},{"actual":2300.0,"check":"normal control 2","expected":2300.0,"passed":true},{"actual":2810.0,"check":"normal control 3","expected":2810.0,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression put out-of-money amount 1\", \"actual\": 1700.0, \"expected\": 1700.0, \"passed\": true}, {\"check\": \"regression put out-of-money amount 2\", \"actual\": 3110.0, \"expected\": 3110.0, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 4900.0, \"expected\": 4900.0, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 2450.0, \"expected\": 2450.0, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 2200.0, \"expected\": 2200.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 345.0, \"expected\": 345.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 2300.0, \"expected\": 2300.0, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 2810.0, \"expected\": 2810.0, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}