FA-61811 / Options payoff and settlement / Open access
Put-call parity violation detector: the trade labels are swapped · case 01
Rich calls are reported as a buy-call trade.
ROOT CAUSE
The positive-violation branch returns the reversal label.
VERIFIED REPAIR
When calls are rich, sell the call and buy the put.
Unsuccessful approach: Returning the signed violation still gives a negative amount for reversals.
Case 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.
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
import math
N = 1
observations = []
def solve(C, P, S, K, r, T, q, tol):
v = (C - P) - (S * math.exp(-q * T) - K * math.exp(-r * T))
if abs(v) <= tol:
return ['none', 0.0]
if v > 0:
return ['buy call sell put', round(v, 6)]
return ['sell call buy put', round(-v, 6)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression arbitrage direction 1', [4.465, 8.25, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['sell call buy put', 0.200008]], ['regression arbitrage direction 2', [9.7412, 1.5, 95.0, 90.0, 0.06, 1.0, 0.0, 0.01], ['buy call sell put', 1.999992]], ['partial repair probe 1', [-1.3, 4.0, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['partial repair probe 2', [10.3412, 1.5, 100.0, 90.0, 0.06, 0.25, 0.02, 0.05], ['buy call sell put', 1.999973]], ['normal control 1', [-1.9368, 1.5, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [0.0749, 4.0, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [14.2606, 8.25, 110.0, 105.0, 0.06, 0.25, 0.02, 0.05], ['none', 0.0]], ['normal control 4', [11.7452, 1.5, 95.0, 90.0, 0.03, 2.0, 0.0, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [21.1948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 0.200005]], ['regression arbitrage direction 2', [13.008, 1.5, 100.0, 100.0, 0.06, 2.0, 0.0, 0.01], ['sell call buy put', 0.200044]], ['partial repair probe 1', [-6.9211, 4.0, 100.0, 105.0, 0.0, 2.0, 0.02, 0.05], ['buy call sell put', 2.000044]], ['partial repair probe 2', [2.4554, 1.5, 100.0, 100.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000047]], ['normal control 1', [-12.221, 1.5, 95.0, 105.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [24.1732, 4.0, 100.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [16.6732, 1.5, 95.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-2.4251, 1.5, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [26.9225, 8.25, 110.0, 90.0, 0.03, 0.25, 0.0, 0.05], ['buy call sell put', 1.999975]], ['regression arbitrage direction 2', [12.0, 4.0, 110.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 2.0]], ['partial repair probe 1', [-7.3968, 1.5, 95.0, 105.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000019]], ['partial repair probe 2', [-3.8, 1.5, 95.0, 100.0, 0.0, 2.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['normal control 1', [-3.504, 1.5, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [-2.489, 1.5, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [6.496, 1.5, 95.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [-1.4948, 4.0, 100.0, 105.0, 0.0, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.7632, 4.0, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['sell call buy put', 0.199954]], ['regression arbitrage direction 2', [21.9102, 8.25, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 1.100008]], ['partial repair probe 1', [20.6948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.05], ['buy call sell put', 0.299995]], ['partial repair probe 2', [11.8798, 1.5, 100.0, 90.0, 0.03, 1.0, 0.02, 0.05], ['buy call sell put', 0.299969]], ['normal control 1', [16.5562, 4.0, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [7.1685, 1.5, 95.0, 90.0, 0.03, 0.25, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [18.254, 8.25, 100.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [14.1697, 4.0, 100.0, 90.0, 0.03, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.1, 4.0, 95.0, 100.0, 0.0, 0.25, 0.0, 0.01], ['sell call buy put', 1.1]], ['regression arbitrage direction 2', [14.0289, 8.25, 100.0, 90.0, 0.0, 2.0, 0.02, 0.01], ['buy call sell put', 0.300044]], ['partial repair probe 1', [-0.8279, 8.25, 95.0, 105.0, 0.03, 1.0, 0.02, 0.01], ['buy call sell put', 0.299993]], ['partial repair probe 2', [7.8661, 4.0, 95.0, 90.0, 0.06, 0.25, 0.02, 0.01], ['buy call sell put', 2.000011]], ['normal control 1', [9.0, 4.0, 110.0, 105.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [19.8275, 4.0, 110.0, 100.0, 0.03, 2.0, 0.0, 0.05], ['none', 0.0]], ['normal control 3', [10.1194, 8.25, 95.0, 105.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-1.7664, 4.0, 95.0, 105.0, 0.06, 1.0, 0.02, 0.05], ['none', 0.0]]]]
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 arbitrage direction 1 | ['buy call sell put', 0.200008] | ['sell call buy put', 0.200008] | Failed |
| regression arbitrage direction 2 | ['sell call buy put', 1.999992] | ['buy call sell put', 1.999992] | Failed |
| partial repair probe 1 | ['sell call buy put', 0.3] | ['buy call sell put', 0.3] | Failed |
| partial repair probe 2 | ['sell call buy put', 1.999973] | ['buy call sell put', 1.999973] | Failed |
| normal control 1 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 2 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 3 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 4 | ['none', 0.0] | ['none', 0.0] | Passed |
SHA-256 / 74ce15e1f7b2ab531d27b5fe39ca9cf7ddef4a30c107f4426e17ae26621a4eba
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(C, P, S, K, r, T, q, tol):
v = (C - P) - (S * math.exp(-q * T) - K * math.exp(-r * T))
if abs(v) <= tol:
return ['none', 0.0]
if v > 0:
return ['sell call buy put', round(v, 6)]
return ['buy call sell put', round(v, 6)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression arbitrage direction 1', [4.465, 8.25, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['sell call buy put', 0.200008]], ['regression arbitrage direction 2', [9.7412, 1.5, 95.0, 90.0, 0.06, 1.0, 0.0, 0.01], ['buy call sell put', 1.999992]], ['partial repair probe 1', [-1.3, 4.0, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['partial repair probe 2', [10.3412, 1.5, 100.0, 90.0, 0.06, 0.25, 0.02, 0.05], ['buy call sell put', 1.999973]], ['normal control 1', [-1.9368, 1.5, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [0.0749, 4.0, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [14.2606, 8.25, 110.0, 105.0, 0.06, 0.25, 0.02, 0.05], ['none', 0.0]], ['normal control 4', [11.7452, 1.5, 95.0, 90.0, 0.03, 2.0, 0.0, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [21.1948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 0.200005]], ['regression arbitrage direction 2', [13.008, 1.5, 100.0, 100.0, 0.06, 2.0, 0.0, 0.01], ['sell call buy put', 0.200044]], ['partial repair probe 1', [-6.9211, 4.0, 100.0, 105.0, 0.0, 2.0, 0.02, 0.05], ['buy call sell put', 2.000044]], ['partial repair probe 2', [2.4554, 1.5, 100.0, 100.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000047]], ['normal control 1', [-12.221, 1.5, 95.0, 105.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [24.1732, 4.0, 100.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [16.6732, 1.5, 95.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-2.4251, 1.5, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [26.9225, 8.25, 110.0, 90.0, 0.03, 0.25, 0.0, 0.05], ['buy call sell put', 1.999975]], ['regression arbitrage direction 2', [12.0, 4.0, 110.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 2.0]], ['partial repair probe 1', [-7.3968, 1.5, 95.0, 105.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000019]], ['partial repair probe 2', [-3.8, 1.5, 95.0, 100.0, 0.0, 2.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['normal control 1', [-3.504, 1.5, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [-2.489, 1.5, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [6.496, 1.5, 95.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [-1.4948, 4.0, 100.0, 105.0, 0.0, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.7632, 4.0, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['sell call buy put', 0.199954]], ['regression arbitrage direction 2', [21.9102, 8.25, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 1.100008]], ['partial repair probe 1', [20.6948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.05], ['buy call sell put', 0.299995]], ['partial repair probe 2', [11.8798, 1.5, 100.0, 90.0, 0.03, 1.0, 0.02, 0.05], ['buy call sell put', 0.299969]], ['normal control 1', [16.5562, 4.0, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [7.1685, 1.5, 95.0, 90.0, 0.03, 0.25, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [18.254, 8.25, 100.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [14.1697, 4.0, 100.0, 90.0, 0.03, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.1, 4.0, 95.0, 100.0, 0.0, 0.25, 0.0, 0.01], ['sell call buy put', 1.1]], ['regression arbitrage direction 2', [14.0289, 8.25, 100.0, 90.0, 0.0, 2.0, 0.02, 0.01], ['buy call sell put', 0.300044]], ['partial repair probe 1', [-0.8279, 8.25, 95.0, 105.0, 0.03, 1.0, 0.02, 0.01], ['buy call sell put', 0.299993]], ['partial repair probe 2', [7.8661, 4.0, 95.0, 90.0, 0.06, 0.25, 0.02, 0.01], ['buy call sell put', 2.000011]], ['normal control 1', [9.0, 4.0, 110.0, 105.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [19.8275, 4.0, 110.0, 100.0, 0.03, 2.0, 0.0, 0.05], ['none', 0.0]], ['normal control 3', [10.1194, 8.25, 95.0, 105.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-1.7664, 4.0, 95.0, 105.0, 0.06, 1.0, 0.02, 0.05], ['none', 0.0]]]]
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 arbitrage direction 1 | ['sell call buy put', 0.200008] | ['sell call buy put', 0.200008] | Passed |
| regression arbitrage direction 2 | ['buy call sell put', -1.999992] | ['buy call sell put', 1.999992] | Failed |
| partial repair probe 1 | ['buy call sell put', -0.3] | ['buy call sell put', 0.3] | Failed |
| partial repair probe 2 | ['buy call sell put', -1.999973] | ['buy call sell put', 1.999973] | Failed |
| normal control 1 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 2 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 3 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 4 | ['none', 0.0] | ['none', 0.0] | Passed |
SHA-256 / 06b9b984696b93a411cc7778a29ec40d3141b62c7b3b1420f15c3718353c3fa0
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(C, P, S, K, r, T, q, tol):
v = (C - P) - (S * math.exp(-q * T) - K * math.exp(-r * T))
if abs(v) <= tol:
return ['none', 0.0]
if v > 0:
return ['sell call buy put', round(v, 6)]
return ['buy call sell put', round(-v, 6)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression arbitrage direction 1', [4.465, 8.25, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['sell call buy put', 0.200008]], ['regression arbitrage direction 2', [9.7412, 1.5, 95.0, 90.0, 0.06, 1.0, 0.0, 0.01], ['buy call sell put', 1.999992]], ['partial repair probe 1', [-1.3, 4.0, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['partial repair probe 2', [10.3412, 1.5, 100.0, 90.0, 0.06, 0.25, 0.02, 0.05], ['buy call sell put', 1.999973]], ['normal control 1', [-1.9368, 1.5, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [0.0749, 4.0, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [14.2606, 8.25, 110.0, 105.0, 0.06, 0.25, 0.02, 0.05], ['none', 0.0]], ['normal control 4', [11.7452, 1.5, 95.0, 90.0, 0.03, 2.0, 0.0, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [21.1948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 0.200005]], ['regression arbitrage direction 2', [13.008, 1.5, 100.0, 100.0, 0.06, 2.0, 0.0, 0.01], ['sell call buy put', 0.200044]], ['partial repair probe 1', [-6.9211, 4.0, 100.0, 105.0, 0.0, 2.0, 0.02, 0.05], ['buy call sell put', 2.000044]], ['partial repair probe 2', [2.4554, 1.5, 100.0, 100.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000047]], ['normal control 1', [-12.221, 1.5, 95.0, 105.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [24.1732, 4.0, 100.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [16.6732, 1.5, 95.0, 90.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-2.4251, 1.5, 100.0, 100.0, 0.0, 2.0, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [26.9225, 8.25, 110.0, 90.0, 0.03, 0.25, 0.0, 0.05], ['buy call sell put', 1.999975]], ['regression arbitrage direction 2', [12.0, 4.0, 110.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['buy call sell put', 2.0]], ['partial repair probe 1', [-7.3968, 1.5, 95.0, 105.0, 0.03, 1.0, 0.0, 0.05], ['buy call sell put', 2.000019]], ['partial repair probe 2', [-3.8, 1.5, 95.0, 100.0, 0.0, 2.0, 0.0, 0.05], ['buy call sell put', 0.3]], ['normal control 1', [-3.504, 1.5, 95.0, 100.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [-2.489, 1.5, 95.0, 100.0, 0.06, 0.25, 0.02, 0.01], ['none', 0.0]], ['normal control 3', [6.496, 1.5, 95.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [-1.4948, 4.0, 100.0, 105.0, 0.0, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.7632, 4.0, 100.0, 105.0, 0.06, 0.25, 0.0, 0.05], ['sell call buy put', 0.199954]], ['regression arbitrage direction 2', [21.9102, 8.25, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['sell call buy put', 1.100008]], ['partial repair probe 1', [20.6948, 4.0, 110.0, 100.0, 0.06, 2.0, 0.02, 0.05], ['buy call sell put', 0.299995]], ['partial repair probe 2', [11.8798, 1.5, 100.0, 90.0, 0.03, 1.0, 0.02, 0.05], ['buy call sell put', 0.299969]], ['normal control 1', [16.5562, 4.0, 110.0, 105.0, 0.06, 2.0, 0.02, 0.01], ['none', 0.0]], ['normal control 2', [7.1685, 1.5, 95.0, 90.0, 0.03, 0.25, 0.0, 0.01], ['none', 0.0]], ['normal control 3', [18.254, 8.25, 100.0, 90.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 4', [14.1697, 4.0, 100.0, 90.0, 0.03, 0.25, 0.02, 0.01], ['none', 0.0]]], [['regression arbitrage direction 1', [0.1, 4.0, 95.0, 100.0, 0.0, 0.25, 0.0, 0.01], ['sell call buy put', 1.1]], ['regression arbitrage direction 2', [14.0289, 8.25, 100.0, 90.0, 0.0, 2.0, 0.02, 0.01], ['buy call sell put', 0.300044]], ['partial repair probe 1', [-0.8279, 8.25, 95.0, 105.0, 0.03, 1.0, 0.02, 0.01], ['buy call sell put', 0.299993]], ['partial repair probe 2', [7.8661, 4.0, 95.0, 90.0, 0.06, 0.25, 0.02, 0.01], ['buy call sell put', 2.000011]], ['normal control 1', [9.0, 4.0, 110.0, 105.0, 0.0, 1.0, 0.0, 0.05], ['none', 0.0]], ['normal control 2', [19.8275, 4.0, 110.0, 100.0, 0.03, 2.0, 0.0, 0.05], ['none', 0.0]], ['normal control 3', [10.1194, 8.25, 95.0, 105.0, 0.06, 2.0, 0.0, 0.01], ['none', 0.0]], ['normal control 4', [-1.7664, 4.0, 95.0, 105.0, 0.06, 1.0, 0.02, 0.05], ['none', 0.0]]]]
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 arbitrage direction 1 | ['sell call buy put', 0.200008] | ['sell call buy put', 0.200008] | Passed |
| regression arbitrage direction 2 | ['buy call sell put', 1.999992] | ['buy call sell put', 1.999992] | Passed |
| partial repair probe 1 | ['buy call sell put', 0.3] | ['buy call sell put', 0.3] | Passed |
| partial repair probe 2 | ['buy call sell put', 1.999973] | ['buy call sell put', 1.999973] | Passed |
| normal control 1 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 2 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 3 | ['none', 0.0] | ['none', 0.0] | Passed |
| normal control 4 | ['none', 0.0] | ['none', 0.0] | Passed |
SHA-256 / f14b51bfe07bfff2b61b273302650da2c76e07e3b0389b7f97f0dc030f3994e9
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.734659+00:00.
Case digest / 5d39e56373b9cc96dde6f0eb8b99568978f4caeb0e388761bab976350e4f06ce