{"abstract":"Pairs on dividend-paying underlyings are flagged as violations.","category":"Options payoff and settlement","checks":8,"contract":"Inputs call price C, put price P, S, K, r, T, dividend yield q and tolerance. v = (C - P) - (S e^{-qT} - K e^{-rT}). If |v| <= tol return [\"none\", 0.0]; if v > 0 return [\"sell call buy put\", v]; else [\"buy call sell put\", -v], amounts rounded to 6.","contract_signature":"C, P, S, K, r, T, q, tol","evaluation_group":"w2-options_payoff_and_settlement-put-call-parity-check","failed_approach":"A linear 1 - qT approximation still differs from the exponential.","family":"w2-options_payoff_and_settlement-put-call-parity-check-dividend-adjustment","id":"FA-61816","implementations":{"attempt":{"sha256":"f3076973e3dd720b18474784baa74896e7c336e30387f048cf5db416da5a7805","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(C, P, S, K, r, T, q, tol):\n    v = (C - P) - (S * (1 - q * T) - K * math.exp(-r * T))\n    if abs(v) <= tol:\n        return ['none', 0.0]\n    if v > 0:\n        return ['sell call buy put', round(v, 6)]\n    return ['buy call sell put', round(-v, 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression dividend adjustment 1', [31.513, 8.25, 110.0, 90.0, 0.06, 1.0, 0.02, 0.01], ['sell call buy put', 0.199954]], ['regression dividend adjustment 2', [5.3445, 8.25, 95.0, 100.0, 0.03, 2.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 1', [17.0912, 8.25, 100.0, 90.0, 0.06, 0.25, 0.02, 0.05], ['buy call sell put', 1.999973]], ['partial repair probe 2', [4.3289, 8.25, 100.0, 100.0, 0.0, 2.0, 0.02, 0.05], ['none', 0.0]], ['normal control 1', [27.2412, 4.0, 110.0, 90.0, 0.06, 1.0, 0.0, 0.05], ['buy call sell put', 1.999992]], ['normal control 2', [14.2899, 8.25, 95.0, 90.0, 0.06, 0.25, 0.0, 0.01], ['buy call sell put', 0.300025]], ['normal control 3', [12.2412, 4.0, 95.0, 90.0, 0.03, 2.0, 0.0, 0.05], ['buy call sell put', 1.999992]], ['normal control 4', [19.5912, 8.25, 95.0, 90.0, 0.03, 2.0, 0.0, 0.05], ['sell call buy put', 1.100008]]], [['regression dividend adjustment 1', [6.0302, 1.5, 95.0, 90.0, 0.0, 0.25, 0.02, 0.01], ['none', 0.0]], ['regression dividend adjustment 2', [4.3105, 8.25, 100.0, 105.0, 0.06, 0.25, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 1', [4.9793, 4.0, 100.0, 100.0, 0.03, 1.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 2', [21.8219, 4.0, 110.0, 90.0, 0.0, 1.0, 0.02, 0.01], ['none', 0.0]], ['normal control 1', [6.504, 1.5, 110.0, 105.0, 0.0, 2.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [3.254, 8.25, 100.0, 105.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 3', [22.6, 1.5, 110.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['sell call buy put', 1.1]], ['normal control 4', [7.1725, 1.5, 95.0, 90.0, 0.03, 0.25, 0.0, 0.01], ['none', 0.0]]], [['regression dividend adjustment 1', [-4.375, 8.25, 95.0, 105.0, 0.0, 2.0, 0.02, 0.01], ['sell call buy put', 1.100003]], ['regression dividend adjustment 2', [13.5402, 1.5, 110.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['sell call buy put', 1.100021]], ['partial repair probe 1', [13.0201, 1.5, 100.0, 90.0, 0.03, 2.0, 0.02, 0.01], ['sell call buy put', 0.199964]], ['partial repair probe 2', [3.2868, 1.5, 110.0, 105.0, 0.0, 2.0, 0.02, 0.05], ['sell call buy put', 1.099962]], ['normal control 1', [4.3607, 8.25, 95.0, 105.0, 0.03, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 2', [5.5734, 4.0, 95.0, 105.0, 0.06, 2.0, 0.0, 0.01], ['buy call sell put', 0.299954]], ['normal control 3', [4.35, 8.25, 95.0, 100.0, 0.0, 0.25, 0.0, 0.05], ['sell call buy put', 1.1]], ['normal control 4', [16.25, 8.25, 100.0, 90.0, 0.0, 2.0, 0.0, 0.01], ['buy call sell put', 2.0]]], [['regression dividend adjustment 1', [-0.6516, 1.5, 95.0, 105.0, 0.06, 2.0, 0.02, 0.05], ['buy call sell put', 0.299951]], ['regression dividend adjustment 2', [10.0829, 4.0, 100.0, 90.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 1', [14.7622, 8.25, 95.0, 90.0, 0.03, 2.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 2', [5.4145, 8.25, 100.0, 105.0, 0.06, 0.25, 0.02, 0.05], ['sell call buy put', 1.100006]], ['normal control 1', [1.3492, 8.25, 95.0, 105.0, 0.03, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [3.7, 4.0, 100.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['normal control 3', [12.558, 8.25, 95.0, 100.0, 0.06, 2.0, 0.0, 0.01], ['buy call sell put', 1.999956]], ['normal control 4', [10.1735, 8.25, 95.0, 100.0, 0.06, 1.0, 0.0, 0.05], ['sell call buy put', 1.099953]]], [['regression dividend adjustment 1', [0.215, 4.0, 95.0, 100.0, 0.06, 0.25, 0.02, 0.05], ['sell call buy put', 0.200008]], ['regression dividend adjustment 2', [9.2213, 8.25, 100.0, 100.0, 0.03, 1.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 1', [10.1485, 8.25, 100.0, 100.0, 0.03, 2.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 2', [-0.275, 8.25, 95.0, 100.0, 0.0, 2.0, 0.02, 0.05], ['sell call buy put', 0.200003]], ['normal control 1', [-0.996, 4.0, 100.0, 105.0, 0.0, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 2', [21.2, 1.5, 110.0, 90.0, 0.0, 2.0, 0.0, 0.01], ['buy call sell put', 0.3]], ['normal control 3', [13.996, 4.0, 110.0, 100.0, 0.0, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [9.004, 4.0, 110.0, 105.0, 0.0, 2.0, 0.0, 0.05], ['none', 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":"5673f054b919e0819fe8b13eca7f9b74ed152a0c2363bc6becf864b4ca59ff2c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(C, P, S, K, r, T, q, tol):\n    v = (C - P) - (S - K * math.exp(-r * T))\n    if abs(v) <= tol:\n        return ['none', 0.0]\n    if v > 0:\n        return ['sell call buy put', round(v, 6)]\n    return ['buy call sell put', round(-v, 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression dividend adjustment 1', [31.513, 8.25, 110.0, 90.0, 0.06, 1.0, 0.02, 0.01], ['sell call buy put', 0.199954]], ['regression dividend adjustment 2', [5.3445, 8.25, 95.0, 100.0, 0.03, 2.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 1', [17.0912, 8.25, 100.0, 90.0, 0.06, 0.25, 0.02, 0.05], ['buy call sell put', 1.999973]], ['partial repair probe 2', [4.3289, 8.25, 100.0, 100.0, 0.0, 2.0, 0.02, 0.05], ['none', 0.0]], ['normal control 1', [27.2412, 4.0, 110.0, 90.0, 0.06, 1.0, 0.0, 0.05], ['buy call sell put', 1.999992]], ['normal control 2', [14.2899, 8.25, 95.0, 90.0, 0.06, 0.25, 0.0, 0.01], ['buy call sell put', 0.300025]], ['normal control 3', [12.2412, 4.0, 95.0, 90.0, 0.03, 2.0, 0.0, 0.05], ['buy call sell put', 1.999992]], ['normal control 4', [19.5912, 8.25, 95.0, 90.0, 0.03, 2.0, 0.0, 0.05], ['sell call buy put', 1.100008]]], [['regression dividend adjustment 1', [6.0302, 1.5, 95.0, 90.0, 0.0, 0.25, 0.02, 0.01], ['none', 0.0]], ['regression dividend adjustment 2', [4.3105, 8.25, 100.0, 105.0, 0.06, 0.25, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 1', [4.9793, 4.0, 100.0, 100.0, 0.03, 1.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 2', [21.8219, 4.0, 110.0, 90.0, 0.0, 1.0, 0.02, 0.01], ['none', 0.0]], ['normal control 1', [6.504, 1.5, 110.0, 105.0, 0.0, 2.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [3.254, 8.25, 100.0, 105.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 3', [22.6, 1.5, 110.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['sell call buy put', 1.1]], ['normal control 4', [7.1725, 1.5, 95.0, 90.0, 0.03, 0.25, 0.0, 0.01], ['none', 0.0]]], [['regression dividend adjustment 1', [-4.375, 8.25, 95.0, 105.0, 0.0, 2.0, 0.02, 0.01], ['sell call buy put', 1.100003]], ['regression dividend adjustment 2', [13.5402, 1.5, 110.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['sell call buy put', 1.100021]], ['partial repair probe 1', [13.0201, 1.5, 100.0, 90.0, 0.03, 2.0, 0.02, 0.01], ['sell call buy put', 0.199964]], ['partial repair probe 2', [3.2868, 1.5, 110.0, 105.0, 0.0, 2.0, 0.02, 0.05], ['sell call buy put', 1.099962]], ['normal control 1', [4.3607, 8.25, 95.0, 105.0, 0.03, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 2', [5.5734, 4.0, 95.0, 105.0, 0.06, 2.0, 0.0, 0.01], ['buy call sell put', 0.299954]], ['normal control 3', [4.35, 8.25, 95.0, 100.0, 0.0, 0.25, 0.0, 0.05], ['sell call buy put', 1.1]], ['normal control 4', [16.25, 8.25, 100.0, 90.0, 0.0, 2.0, 0.0, 0.01], ['buy call sell put', 2.0]]], [['regression dividend adjustment 1', [-0.6516, 1.5, 95.0, 105.0, 0.06, 2.0, 0.02, 0.05], ['buy call sell put', 0.299951]], ['regression dividend adjustment 2', [10.0829, 4.0, 100.0, 90.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 1', [14.7622, 8.25, 95.0, 90.0, 0.03, 2.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 2', [5.4145, 8.25, 100.0, 105.0, 0.06, 0.25, 0.02, 0.05], ['sell call buy put', 1.100006]], ['normal control 1', [1.3492, 8.25, 95.0, 105.0, 0.03, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [3.7, 4.0, 100.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['normal control 3', [12.558, 8.25, 95.0, 100.0, 0.06, 2.0, 0.0, 0.01], ['buy call sell put', 1.999956]], ['normal control 4', [10.1735, 8.25, 95.0, 100.0, 0.06, 1.0, 0.0, 0.05], ['sell call buy put', 1.099953]]], [['regression dividend adjustment 1', [0.215, 4.0, 95.0, 100.0, 0.06, 0.25, 0.02, 0.05], ['sell call buy put', 0.200008]], ['regression dividend adjustment 2', [9.2213, 8.25, 100.0, 100.0, 0.03, 1.0, 0.02, 0.05], ['none', 0.0]], ['partial repair probe 1', [10.1485, 8.25, 100.0, 100.0, 0.03, 2.0, 0.02, 0.01], ['none', 0.0]], ['partial repair probe 2', [-0.275, 8.25, 95.0, 100.0, 0.0, 2.0, 0.02, 0.05], ['sell call buy put', 0.200003]], ['normal control 1', [-0.996, 4.0, 100.0, 105.0, 0.0, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 2', [21.2, 1.5, 110.0, 90.0, 0.0, 2.0, 0.0, 0.01], ['buy call sell put', 0.3]], ['normal control 3', [13.996, 4.0, 110.0, 100.0, 0.0, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [9.004, 4.0, 110.0, 105.0, 0.0, 2.0, 0.0, 0.05], ['none', 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-put-call-parity-check-dividend-adjustment","generated_at":"2026-09-29T14:46:58.744028+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 spot term is not discounted by e^{-qT}.","sha256":"f1824dd702bea94dc7f3dc7fce5ffcda13a87e9b94ca6f45a5a536c789a2c61d","title":"Put-call parity violation detector: the dividend yield is ignored · 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":41.458,"exit_code":1,"observations":[{"actual":["sell call buy put",0.221808],"check":"regression dividend adjustment 1","expected":["sell call buy put",0.199954],"passed":false},{"actual":["sell call buy put",0.070953],"check":"regression dividend adjustment 2","expected":["none",0.0],"passed":false},{"actual":["buy call sell put",1.998725],"check":"partial repair probe 1","expected":["buy call sell put",1.999973],"passed":false},{"actual":["sell call buy put",0.0789],"check":"partial repair probe 2","expected":["none",0.0],"passed":false},{"actual":["buy call sell put",1.999992],"check":"normal control 1","expected":["buy call sell put",1.999992],"passed":true},{"actual":["buy call sell put",0.300025],"check":"normal control 2","expected":["buy call sell put",0.300025],"passed":true},{"actual":["buy call sell put",1.999992],"check":"normal control 3","expected":["buy call sell put",1.999992],"passed":true},{"actual":["sell call buy put",1.100008],"check":"normal control 4","expected":["sell call buy put",1.100008],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression dividend adjustment 1\", \"actual\": [\"sell call buy put\", 0.221808], \"expected\": [\"sell call buy put\", 0.199954], \"passed\": false}, {\"check\": \"regression dividend adjustment 2\", \"actual\": [\"sell call buy put\", 0.070953], \"expected\": [\"none\", 0.0], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [\"buy call sell put\", 1.998725], \"expected\": [\"buy call sell put\", 1.999973], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [\"sell call buy put\", 0.0789], \"expected\": [\"none\", 0.0], \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": [\"buy call sell put\", 1.999992], \"expected\": [\"buy call sell put\", 1.999992], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [\"buy call sell put\", 0.300025], \"expected\": [\"buy call sell put\", 0.300025], \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": [\"buy call sell put\", 1.999992], \"expected\": [\"buy call sell put\", 1.999992], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [\"sell call buy put\", 1.100008], \"expected\": [\"sell call buy put\", 1.100008], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.551,"exit_code":1,"observations":[{"actual":["buy call sell put",1.978192],"check":"regression dividend adjustment 1","expected":["sell call buy put",0.199954],"passed":false},{"actual":["buy call sell put",3.729047],"check":"regression dividend adjustment 2","expected":["none",0.0],"passed":false},{"actual":["buy call sell put",2.498725],"check":"partial repair probe 1","expected":["buy call sell put",1.999973],"passed":false},{"actual":["buy call sell put",3.9211],"check":"partial repair probe 2","expected":["none",0.0],"passed":false},{"actual":["buy call sell put",1.999992],"check":"normal control 1","expected":["buy call sell put",1.999992],"passed":true},{"actual":["buy call sell put",0.300025],"check":"normal control 2","expected":["buy call sell put",0.300025],"passed":true},{"actual":["buy call sell put",1.999992],"check":"normal control 3","expected":["buy call sell put",1.999992],"passed":true},{"actual":["sell call buy put",1.100008],"check":"normal control 4","expected":["sell call buy put",1.100008],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression dividend adjustment 1\", \"actual\": [\"buy call sell put\", 1.978192], \"expected\": [\"sell call buy put\", 0.199954], \"passed\": false}, {\"check\": \"regression dividend adjustment 2\", \"actual\": [\"buy call sell put\", 3.729047], \"expected\": [\"none\", 0.0], \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": [\"buy call sell put\", 2.498725], \"expected\": [\"buy call sell put\", 1.999973], \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": [\"buy call sell put\", 3.9211], \"expected\": [\"none\", 0.0], \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": [\"buy call sell put\", 1.999992], \"expected\": [\"buy call sell put\", 1.999992], \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": [\"buy call sell put\", 0.300025], \"expected\": [\"buy call sell put\", 0.300025], \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": [\"buy call sell put\", 1.999992], \"expected\": [\"buy call sell put\", 1.999992], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [\"sell call buy put\", 1.100008], \"expected\": [\"sell call buy put\", 1.100008], \"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."}}