{"abstract":"Asset-or-nothing payouts equal the strike instead of the underlying value.","category":"Options payoff and settlement","checks":8,"contract":"Inputs kind (cash-call, cash-put, asset-call, asset-put), strike, final price and cash amount. Calls are in the money when final > strike, puts when final < strike; at final == strike both pay half. Cash-or-nothing pays the cash amount, asset-or-nothing pays the final price, times the state (1, 0.5 or 0). Round to 6.","contract_signature":"kind, strike, final, cash_amount","evaluation_group":"w2-options_payoff_and_settlement-digital-options","failed_approach":"Paying final minus strike turns the digital into a vanilla payoff.","family":"w2-options_payoff_and_settlement-digital-options-asset-or-nothing-unit","id":"FA-61476","implementations":{"attempt":{"sha256":"5f27cc87a596d7b78c16c9e7b371dfae8954f0b46cefc3881a6f66403db6c4de","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(kind, strike, final, cash_amount):\n    if kind.split('-')[1] == 'call':\n        state = 1 if final > strike else (0.5 if final == strike else 0)\n    else:\n        state = 1 if final < strike else (0.5 if final == strike else 0)\n    unit = cash_amount if kind.startswith('cash') else final - strike\n    return round(unit * state, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression asset-or-nothing unit 1', ['asset-call', 100, 107, 100], 107], ['regression asset-or-nothing unit 2', ['asset-put', 100, 99.5, 1000], 99.5], ['partial repair probe 1', ['asset-put', 100, 100, 1000], 50.0], ['partial repair probe 2', ['asset-put', 100, 100, 100], 50.0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['asset-put', 100, 100.5, 1000], 0.0], ['normal control 2', ['cash-call', 95, 95, 1000], 500.0], ['normal control 3', ['cash-call', 100, 99.5, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-put', 105, 104.5, 1000], 104.5], ['regression asset-or-nothing unit 2', ['asset-put', 95, 94.5, 1000], 94.5], ['partial repair probe 1', ['asset-put', 95, 95, 100], 47.5], ['partial repair probe 2', ['asset-call', 95, 95, 1000], 47.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 100, 88, 100], 100], ['normal control 2', ['cash-put', 100, 100.5, 100], 0], ['normal control 3', ['asset-put', 95, 102, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-put', 105, 93, 100], 93], ['regression asset-or-nothing unit 2', ['asset-put', 105, 104.5, 1000], 104.5], ['partial repair probe 1', ['asset-put', 95, 95, 1000], 47.5], ['partial repair probe 2', ['asset-call', 95, 95, 1000], 47.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-call', 95, 95.5, 100], 100], ['normal control 2', ['cash-put', 100, 88, 10], 10], ['normal control 3', ['cash-put', 100, 107, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-call', 95, 95.5, 10], 95.5], ['regression asset-or-nothing unit 2', ['asset-put', 105, 93, 1000], 93], ['partial repair probe 1', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 2', ['asset-put', 100, 100, 1000], 50.0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 105, 104.5, 1000], 1000], ['normal control 2', ['cash-put', 95, 102, 1000], 0], ['normal control 3', ['asset-call', 95, 83, 1000], 0]], [['regression asset-or-nothing unit 1', ['asset-call', 95, 95.5, 10], 95.5], ['regression asset-or-nothing unit 2', ['asset-call', 100, 107, 1000], 107], ['partial repair probe 1', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 2', ['asset-call', 105, 105, 1000], 52.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-call', 95, 95.5, 10], 10], ['normal control 2', ['cash-put', 95, 83, 10], 10], ['normal control 3', ['asset-call', 105, 104.5, 10], 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":"1541ba4207762cde2e081315cb44df84370071f7ebdb1650993dbbc1626fa3d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(kind, strike, final, cash_amount):\n    if kind.split('-')[1] == 'call':\n        state = 1 if final > strike else (0.5 if final == strike else 0)\n    else:\n        state = 1 if final < strike else (0.5 if final == strike else 0)\n    unit = cash_amount if kind.startswith('cash') else strike\n    return round(unit * state, 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression asset-or-nothing unit 1', ['asset-call', 100, 107, 100], 107], ['regression asset-or-nothing unit 2', ['asset-put', 100, 99.5, 1000], 99.5], ['partial repair probe 1', ['asset-put', 100, 100, 1000], 50.0], ['partial repair probe 2', ['asset-put', 100, 100, 100], 50.0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['asset-put', 100, 100.5, 1000], 0.0], ['normal control 2', ['cash-call', 95, 95, 1000], 500.0], ['normal control 3', ['cash-call', 100, 99.5, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-put', 105, 104.5, 1000], 104.5], ['regression asset-or-nothing unit 2', ['asset-put', 95, 94.5, 1000], 94.5], ['partial repair probe 1', ['asset-put', 95, 95, 100], 47.5], ['partial repair probe 2', ['asset-call', 95, 95, 1000], 47.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 100, 88, 100], 100], ['normal control 2', ['cash-put', 100, 100.5, 100], 0], ['normal control 3', ['asset-put', 95, 102, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-put', 105, 93, 100], 93], ['regression asset-or-nothing unit 2', ['asset-put', 105, 104.5, 1000], 104.5], ['partial repair probe 1', ['asset-put', 95, 95, 1000], 47.5], ['partial repair probe 2', ['asset-call', 95, 95, 1000], 47.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-call', 95, 95.5, 100], 100], ['normal control 2', ['cash-put', 100, 88, 10], 10], ['normal control 3', ['cash-put', 100, 107, 100], 0]], [['regression asset-or-nothing unit 1', ['asset-call', 95, 95.5, 10], 95.5], ['regression asset-or-nothing unit 2', ['asset-put', 105, 93, 1000], 93], ['partial repair probe 1', ['asset-call', 105, 105, 10], 52.5], ['partial repair probe 2', ['asset-put', 100, 100, 1000], 50.0], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-put', 105, 104.5, 1000], 1000], ['normal control 2', ['cash-put', 95, 102, 1000], 0], ['normal control 3', ['asset-call', 95, 83, 1000], 0]], [['regression asset-or-nothing unit 1', ['asset-call', 95, 95.5, 10], 95.5], ['regression asset-or-nothing unit 2', ['asset-call', 100, 107, 1000], 107], ['partial repair probe 1', ['asset-call', 105, 105, 100], 52.5], ['partial repair probe 2', ['asset-call', 105, 105, 1000], 52.5], ['boundary control 1', ['cash-call', 100, 100, 10], 5.0], ['normal control 1', ['cash-call', 95, 95.5, 10], 10], ['normal control 2', ['cash-put', 95, 83, 10], 10], ['normal control 3', ['asset-call', 105, 104.5, 10], 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-digital-options-asset-or-nothing-unit","generated_at":"2026-09-29T14:46:55.538661+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 payout unit for asset digitals is the strike.","sha256":"7e3959cedbf62ed3a97b35fc17db3624c389165168587c33abd92a5cb118130b","title":"Binary option settlement with an at-strike rule: asset-or-nothing pays the strike · 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.16,"exit_code":1,"observations":[{"actual":7,"check":"regression asset-or-nothing unit 1","expected":107,"passed":false},{"actual":-0.5,"check":"regression asset-or-nothing unit 2","expected":99.5,"passed":false},{"actual":0.0,"check":"partial repair probe 1","expected":50.0,"passed":false},{"actual":0.0,"check":"partial repair probe 2","expected":50.0,"passed":false},{"actual":5.0,"check":"boundary control 1","expected":5.0,"passed":true},{"actual":0.0,"check":"normal control 1","expected":0.0,"passed":true},{"actual":500.0,"check":"normal control 2","expected":500.0,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression asset-or-nothing unit 1\", \"actual\": 7, \"expected\": 107, \"passed\": false}, {\"check\": \"regression asset-or-nothing unit 2\", \"actual\": -0.5, \"expected\": 99.5, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 0.0, \"expected\": 50.0, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 0.0, \"expected\": 50.0, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": 5.0, \"expected\": 5.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0.0, \"expected\": 0.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 500.0, \"expected\": 500.0, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.977,"exit_code":1,"observations":[{"actual":100,"check":"regression asset-or-nothing unit 1","expected":107,"passed":false},{"actual":100,"check":"regression asset-or-nothing unit 2","expected":99.5,"passed":false},{"actual":50.0,"check":"partial repair probe 1","expected":50.0,"passed":true},{"actual":50.0,"check":"partial repair probe 2","expected":50.0,"passed":true},{"actual":5.0,"check":"boundary control 1","expected":5.0,"passed":true},{"actual":0,"check":"normal control 1","expected":0.0,"passed":true},{"actual":500.0,"check":"normal control 2","expected":500.0,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression asset-or-nothing unit 1\", \"actual\": 100, \"expected\": 107, \"passed\": false}, {\"check\": \"regression asset-or-nothing unit 2\", \"actual\": 100, \"expected\": 99.5, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 50.0, \"expected\": 50.0, \"passed\": true}, {\"check\": \"partial repair probe 2\", \"actual\": 50.0, \"expected\": 50.0, \"passed\": true}, {\"check\": \"boundary control 1\", \"actual\": 5.0, \"expected\": 5.0, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 0, \"expected\": 0.0, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 500.0, \"expected\": 500.0, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"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."}}