FAILURE MAP
← Case archive

FA-61831 / Options payoff and settlement / Open access

Option order price tick rounding: penny classes keep a one-cent tick above 3.00 · case 01

Penny-class orders above 3.00 are priced in cents.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The large-price branch uses 10 mills for penny classes.

VERIFIED REPAIR

Penny classes use 0.05 at or above 3.00.

Unsuccessful approach: Using 0.10 for penny classes ignores the program.

Case contract

Inputs a limit price (up to 3 decimals), side and penny-program flag. Work in mills. Below 3.000 the tick is 0.01 for penny classes and 0.05 otherwise; at or above 3.000 it is 0.05 for penny classes and 0.10 otherwise. Buy orders round down to a tick, sell orders round up; prices already on a tick are unchanged. Return the price as a float.

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(price, side, penny):
    m = round(price * 1000)
    small = m < 3000
    tick = (10 if penny else 50) if small else (10 if penny else 100)
    if side == 'buy':
        out = m // tick * tick
    else:
        out = -(-m // tick) * tick
    return out / 1000
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression penny tick above threshold 1', [3.075, 'sell', True], 3.1], ['regression penny tick above threshold 2', [3.03, 'sell', True], 3.05], ['partial repair probe 1', [12.344, 'sell', True], 12.35], ['partial repair probe 2', [3.049, 'sell', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.34, 'sell', False], 12.4], ['normal control 2', [3.074, 'sell', False], 3.1]], [['regression penny tick above threshold 1', [3.082, 'buy', True], 3.05], ['regression penny tick above threshold 2', [3.004, 'sell', True], 3.05], ['partial repair probe 1', [3.049, 'sell', True], 3.05], ['partial repair probe 2', [12.345, 'sell', True], 12.35], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [1.26, 'sell', False], 1.3], ['normal control 2', [2.962, 'buy', False], 2.95]], [['regression penny tick above threshold 1', [3.001, 'sell', True], 3.05], ['regression penny tick above threshold 2', [3.012, 'buy', True], 3.0], ['partial repair probe 1', [4.15, 'sell', True], 4.15], ['partial repair probe 2', [3.05, 'buy', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'sell', False], 4.2]], [['regression penny tick above threshold 1', [12.41, 'buy', True], 12.4], ['regression penny tick above threshold 2', [3.02, 'buy', True], 3.0], ['partial repair probe 1', [3.05, 'sell', True], 3.05], ['partial repair probe 2', [4.15, 'buy', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'buy', False], 4.1]], [['regression penny tick above threshold 1', [12.344, 'buy', True], 12.3], ['regression penny tick above threshold 2', [3.039, 'buy', True], 3.0], ['partial repair probe 1', [12.352, 'buy', True], 12.35], ['partial repair probe 2', [4.15, 'sell', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [3.075, 'buy', False], 3.0], ['normal control 2', [3.004, 'buy', True], 3.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 fixtureActualExpectedOutcome
regression penny tick above threshold 13.083.1Failed
regression penny tick above threshold 23.033.05Failed
partial repair probe 112.3512.35Passed
partial repair probe 23.053.05Passed
boundary control 13.03.0Passed
boundary control 22.952.95Passed
normal control 112.412.4Passed
normal control 23.13.1Passed

SHA-256 / 6add467f12e20ad0d7a55ad327f04d31bd8037cc866374da81e9dc0693ba8667

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(price, side, penny):
    m = round(price * 1000)
    small = m < 3000
    tick = (10 if penny else 50) if small else 100
    if side == 'buy':
        out = m // tick * tick
    else:
        out = -(-m // tick) * tick
    return out / 1000
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression penny tick above threshold 1', [3.075, 'sell', True], 3.1], ['regression penny tick above threshold 2', [3.03, 'sell', True], 3.05], ['partial repair probe 1', [12.344, 'sell', True], 12.35], ['partial repair probe 2', [3.049, 'sell', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.34, 'sell', False], 12.4], ['normal control 2', [3.074, 'sell', False], 3.1]], [['regression penny tick above threshold 1', [3.082, 'buy', True], 3.05], ['regression penny tick above threshold 2', [3.004, 'sell', True], 3.05], ['partial repair probe 1', [3.049, 'sell', True], 3.05], ['partial repair probe 2', [12.345, 'sell', True], 12.35], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [1.26, 'sell', False], 1.3], ['normal control 2', [2.962, 'buy', False], 2.95]], [['regression penny tick above threshold 1', [3.001, 'sell', True], 3.05], ['regression penny tick above threshold 2', [3.012, 'buy', True], 3.0], ['partial repair probe 1', [4.15, 'sell', True], 4.15], ['partial repair probe 2', [3.05, 'buy', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'sell', False], 4.2]], [['regression penny tick above threshold 1', [12.41, 'buy', True], 12.4], ['regression penny tick above threshold 2', [3.02, 'buy', True], 3.0], ['partial repair probe 1', [3.05, 'sell', True], 3.05], ['partial repair probe 2', [4.15, 'buy', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'buy', False], 4.1]], [['regression penny tick above threshold 1', [12.344, 'buy', True], 12.3], ['regression penny tick above threshold 2', [3.039, 'buy', True], 3.0], ['partial repair probe 1', [12.352, 'buy', True], 12.35], ['partial repair probe 2', [4.15, 'sell', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [3.075, 'buy', False], 3.0], ['normal control 2', [3.004, 'buy', True], 3.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 fixtureActualExpectedOutcome
regression penny tick above threshold 13.13.1Passed
regression penny tick above threshold 23.13.05Failed
partial repair probe 112.412.35Failed
partial repair probe 23.13.05Failed
boundary control 13.03.0Passed
boundary control 22.952.95Passed
normal control 112.412.4Passed
normal control 23.13.1Passed

SHA-256 / 20d9fa16373ffdc260dbdc2008271e7d0e1bf2a7cbfb6df9421fe45a5975870b

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(price, side, penny):
    m = round(price * 1000)
    small = m < 3000
    tick = (10 if penny else 50) if small else (50 if penny else 100)
    if side == 'buy':
        out = m // tick * tick
    else:
        out = -(-m // tick) * tick
    return out / 1000
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression penny tick above threshold 1', [3.075, 'sell', True], 3.1], ['regression penny tick above threshold 2', [3.03, 'sell', True], 3.05], ['partial repair probe 1', [12.344, 'sell', True], 12.35], ['partial repair probe 2', [3.049, 'sell', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.34, 'sell', False], 12.4], ['normal control 2', [3.074, 'sell', False], 3.1]], [['regression penny tick above threshold 1', [3.082, 'buy', True], 3.05], ['regression penny tick above threshold 2', [3.004, 'sell', True], 3.05], ['partial repair probe 1', [3.049, 'sell', True], 3.05], ['partial repair probe 2', [12.345, 'sell', True], 12.35], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [1.26, 'sell', False], 1.3], ['normal control 2', [2.962, 'buy', False], 2.95]], [['regression penny tick above threshold 1', [3.001, 'sell', True], 3.05], ['regression penny tick above threshold 2', [3.012, 'buy', True], 3.0], ['partial repair probe 1', [4.15, 'sell', True], 4.15], ['partial repair probe 2', [3.05, 'buy', True], 3.05], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'sell', False], 4.2]], [['regression penny tick above threshold 1', [12.41, 'buy', True], 12.4], ['regression penny tick above threshold 2', [3.02, 'buy', True], 3.0], ['partial repair probe 1', [3.05, 'sell', True], 3.05], ['partial repair probe 2', [4.15, 'buy', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [12.389, 'sell', False], 12.4], ['normal control 2', [4.104, 'buy', False], 4.1]], [['regression penny tick above threshold 1', [12.344, 'buy', True], 12.3], ['regression penny tick above threshold 2', [3.039, 'buy', True], 3.0], ['partial repair probe 1', [12.352, 'buy', True], 12.35], ['partial repair probe 2', [4.15, 'sell', True], 4.15], ['boundary control 1', [3.0, 'buy', False], 3.0], ['boundary control 2', [2.95, 'sell', False], 2.95], ['normal control 1', [3.075, 'buy', False], 3.0], ['normal control 2', [3.004, 'buy', True], 3.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 fixtureActualExpectedOutcome
regression penny tick above threshold 13.13.1Passed
regression penny tick above threshold 23.053.05Passed
partial repair probe 112.3512.35Passed
partial repair probe 23.053.05Passed
boundary control 13.03.0Passed
boundary control 22.952.95Passed
normal control 112.412.4Passed
normal control 23.13.1Passed

SHA-256 / 43068a3f6f0d77cb20621e077b756db65935c634378598a6aa7220a9c30f4fa6

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.872982+00:00.

Case digest / b90ba8264e161bb614cf0845b53cb6e2dcc5e679ee6c28033e1dbd6acc4194ba