AAL-D-008: Repo Trade Disputes (v0.1)
Given both counterparties' records of a repo trade and the governing confirmation, can a model detect whether a dispute exists, name its root cause, and state the corrected figure?
As of 2026-09-29, claude-opus-5-5 ranks first on D-008 with 100.0% value accuracy, followed by x-ai/grok-4.7 (98.2%) and gpt-5.6-sol (93.1%).
Leaderboard
| Rank | Model | Value acc. | 95% CI | Attribution | Detection | False pos. | Attr. flip | Latency p50 / p95 (s) | Errors |
|---|---|---|---|---|---|---|---|---|---|
| 1 | claude-opus-5-5 | 100.0% | 98.1–100.0 | 100.0% | 100.0% | 0.0% (n=69) | 0.0% | 4.9 / 9.6 | 0 |
| 2 | x-ai/grok-4.7 | 98.2% | 95.2–99.3 | 100.0% | 100.0% | 0.0% (n=69) | 0.0% | 13.3 / 93.9 | 0 |
| 3 | gpt-5.6-sol | 93.1% | 88.7–95.9 | 94.5% | 100.0% | 0.0% (n=69) | 4.8% | 3.4 / 7.7 | 0 |
Scores: eval_out_d008 (scorecard_d008_*.json). 95% CI: eval_out_d008 (eval_results_d008_*.json, recomputed by case). [4]
Key Takeaways
- All 3 models detected whether a dispute existed in every one of their 750 observations, and none flagged a dispute on the 23 no-dispute trap cases (69 observations each).
- The models separate on the corrected figure: value accuracy runs from 100.0% (claude-opus-5-5) to 93.1% (gpt-5.6-sol).
- gpt-5.6-sol's attribution misses are concentrated in one category: RL-DIS-RECALL at 57.3%, against 100.0% in every other category. It changed its root cause between runs on 12 of 250 cases.
Background
Each case gives a model two counterparties' records of the same repo trade and a governing record (the confirmation, plus any recall or corporate action notice). All 250 cases in v0.1 are repo trades [1]. Cases are generated deterministically with no LLM calls, and each correct answer is computed by the generator before any model sees the case [2]. Scoring is plain Python comparison against that ground truth; no model grades another model [3].
Cases model real operations workflows but are not drawn from live trade records, and several generator parameters are assumptions [5]. Some ranges in the generator are explicitly marked as unsourced placeholders pending domain-expert review [2], and 0 of 250 cases are flagged as manually verified against a source [1]. The case identifier shown to models includes the benchmark name; whether this affects behaviour was not tested [5].
Results
Source: eval_out_d008 (eval_results_d008_*.json, recomputed by case) [4]
Worked Example: AAL-D-008-0003 (RL-DIS-RECALL)
Counterparty A records a notional of $31,414,745.77 and accrued interest of $331,661.18; counterparty B records $49,486,448.31 and $522,453.18. Both show a rate of 4.223%, ACT/360, trade date 2026-06-29, settlement 2026-09-27. The governing record gives an original notional of $49,486,448.31 and a recall notice of $18,071,702.54.
Correct answer (dataset ground truth [1]): root cause RL-DIS-RECALL, corrected amount $331,661.18.
Deterministic computation (same formula as the generator [2], re-run by this page's build script):
outstanding = original_notional − recall_notice
= 49,486,448.31 − 18,071,702.54 = 31,414,745.77
days = 2026-09-27 − 2026-06-29 = 90
accrual = outstanding × 0.04223 × 90 / 360 = 331,661.18gpt-5.6-sol answered this case incorrectly on 2 of 3 runs. Run 1 output:
root_cause RL-DIS-NOTIONAL, corrected_amount $49,486,448.31: “The notionals differ by more than $1,000. The authoritative confirmation supports Counterparty B's notional of $49,486,448.31; the accrued-interest difference results from the notional mismatch.”
claude-opus-5-5 answered RL-DIS-RECALL, $331,661.18 on 3 of 3 runs. Run 1 output:
“Both sides agree on rate (4.223%), ACT/360 and dates (2026-06-29 to 2026-09-27, 90 days). The notionals differ by 49,486,448.31 - 31,414,745.77 = 18,071,702.54, which is exactly the confirmation's recall notice amount. The confirmation fixes the original notional at 49,486,448.31 and also records a recall of 18,071,702.54, so the outstanding balance is 31,414,745.77. A's accrued interest of 331,661.18 (31,414,745.77 x 4.223% x 90/360) reflects the recall. B accrued 522,453.18 on the full pre-recall notional, so the error is on B's side.”
Methodology & Dataset
Each model ran all 250 cases 3 times (750 observations). A failed call is recorded as an error, not as a wrong answer [6]. Each response is scored for detection (is there a dispute), attribution (root-cause category) and value (corrected amount or rate) [3]. Dataset generator seed: 8 [1].
| Model | Provider | Prompt | Sampling |
|---|---|---|---|
| claude-opus-5-5 | anthropic | d008-prompt-v0.1 | provider_default |
| x-ai/grok-4.7 | openrouter | d008-prompt-v0.1 | temperature=1.0 |
| gpt-5.6-sol | openai | d008-prompt-v0.1 | temperature=provider_default [endpoint rejected: temperature] |
| Root-cause category | Cases |
|---|---|
| RL-DIS-RECALL | 32 |
| RL-DIS-INSUFFICIENT-DATA | 28 |
| RL-DIS-NOTIONAL | 24 |
| RL-DIS-HAIRCUT | 23 |
| RL-DIS-DAYCOUNT | 23 |
| RL-DIS-CORPACTION | 23 |
| RL-NO-DISPUTE | 23 |
| RL-DIS-ACCRUAL | 20 |
| RL-DIS-SETTLEDATE | 19 |
| RL-DIS-BENCHRATE | 19 |
| RL-DIS-FEESPLIT | 16 |
Changelog
v0.1 (2026-09-29): first published release, 250 cases, 3 models. See eval_out_d008 and the repository history.
How to cite
AI Alpha Labs. AAL-D-008: Repo Trade Disputes (v0.1). 250 cases. Updated 2026-09-29. https://
References
Want this kind of evaluation on your own workflow? See the $4,500 entry audit, or email us about an audit.
