{"abstract":"Puts violate put-call parity.","category":"Options payoff and settlement","checks":8,"contract":"Inputs kind, spot S, strike K, rate r, dividend yield q, volatility sigma and calendar days to expiry. T = days/365. At days == 0 return intrinsic value. Otherwise d1 = (ln(S/K) + (r - q + sigma^2/2)T)/(sigma sqrt T), d2 = d1 - sigma sqrt T, call = S e^{-qT} N(d1) - K e^{-rT} N(d2), put = K e^{-rT} N(-d2) - S e^{-qT} N(-d1). Round to 6.","contract_signature":"kind, S, K, r, q, sigma, days","evaluation_group":"w2-options_payoff_and_settlement-black-scholes-dividend-yield","failed_approach":"Swapping the discount rates instead leaves the put wrong when r differs from q.","family":"w2-options_payoff_and_settlement-black-scholes-dividend-yield-put-probability-terms","id":"FA-61556","implementations":{"attempt":{"sha256":"c1d0749548d25a61f6ccfbc980ee2fde645a085b0a02ec9c11b3968bcf319d04","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(kind, S, K, r, q, sigma, days):\n    def N(x):\n        return 0.5 * (1 + math.erf(x / math.sqrt(2)))\n    T = days / 365\n    if days == 0:\n        return round(max(S - K, 0.0) if kind == 'C' else max(K - S, 0.0), 6)\n    d1 = (math.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * math.sqrt(T))\n    d2 = d1 - sigma * math.sqrt(T)\n    if kind == 'C':\n        v = S * math.exp(-q * T) * N(d1) - K * math.exp(-r * T) * N(d2)\n    else:\n        v = K * math.exp(-q * T) * N(-d2) - S * math.exp(-r * T) * N(-d1)\n    return round(v, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression put probability terms 1', ['P', 100.0, 95.0, 0.05, 0.03, 0.2, 91], 1.722771], ['regression put probability terms 2', ['P', 90.0, 95.0, 0.0, 0.0, 0.1, 365], 6.71447], ['partial repair probe 1', ['P', 100.0, 105.0, 0.05, 0.0, 0.1, 1], 4.985617], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.015, 0.1, 1], 15.003699], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 100.0, 95.0, 0.05, 0.0, 0.2, 182], 9.862004], ['normal control 2', ['P', 110.0, 95.0, 0.0, 0.03, 0.1, 7], 0.0]], [['regression put probability terms 1', ['P', 100.0, 100.0, 0.05, 0.015, 0.2, 365], 6.135286], ['regression put probability terms 2', ['P', 110.0, 105.0, 0.0, 0.0, 0.35, 30], 2.255177], ['partial repair probe 1', ['P', 90.0, 95.0, 0.02, 0.0, 0.1, 1], 4.994795], ['partial repair probe 2', ['P', 100.0, 105.0, 0.05, 0.0, 0.1, 1], 4.985617], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 90.0, 105.0, 0.05, 0.03, 0.35, 30], 0.27202], ['normal control 2', ['C', 90.0, 100.0, 0.05, 0.0, 0.1, 365], 1.680636]], [['regression put probability terms 1', ['P', 110.0, 100.0, 0.0, 0.0, 0.1, 182], 0.302927], ['regression put probability terms 2', ['P', 110.0, 95.0, 0.05, 0.0, 0.1, 182], 0.017745], ['partial repair probe 1', ['P', 90.0, 105.0, 0.0, 0.015, 0.1, 1], 15.003699], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.03, 0.1, 7], 15.051766], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 110.0, 95.0, 0.02, 0.0, 0.35, 730], 30.382734], ['normal control 2', ['P', 110.0, 95.0, 0.0, 0.0, 0.2, 1], 0.0]], [['regression put probability terms 1', ['P', 100.0, 100.0, 0.02, 0.0, 0.1, 365], 3.036848], ['regression put probability terms 2', ['P', 100.0, 105.0, 0.02, 0.0, 0.1, 182], 5.274405], ['partial repair probe 1', ['P', 90.0, 105.0, 0.02, 0.03, 0.2, 1], 15.001644], ['partial repair probe 2', ['P', 90.0, 95.0, 0.02, 0.015, 0.1, 1], 4.998493], ['boundary control 1', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 100.0, 100.0, 0.05, 0.015, 0.35, 0], 0.0], ['normal control 2', ['C', 90.0, 105.0, 0.05, 0.0, 0.35, 182], 4.510431]], [['regression put probability terms 1', ['P', 110.0, 100.0, 0.02, 0.0, 0.2, 730], 5.917793], ['regression put probability terms 2', ['P', 90.0, 105.0, 0.05, 0.0, 0.2, 182], 13.737285], ['partial repair probe 1', ['P', 90.0, 100.0, 0.02, 0.015, 0.1, 1], 9.998219], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.015, 0.35, 1], 15.003699], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 90.0, 95.0, 0.05, 0.015, 0.35, 365], 11.600139], ['normal control 2', ['C', 90.0, 100.0, 0.02, 0.0, 0.2, 0], 0.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":"aae695e11e5ae1cf90f436a75ec9d56d604200bb35e65e4343de13b91d6c3194","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(kind, S, K, r, q, sigma, days):\n    def N(x):\n        return 0.5 * (1 + math.erf(x / math.sqrt(2)))\n    T = days / 365\n    if days == 0:\n        return round(max(S - K, 0.0) if kind == 'C' else max(K - S, 0.0), 6)\n    d1 = (math.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * math.sqrt(T))\n    d2 = d1 - sigma * math.sqrt(T)\n    if kind == 'C':\n        v = S * math.exp(-q * T) * N(d1) - K * math.exp(-r * T) * N(d2)\n    else:\n        v = K * math.exp(-r * T) * N(-d1) - S * math.exp(-q * T) * N(-d2)\n    return round(v, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression put probability terms 1', ['P', 100.0, 95.0, 0.05, 0.03, 0.2, 91], 1.722771], ['regression put probability terms 2', ['P', 90.0, 95.0, 0.0, 0.0, 0.1, 365], 6.71447], ['partial repair probe 1', ['P', 100.0, 105.0, 0.05, 0.0, 0.1, 1], 4.985617], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.015, 0.1, 1], 15.003699], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 100.0, 95.0, 0.05, 0.0, 0.2, 182], 9.862004], ['normal control 2', ['P', 110.0, 95.0, 0.0, 0.03, 0.1, 7], 0.0]], [['regression put probability terms 1', ['P', 100.0, 100.0, 0.05, 0.015, 0.2, 365], 6.135286], ['regression put probability terms 2', ['P', 110.0, 105.0, 0.0, 0.0, 0.35, 30], 2.255177], ['partial repair probe 1', ['P', 90.0, 95.0, 0.02, 0.0, 0.1, 1], 4.994795], ['partial repair probe 2', ['P', 100.0, 105.0, 0.05, 0.0, 0.1, 1], 4.985617], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 90.0, 105.0, 0.05, 0.03, 0.35, 30], 0.27202], ['normal control 2', ['C', 90.0, 100.0, 0.05, 0.0, 0.1, 365], 1.680636]], [['regression put probability terms 1', ['P', 110.0, 100.0, 0.0, 0.0, 0.1, 182], 0.302927], ['regression put probability terms 2', ['P', 110.0, 95.0, 0.05, 0.0, 0.1, 182], 0.017745], ['partial repair probe 1', ['P', 90.0, 105.0, 0.0, 0.015, 0.1, 1], 15.003699], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.03, 0.1, 7], 15.051766], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 110.0, 95.0, 0.02, 0.0, 0.35, 730], 30.382734], ['normal control 2', ['P', 110.0, 95.0, 0.0, 0.0, 0.2, 1], 0.0]], [['regression put probability terms 1', ['P', 100.0, 100.0, 0.02, 0.0, 0.1, 365], 3.036848], ['regression put probability terms 2', ['P', 100.0, 105.0, 0.02, 0.0, 0.1, 182], 5.274405], ['partial repair probe 1', ['P', 90.0, 105.0, 0.02, 0.03, 0.2, 1], 15.001644], ['partial repair probe 2', ['P', 90.0, 95.0, 0.02, 0.015, 0.1, 1], 4.998493], ['boundary control 1', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 100.0, 100.0, 0.05, 0.015, 0.35, 0], 0.0], ['normal control 2', ['C', 90.0, 105.0, 0.05, 0.0, 0.35, 182], 4.510431]], [['regression put probability terms 1', ['P', 110.0, 100.0, 0.02, 0.0, 0.2, 730], 5.917793], ['regression put probability terms 2', ['P', 90.0, 105.0, 0.05, 0.0, 0.2, 182], 13.737285], ['partial repair probe 1', ['P', 90.0, 100.0, 0.02, 0.015, 0.1, 1], 9.998219], ['partial repair probe 2', ['P', 90.0, 105.0, 0.0, 0.015, 0.35, 1], 15.003699], ['boundary control 1', ['P', 90.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['boundary control 2', ['C', 110.0, 100.0, 0.05, 0.0, 0.2, 0], 10.0], ['normal control 1', ['C', 90.0, 95.0, 0.05, 0.015, 0.35, 365], 11.600139], ['normal control 2', ['C', 90.0, 100.0, 0.02, 0.0, 0.2, 0], 0.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-black-scholes-dividend-yield-put-probability-terms","generated_at":"2026-09-29T14:46:56.394910+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.","root_cause":"The put uses N(-d1) on the strike leg and N(-d2) on the spot leg.","sha256":"e38b7ccf15604285d3d553911bde4ce4ee18c26ebaf85085d8968dd3d0446b7c","title":"European option value with continuous dividend yield: the put formula swaps d1 and d2 · 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":40.517,"exit_code":1,"observations":[{"actual":1.998413,"check":"regression put probability terms 1","expected":1.722771,"passed":false},{"actual":6.71447,"check":"regression put probability terms 2","expected":6.71447,"passed":true},{"actual":5.013698,"check":"partial repair probe 1","expected":4.985617,"passed":false},{"actual":14.995685,"check":"partial repair probe 2","expected":15.003699,"passed":false},{"actual":10.0,"check":"boundary control 1","expected":10.0,"passed":true},{"actual":10.0,"check":"boundary control 2","expected":10.0,"passed":true},{"actual":9.862004,"check":"normal control 1","expected":9.862004,"passed":true},{"actual":0.0,"check":"normal control 2","expected":0.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression put probability terms 1\", \"actual\": 1.998413, \"expected\": 1.722771, \"passed\": false}, {\"check\": \"regression put probability terms 2\", \"actual\": 6.71447, \"expected\": 6.71447, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 5.013698, \"expected\": 4.985617, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 14.995685, \"expected\": 15.003699, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 10.0, \"expected\": 10.0, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 10.0, \"expected\": 10.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 9.862004, \"expected\": 9.862004, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.678,"exit_code":1,"observations":[{"actual":-4.838015,"check":"regression put probability terms 1","expected":1.722771,"passed":false},{"actual":0.339534,"check":"regression put probability terms 2","expected":6.71447,"passed":false},{"actual":4.985617,"check":"partial repair probe 1","expected":4.985617,"passed":true},{"actual":15.003699,"check":"partial repair probe 2","expected":15.003699,"passed":true},{"actual":10.0,"check":"boundary control 1","expected":10.0,"passed":true},{"actual":10.0,"check":"boundary control 2","expected":10.0,"passed":true},{"actual":9.862004,"check":"normal control 1","expected":9.862004,"passed":true},{"actual":0.0,"check":"normal control 2","expected":0.0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression put probability terms 1\", \"actual\": -4.838015, \"expected\": 1.722771, \"passed\": false}, {\"check\": \"regression put probability terms 2\", \"actual\": 0.339534, \"expected\": 6.71447, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 4.985617, \"expected\": 4.985617, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 15.003699, \"expected\": 15.003699, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 10.0, \"expected\": 10.0, \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 10.0, \"expected\": 10.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 9.862004, \"expected\": 9.862004, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 0.0, \"expected\": 0.0, \"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."}}