{"abstract":"Calls are exercised days before the dividend is relevant.","category":"Options payoff and settlement","checks":8,"contract":"Inputs call price, spot, strike, dividend and whether today is the last cum-dividend day. Exercise only on the last cum-dividend day, only if the call is in the money, and only if the dividend is strictly greater than the call's extrinsic value (price - intrinsic). Amounts compared exactly in cents. Return true/false.","contract_signature":"call_price, S, K, dividend, last_cum_day","evaluation_group":"w2-options_payoff_and_settlement-early-exercise-dividend","failed_approach":"Inverting the flag exercises on every other day.","family":"w2-options_payoff_and_settlement-early-exercise-dividend-timing-gate","id":"FA-61776","implementations":{"attempt":{"sha256":"61d15b219eb7d346509f9359e7908cf67f1d7bf1d08f151843a6fc296606c577","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(call_price, S, K, dividend, last_cum_day):\n    c = round(call_price * 100)\n    intrinsic = max(round(S * 100) - round(K * 100), 0)\n    if last_cum_day or intrinsic == 0:\n        return False\n    extrinsic = c - intrinsic\n    return round(dividend * 100) > extrinsic\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression timing gate 1', [10.25, 120.0, 110.0, 0.5, False], False], ['regression timing gate 2', [10.05, 100.0, 90.0, 0.060000000000000005, False], False], ['partial repair probe 1', [15.05, 105.0, 90.0, 0.5, True], True], ['partial repair probe 2', [5.5, 105.0, 100.0, 0.51, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [11.0, 100.0, 90.0, 1.0, True], False], ['normal control 2', [0.25, 105.0, 110.0, 0.5, True], False], ['normal control 3', [1.5, 98.0, 110.0, 1.0, False], False]], [['regression timing gate 1', [5.25, 105.0, 100.0, 1.0, False], False], ['regression timing gate 2', [16.0, 105.0, 90.0, 1.01, False], False], ['partial repair probe 1', [10.25, 120.0, 110.0, 0.26, True], True], ['partial repair probe 2', [15.25, 105.0, 90.0, 0.26, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.05, 100.0, 110.0, 0.5, True], False], ['normal control 2', [1.0, 100.0, 110.0, 0.25, False], False], ['normal control 3', [10.5, 100.0, 90.0, 0.5, True], False]], [['regression timing gate 1', [15.25, 105.0, 90.0, 1.0, False], False], ['regression timing gate 2', [5.05, 105.0, 100.0, 0.060000000000000005, False], False], ['partial repair probe 1', [15.25, 105.0, 90.0, 0.26, True], True], ['partial repair probe 2', [20.5, 120.0, 100.0, 1.0, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [15.25, 105.0, 90.0, 0.25, True], False], ['normal control 2', [1.5, 105.0, 110.0, 1.51, True], False], ['normal control 3', [0.5, 100.0, 110.0, 0.5, False], False]], [['regression timing gate 1', [8.05, 98.0, 90.0, 0.060000000000000005, False], False], ['regression timing gate 2', [5.25, 105.0, 100.0, 1.0, False], False], ['partial repair probe 1', [5.5, 105.0, 100.0, 1.0, True], True], ['partial repair probe 2', [20.05, 120.0, 100.0, 0.5, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [21.0, 120.0, 100.0, 0.5, True], False], ['normal control 2', [31.5, 120.0, 90.0, 0.25, False], False], ['normal control 3', [6.0, 105.0, 100.0, 1.0, False], False]], [['regression timing gate 1', [8.05, 98.0, 90.0, 1.0, False], False], ['regression timing gate 2', [10.25, 120.0, 110.0, 1.0, False], False], ['partial repair probe 1', [10.25, 100.0, 90.0, 0.5, True], True], ['partial repair probe 2', [21.0, 120.0, 100.0, 1.01, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.05, 98.0, 110.0, 0.05, False], False], ['normal control 2', [1.5, 100.0, 110.0, 1.51, True], False], ['normal control 3', [10.5, 120.0, 110.0, 0.5, True], False]]]\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":"27a21ca4e72bd908e01fd2eb1b4653932837c0d25b8ff4e5a07fe3a223b3b5af","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(call_price, S, K, dividend, last_cum_day):\n    c = round(call_price * 100)\n    intrinsic = max(round(S * 100) - round(K * 100), 0)\n    if intrinsic == 0:\n        return False\n    extrinsic = c - intrinsic\n    return round(dividend * 100) > extrinsic\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression timing gate 1', [10.25, 120.0, 110.0, 0.5, False], False], ['regression timing gate 2', [10.05, 100.0, 90.0, 0.060000000000000005, False], False], ['partial repair probe 1', [15.05, 105.0, 90.0, 0.5, True], True], ['partial repair probe 2', [5.5, 105.0, 100.0, 0.51, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [11.0, 100.0, 90.0, 1.0, True], False], ['normal control 2', [0.25, 105.0, 110.0, 0.5, True], False], ['normal control 3', [1.5, 98.0, 110.0, 1.0, False], False]], [['regression timing gate 1', [5.25, 105.0, 100.0, 1.0, False], False], ['regression timing gate 2', [16.0, 105.0, 90.0, 1.01, False], False], ['partial repair probe 1', [10.25, 120.0, 110.0, 0.26, True], True], ['partial repair probe 2', [15.25, 105.0, 90.0, 0.26, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.05, 100.0, 110.0, 0.5, True], False], ['normal control 2', [1.0, 100.0, 110.0, 0.25, False], False], ['normal control 3', [10.5, 100.0, 90.0, 0.5, True], False]], [['regression timing gate 1', [15.25, 105.0, 90.0, 1.0, False], False], ['regression timing gate 2', [5.05, 105.0, 100.0, 0.060000000000000005, False], False], ['partial repair probe 1', [15.25, 105.0, 90.0, 0.26, True], True], ['partial repair probe 2', [20.5, 120.0, 100.0, 1.0, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [15.25, 105.0, 90.0, 0.25, True], False], ['normal control 2', [1.5, 105.0, 110.0, 1.51, True], False], ['normal control 3', [0.5, 100.0, 110.0, 0.5, False], False]], [['regression timing gate 1', [8.05, 98.0, 90.0, 0.060000000000000005, False], False], ['regression timing gate 2', [5.25, 105.0, 100.0, 1.0, False], False], ['partial repair probe 1', [5.5, 105.0, 100.0, 1.0, True], True], ['partial repair probe 2', [20.05, 120.0, 100.0, 0.5, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [21.0, 120.0, 100.0, 0.5, True], False], ['normal control 2', [31.5, 120.0, 90.0, 0.25, False], False], ['normal control 3', [6.0, 105.0, 100.0, 1.0, False], False]], [['regression timing gate 1', [8.05, 98.0, 90.0, 1.0, False], False], ['regression timing gate 2', [10.25, 120.0, 110.0, 1.0, False], False], ['partial repair probe 1', [10.25, 100.0, 90.0, 0.5, True], True], ['partial repair probe 2', [21.0, 120.0, 100.0, 1.01, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.05, 98.0, 110.0, 0.05, False], False], ['normal control 2', [1.5, 100.0, 110.0, 1.51, True], False], ['normal control 3', [10.5, 120.0, 110.0, 0.5, True], False]]]\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-early-exercise-dividend-timing-gate","generated_at":"2026-09-29T14:46:58.422101+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 last-cum-day condition is not checked.","sha256":"2b5f077ad40d89dc98b01a9e1bc2d49b6523252ed715f1063b36f445c472d9a2","title":"Early call exercise before an ex-dividend date: early exercise is considered on any day · 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":39.851,"exit_code":1,"observations":[{"actual":true,"check":"regression timing gate 1","expected":false,"passed":false},{"actual":true,"check":"regression timing gate 2","expected":false,"passed":false},{"actual":false,"check":"partial repair probe 1","expected":true,"passed":false},{"actual":false,"check":"partial repair probe 2","expected":true,"passed":false},{"actual":false,"check":"boundary control 1","expected":false,"passed":true},{"actual":false,"check":"normal control 1","expected":false,"passed":true},{"actual":false,"check":"normal control 2","expected":false,"passed":true},{"actual":false,"check":"normal control 3","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression timing gate 1\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"regression timing gate 2\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.3,"exit_code":1,"observations":[{"actual":true,"check":"regression timing gate 1","expected":false,"passed":false},{"actual":true,"check":"regression timing gate 2","expected":false,"passed":false},{"actual":true,"check":"partial repair probe 1","expected":true,"passed":true},{"actual":true,"check":"partial repair probe 2","expected":true,"passed":true},{"actual":false,"check":"boundary control 1","expected":false,"passed":true},{"actual":false,"check":"normal control 1","expected":false,"passed":true},{"actual":false,"check":"normal control 2","expected":false,"passed":true},{"actual":false,"check":"normal control 3","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression timing gate 1\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"regression timing gate 2\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": false, \"expected\": false, \"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."}}