Work out a tax year's realised gains with FIFO lots, a stock split, cancelled trades, fees and euro-priced shares
Exact prompt
# Realised gains for the 2026 tax year Inputs: `trades.csv` (every buy, sell and cancellation since the account opened, in no order), `splits.csv`, `fx.csv` (USD per EUR on each EUR trade date) and `request.json`. Report realised gains for sales in the tax year, by symbol, matching each sale to the oldest shares still held (FIFO). - A row with side `cancel` voids the trade named in its `cancels` column; the voided trade never happened. - Sales before the tax year still use up the oldest shares, but their gains aren't reported. - A split with ratio `2:1` doubles the shares held before its effective date and halves their per-share cost; total cost is unchanged. Quantities on trades after the split are already in post-split shares. - Cost basis includes the buy fee; proceeds are net of the sell fee. Fees are in the trade's currency. - Convert EUR trades to USD at that trade date's rate in `fx.csv`, for both cost and proceeds. - Shares held 365 days or fewer are short term; more than 365 days is long term. Holding days = sale date minus buy date. When one sale uses shares from several lots, split its proceeds across them in proportion to the shares. - Work exactly; round only the reported figures to cents, half-up. Write `out/gains.json`: `{"gain_by_symbol": {"<symbol>": <gain, negative for a loss>, ... every symbol with a sale in the tax year}, "short_term_total": <amount>, "long_term_total": <amount>}`. ## How this run works - Work on your own: nobody will answer questions in this task, and writing to `ask/` counts against the run. - Write only under `out/`. Create `out/` if it is missing. Inputs are synthetic; don't fetch anything from the network. - Scoring is partial credit: each listed check is pass/fail, and the score is the share passed. Numbers are compared to within 0.005 unless the task says otherwise.
Match 25-50 shuffled trades across 4-6 symbols to FIFO lots and report the tax year's realised gains, split into short and long term. Earlier-year sales use up lots without being reported, one symbol has a 2:1 split, one buy was later cancelled, fees adjust basis and proceeds, and some shares trade in euros at per-day rates. Average cost, keeping the cancelled buy, or ignoring fees and FX each gives different gains. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).
Success criteria: gain_by_symbol short_term long_term costs_fx_and_cancels
Best model for this task so far: Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) (success, $0.01, 46s).
All runs (3)
100% pass rate across 3 eligible runs: 3 pass, 0 partial, 0 fail. Partial and failed runs are listed below with everything else.ⓘ
| Model | Cost | Time | Step-insⓘ | Autonomy | Outcome | Trustⓘ | Date | Compare |
|---|---|---|---|---|---|---|---|---|
| AClaude Opus 5.5default · thinking on | $0.14 | 24s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-21 | |
| AClaude Haiku 5.5default · thinking on | $0.01 | 46s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-21 | |
| AClaude Sonnet 5.5default · thinking on | $0.07 | 25s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-21 |
Embed this result
A live badge for this use case. It links back here and updates as new runs are published.
Get new runs and ranking changes weekly
Which models got better or cheaper on real tasks like this one.