FA-61771 / Options payoff and settlement / Open access
Early call exercise before an ex-dividend date: the dividend is compared with the whole call price · case 01
Deep in-the-money calls are never exercised early.
ROOT CAUSE
The comparison uses the full premium instead of its time value.
VERIFIED REPAIR
Compare the dividend with price minus intrinsic.
Unsuccessful approach: Comparing with intrinsic value is unrelated to what exercise forfeits.
Case 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.
Why this case matters
Option expiry, exercise and settlement engines move cash and shares; a wrong branch misstates obligations.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(call_price, S, K, dividend, last_cum_day):
c = round(call_price * 100)
intrinsic = max(round(S * 100) - round(K * 100), 0)
if not last_cum_day or intrinsic == 0:
return False
extrinsic = c - intrinsic
return round(dividend * 100) > c
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression extrinsic measure 1', [15.25, 105.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [9.5, 98.0, 90.0, 1.51, True], True], ['partial repair probe 1', [8.5, 98.0, 90.0, 0.51, True], True], ['partial repair probe 2', [5.05, 105.0, 100.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [9.0, 98.0, 90.0, 1.0, False], False], ['normal control 2', [1.0, 98.0, 100.0, 1.0, True], False], ['normal control 3', [0.25, 105.0, 110.0, 0.25, True], False]], [['regression extrinsic measure 1', [8.25, 98.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [31.5, 120.0, 90.0, 1.51, True], True], ['partial repair probe 1', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 2', [10.05, 100.0, 90.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.25, 98.0, 100.0, 1.0, True], False], ['normal control 2', [1.5, 100.0, 100.0, 1.5, True], False], ['normal control 3', [8.5, 98.0, 90.0, 0.5, False], False]], [['regression extrinsic measure 1', [9.5, 98.0, 90.0, 1.51, True], True], ['regression extrinsic measure 2', [5.25, 105.0, 100.0, 0.26, True], True], ['partial repair probe 1', [10.25, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.5, True], False], ['normal control 2', [1.0, 100.0, 100.0, 1.0, True], False], ['normal control 3', [15.5, 105.0, 90.0, 0.5, True], False]], [['regression extrinsic measure 1', [15.05, 105.0, 90.0, 0.25, True], True], ['regression extrinsic measure 2', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 1', [16.5, 105.0, 90.0, 1.51, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.25, False], False], ['normal control 2', [6.0, 105.0, 100.0, 0.25, True], False], ['normal control 3', [6.5, 105.0, 100.0, 0.5, False], False]], [['regression extrinsic measure 1', [6.5, 105.0, 100.0, 1.51, True], True], ['regression extrinsic measure 2', [11.0, 100.0, 90.0, 1.01, True], True], ['partial repair probe 1', [10.05, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [9.0, 98.0, 90.0, 1.01, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [30.25, 120.0, 90.0, 0.25, True], False], ['normal control 2', [1.5, 98.0, 100.0, 1.51, True], False], ['normal control 3', [1.0, 105.0, 110.0, 1.0, True], False]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression extrinsic measure 1 | False | True | Failed |
| regression extrinsic measure 2 | False | True | Failed |
| partial repair probe 1 | False | True | Failed |
| partial repair probe 2 | False | True | Failed |
| boundary control 1 | False | False | Passed |
| normal control 1 | False | False | Passed |
| normal control 2 | False | False | Passed |
| normal control 3 | False | False | Passed |
SHA-256 / cb8a1e1b20e9f5a876402fc453a234ee1193a0d996454961004ab0d8c5d55a9a
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(call_price, S, K, dividend, last_cum_day):
c = round(call_price * 100)
intrinsic = max(round(S * 100) - round(K * 100), 0)
if not last_cum_day or intrinsic == 0:
return False
extrinsic = c - intrinsic
return round(dividend * 100) > intrinsic
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression extrinsic measure 1', [15.25, 105.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [9.5, 98.0, 90.0, 1.51, True], True], ['partial repair probe 1', [8.5, 98.0, 90.0, 0.51, True], True], ['partial repair probe 2', [5.05, 105.0, 100.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [9.0, 98.0, 90.0, 1.0, False], False], ['normal control 2', [1.0, 98.0, 100.0, 1.0, True], False], ['normal control 3', [0.25, 105.0, 110.0, 0.25, True], False]], [['regression extrinsic measure 1', [8.25, 98.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [31.5, 120.0, 90.0, 1.51, True], True], ['partial repair probe 1', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 2', [10.05, 100.0, 90.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.25, 98.0, 100.0, 1.0, True], False], ['normal control 2', [1.5, 100.0, 100.0, 1.5, True], False], ['normal control 3', [8.5, 98.0, 90.0, 0.5, False], False]], [['regression extrinsic measure 1', [9.5, 98.0, 90.0, 1.51, True], True], ['regression extrinsic measure 2', [5.25, 105.0, 100.0, 0.26, True], True], ['partial repair probe 1', [10.25, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.5, True], False], ['normal control 2', [1.0, 100.0, 100.0, 1.0, True], False], ['normal control 3', [15.5, 105.0, 90.0, 0.5, True], False]], [['regression extrinsic measure 1', [15.05, 105.0, 90.0, 0.25, True], True], ['regression extrinsic measure 2', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 1', [16.5, 105.0, 90.0, 1.51, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.25, False], False], ['normal control 2', [6.0, 105.0, 100.0, 0.25, True], False], ['normal control 3', [6.5, 105.0, 100.0, 0.5, False], False]], [['regression extrinsic measure 1', [6.5, 105.0, 100.0, 1.51, True], True], ['regression extrinsic measure 2', [11.0, 100.0, 90.0, 1.01, True], True], ['partial repair probe 1', [10.05, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [9.0, 98.0, 90.0, 1.01, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [30.25, 120.0, 90.0, 0.25, True], False], ['normal control 2', [1.5, 98.0, 100.0, 1.51, True], False], ['normal control 3', [1.0, 105.0, 110.0, 1.0, True], False]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression extrinsic measure 1 | False | True | Failed |
| regression extrinsic measure 2 | False | True | Failed |
| partial repair probe 1 | False | True | Failed |
| partial repair probe 2 | False | True | Failed |
| boundary control 1 | False | False | Passed |
| normal control 1 | False | False | Passed |
| normal control 2 | False | False | Passed |
| normal control 3 | False | False | Passed |
SHA-256 / 284ff3a869ee163b003123b5ca81ab3e3d66489c7198b39ce1163e2f5398496f
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(call_price, S, K, dividend, last_cum_day):
c = round(call_price * 100)
intrinsic = max(round(S * 100) - round(K * 100), 0)
if not last_cum_day or intrinsic == 0:
return False
extrinsic = c - intrinsic
return round(dividend * 100) > extrinsic
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression extrinsic measure 1', [15.25, 105.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [9.5, 98.0, 90.0, 1.51, True], True], ['partial repair probe 1', [8.5, 98.0, 90.0, 0.51, True], True], ['partial repair probe 2', [5.05, 105.0, 100.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [9.0, 98.0, 90.0, 1.0, False], False], ['normal control 2', [1.0, 98.0, 100.0, 1.0, True], False], ['normal control 3', [0.25, 105.0, 110.0, 0.25, True], False]], [['regression extrinsic measure 1', [8.25, 98.0, 90.0, 1.0, True], True], ['regression extrinsic measure 2', [31.5, 120.0, 90.0, 1.51, True], True], ['partial repair probe 1', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 2', [10.05, 100.0, 90.0, 0.25, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [0.25, 98.0, 100.0, 1.0, True], False], ['normal control 2', [1.5, 100.0, 100.0, 1.5, True], False], ['normal control 3', [8.5, 98.0, 90.0, 0.5, False], False]], [['regression extrinsic measure 1', [9.5, 98.0, 90.0, 1.51, True], True], ['regression extrinsic measure 2', [5.25, 105.0, 100.0, 0.26, True], True], ['partial repair probe 1', [10.25, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.5, True], False], ['normal control 2', [1.0, 100.0, 100.0, 1.0, True], False], ['normal control 3', [15.5, 105.0, 90.0, 0.5, True], False]], [['regression extrinsic measure 1', [15.05, 105.0, 90.0, 0.25, True], True], ['regression extrinsic measure 2', [30.05, 120.0, 90.0, 1.0, True], True], ['partial repair probe 1', [16.5, 105.0, 90.0, 1.51, True], True], ['partial repair probe 2', [15.05, 105.0, 90.0, 0.060000000000000005, 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.25, False], False], ['normal control 2', [6.0, 105.0, 100.0, 0.25, True], False], ['normal control 3', [6.5, 105.0, 100.0, 0.5, False], False]], [['regression extrinsic measure 1', [6.5, 105.0, 100.0, 1.51, True], True], ['regression extrinsic measure 2', [11.0, 100.0, 90.0, 1.01, True], True], ['partial repair probe 1', [10.05, 100.0, 90.0, 1.0, True], True], ['partial repair probe 2', [9.0, 98.0, 90.0, 1.01, True], True], ['boundary control 1', [10.5, 110.0, 100.0, 0.5, True], False], ['normal control 1', [30.25, 120.0, 90.0, 0.25, True], False], ['normal control 2', [1.5, 98.0, 100.0, 1.51, True], False], ['normal control 3', [1.0, 105.0, 110.0, 1.0, True], False]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression extrinsic measure 1 | True | True | Passed |
| regression extrinsic measure 2 | True | True | Passed |
| partial repair probe 1 | True | True | Passed |
| partial repair probe 2 | True | True | Passed |
| boundary control 1 | False | False | Passed |
| normal control 1 | False | False | Passed |
| normal control 2 | False | False | Passed |
| normal control 3 | False | False | Passed |
SHA-256 / 87d21d2d74255098782d1ae196b3a5ec27f2ba31064ff5fbea03d20a16313fd9
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:46:58.420751+00:00.
Case digest / b8ce0a7e0e9c0142d68e66921859ae800009fea7e262ef1c031c5590a95f9b60