Home › Methodology

Methodology: measuring frontier-AI stability on crypto tax classification

All results as of August 2026 · model snapshots: claude-sonnet-5 · gpt-5.5 · grok-4.5

This page documents how we measured what frontier AI models actually do when asked to classify on-chain transactions for tax purposes — including the results that favor them, the results that favor us, and everything we could not measure. Every number below is recomputable from frozen artifacts. Nothing was excluded after a model output was seen.

On this page
  1. What we measured and why
  2. Results by complexity band
  3. The asymmetry: confidence vs stability
  4. The Pendle finding: stable is not the same as right
  5. Four disclosures
  6. Limitations
  7. Raw-hash arm
  8. Where to verify

1. What we measured and why

Two studies, run under one frozen protocol. Both use the same fixed prompt (verified by hash at every run): single-shot, no tools, no retrieval, a closed 17-category taxonomy, abstention explicitly permitted. Both were designed — sampling rules, metrics, and analysis plan — before any model was called.

Study A — the 388-row bake-off (accuracy and silent-wrong)

Three flagship models (claude-sonnet-5, gpt-5.5, grok-4.5) classified transactions from a frozen 777-row corpus against a 388-row adjudicated answer key (provenance in disclosure 4d). The CryptoTaxEdge engine (CTE in tables below) was scored against the same key as a reference.

On a fair test with a published, frozen methodology, a flagship model matched our accuracy on deep-protocol classification — we publish that number. What it didn't do: give the same answer twice (17.4% run-to-run flips on exotic DeFi), scale its uncertainty to match (confidence slips 9 points while flips rise 8×), produce verifiable evidence, or do it at API economics — a flagship read runs ~20× our marginal serve cost. Guarded determinism, honest escalation, and evidence are the product; raw model accuracy is the commodity.Stated claim · accuracy and cost: Study A · instability: Study B

Study B — the 96-transaction complexity ladder (stability)

The same three models classified 96 fresh 2026 transactions spanning 12 protocol rungs, pooled into three pre-registered complexity bands: simple (basic transfers, router swaps, liquid-staking basics), mid (aggregators, lending, bridges, NFT/intent), and exotic (yield-stripping, vaults, restaking, perp-adjacent, leveraged looping, hard Solana). Every transaction ran at least twice per model on byte-identical input; hard rungs ran three times. 744 model calls, 100% strict-JSON parse rate, zero transport errors.

Four metrics, none of which require ground-truth labels: run-to-run flip rate, inter-model disagreement, abstention rate, and divergence from the CryptoTaxEdge engine (a framing metric, never an error rate). Headline results by band:

On byte-identical inputs, single-shot frontier-model classifications flip run-to-run 2.1% (95% CI [0.0–6.3]) of the time on simple transactions and 17.4% (95% CI [11.1–23.6]) on exotic DeFi — roughly 8× — while stated confidence slips only 9 points (92→83) and abstention appears on barely 5% of exotic calls. Instability rises 8×; the uncertainty signal doesn't keep up.Stated claim · Study B, band-level with bootstrap 95% CIs

2. Results by complexity band

Bands were fixed a priori (before any model call): simple = rungs {1, 8}, mid = {2, 3, 4, 10}, exotic = {5, 6, 7, 9, 11, 12}. Confidence intervals are bootstrap 95% CIs (2,000 resamples over transactions, seeded). Per-rung numbers (n≈8 each) are context, never headlines; the pre-registered rung-level trend test did not reach significance (see Limitations).

Run-to-run stability (same model, byte-identical input)

BandTxsRun-pairsCategory flip95% CITax-bucket flip95% CI
simple16482.1%[0.0–6.3]0.0%[0.0–0.0]
mid32968.3%[3.1–14.6]4.2%[1.0–8.3]
exotic4814417.4%[11.1–23.6]8.3%[4.2–13.2]

The simple and exotic CIs do not overlap. Per model, pooled across all 96 transactions: claude-sonnet-5 flipped 14.6% (14/96), gpt-5.5 10.4% (10/96), grok-4.5 10.4% (10/96) — no model is flip-free. Exotic-band detail: 25 category flips across 144 run-pairs; 12 of those 25 flips also changed the tax-treatment bucket.

Agreement, uncertainty, and escalation

BandInter-model category disagreementTax-bucket disagreementAbstentionMean stated confidenceCTE needs-review
simple15.0% (6/40 states)0.0% (n=40)0.0%91.819% (n=16 tx)
mid27.5% (22/80 states)12.5% (n=80)4.2%88.528% (n=32 tx)
exotic44.5% (57/128 states)24.2% (n=128)5.2%83.444% (n=48 tx)

A “state” is one (transaction, run) with all three models parsed. Raw and synonym-normalized disagreement were identical on every rung — the closed taxonomy already constrained vocabulary, so vocabulary mismatch does not inflate these numbers.

Three metrics by complexity band Model run-to-run category flip % Inter-model disagreement % CTE needs-review % 0% 10% 20% 30% 40% 50% 2.1 15.0 19 8.3 27.5 28 17.4 44.5 44 simple mid exotic 16 tx · 48 pairs · 40 states 32 tx · 96 pairs · 80 states 48 tx · 144 pairs · 128 states Denominators: flip % of run-pairs · disagreement % of three-model states · needs-review % of transactions
Three different metrics on the same three complexity bands — stability (model run-to-run flip rate), agreement (inter-model disagreement), and escalation (CryptoTaxEdge needs-review rate). They are not one metric: the first two describe frontier-model behavior; the third describes what our engine does with the same transactions. All three rise with complexity. As of August 2026; models claude-sonnet-5, gpt-5.5, grok-4.5.

High-confidence disagreement

Of the 224 (transaction, run) cases where all three models answered without abstaining, 61 produced a three-way disagreement — and in 34 of those 61, all three models stated confidence of 70 or higher. Per band:

BandFull three-way disagreementsWith all three models at confidence ≥70Share
simple666/6
mid1455/14
exotic412323/41 (56%)
pooled613434/61
Run three frontier models on the same exotic DeFi transaction and they disagree on the transaction type 44.5% of the time — and in over half of those disagreements (23 of 41), all three models sit at confidence 70 or higher.Stated claim · Study B · the adjacent tables carry the per-band counts and the 24.2% tax-bucket-level figure

3. The asymmetry: confidence vs stability

The cleanest overall finding is not that models destabilize on complex transactions — it is that they destabilize without saying so. Flip rate rises roughly 8× from the simple band (2.1%, 95% CI [0.0–6.3]) to the exotic band (17.4%, 95% CI [11.1–23.6]) while mean stated confidence slips about 9 points (91.8 → 83.4) and abstention stays near flat (0.0% → 5.2%).

Confidence vs flip rate across complexity bands Mean stated model confidence (scale 0–100) — 744 calls, 96 tx 0 25 50 75 100 91.8 88.5 83.4 Run-to-run category flip rate (%, run 1 vs run 2) — n = 48 / 96 / 144 run-pairs 0% 5% 10% 15% 20% 2.1 8.3 17.4 simple mid exotic rungs 1, 8 rungs 2, 3, 4, 10 rungs 5–7, 9, 11, 12
Two aligned panels, deliberately separate scales, both axes starting at zero — not a dual-axis overlay. Top: mean stated confidence on its full 0–100 scale, slipping about 9 points (91.8 → 83.4). Bottom: run-to-run category flip rate on a 0–20% scale, rising roughly 8× (2.1 → 17.4). Same three bands, same 96 transactions, same models. As of August 2026.
Between the simplest and hardest bands in our ladder, frontier models get less stable but keep sounding sure. Our engine does the opposite: its needs-review rate climbs from 19% to 44% across those same bands. That asymmetry — instability that outruns the uncertainty signal, versus escalation you can see — is the difference between an AI answer and evidence a professional can work from.Stated claim · Study B

4. The Pendle finding: stable is not the same as right

One ladder rung sampled Pendle yield-stripping operations — PT and YT swaps, LP entries and exits, and a post-expiry PT redemption — three runs per model on each. Two findings sit side by side, and they point in opposite directions:

Pendle was the most stable exotic rung. 22 of 24 (transaction, model) triples produced the identical category on all three runs. Whatever the models say about Pendle, they say it consistently. Stability and correctness are different things — that is the point of this section.

On a post-expiry Pendle PT redemption, all three frontier models confidently labeled it a generic swap in every run — confidence 82–94, no flag. Nothing in a single-shot read forced the redemption/swap distinction — and because the answer is stable, consistency checks can't catch it.Stated claim · Study B, rung 5 · six calls across three models, zero abstentions

Stated plainly: in this instance the tax bucket did not move. Both reads — redemption and swap — are §1001 dispositions, so the bottom-line taxable/non-taxable outcome is the same either way. The open question is character and basis analysis — for example, whether §§1276–1278-style questions about instruments acquired at a discount to a fixed maturity value apply to a PT held to expiry. We publish that as analysis, never as an asserted treatment: under the closed taxonomy the generic label is defensible. What the row demonstrates is narrower and more precise — a maturity redemption and a spot swap are indistinguishable to a single-shot frontier read, the models signal no awareness of the difference, and the very stability of the answer makes the gap invisible to consistency-based quality checks.

Honest counterweight: models were not uniformly collapsing Pendle to generic swap. Across 72 parsed Pendle calls the label mix included liquidity operations, rewards, and abstentions; on the dual-sided liquidity removal all nine calls agreed on the liquidity label. And on the six Pendle rows the engine asserts (it routes two to review), the model-majority category diverged from the engine zero times. The differences live in confidence, review-flagging, and instrument identification — not in the headline category.

5. Four disclosures

5a. Decoding settings

All model calls used provider default decoding settings. These reasoning-class models reject temperature and top_p overrides — the APIs refuse the parameters, and the harness header documents it. That means the run-to-run variance measured here is the variance of the only configuration anyone can actually deploy. A temperature-0 arm does not exist to run; there is no hidden deterministic mode we declined to test.

5b. Selection and exclusion log

The ladder set is a convenience sample of recent live activity, not a random draw from protocol history: for each rung contract, the most recent qualifying transactions at curation time (2026 timestamps, successful only, verified target contract, diversity caps per method and per sender, global dedupe against 765 previously used hashes). The full selection rule is frozen inside the set file itself.

The set was re-curated three times, all before any model call, all disclosed:

  1. A rate-limit response was initially treated as an empty transaction list, silently zeroing some contracts — fixed with a retry.
  2. A stale GMX v2 router whose recent traffic was mostly reverted bot transactions was replaced with the active router, resolved from the protocol's official deployments repository.
  3. Plain approvals and order cancellations — both outside the closed taxonomy — were being sampled and were globally excluded.

Zero post-hoc exclusions: no transaction was added or removed after any model output was seen. One mid-run harness fix is also disclosed: the engine-reference caller initially read legacy field names and stored nulls; it was fixed and the affected reference rows refetched. Model calls were untouched by that fix.

5c. Engine self-disclosure

Since we grade frontier models in public, here is where our own engine is deterministic and where it is not:

The mitigation for the model-based layers is review-routing: rather than assert a low-evidence answer, the engine escalates. We publish our own escalation curve as a feature, not a confession — needs-review climbs 19% → 28% → 44% across the same simple/mid/exotic bands where model instability climbs. And symmetrical honesty: we did not measure our own run-to-run flip rate in these studies. The engine reference figures above come from one call per transaction; the deterministic layers cannot flip by construction, but the model-based lanes have not had their flip rate measured under this protocol.

5d. Provenance, cost model, and snapshots

The 388-row answer key descends from a bake-off protocol pre-registered on 2026-07-22, before execution: sampling frames, metrics, equivalence maps, and adjudication rules were locked in advance and committed. Disagreement rows were adjudicated blind from raw on-chain receipts and logs by independent multi-model lenses — system outputs relabeled before review, neither lens shown either system's claim, all evidence recorded and frozen. It is not independent-CPA-labeled: no human tax professional has adjudicated the key, and we say so rather than imply otherwise. The eligible key (388 of 777 rows) skews answerable by construction; 187 hard rows where the engine abstained have no truth key and are unscored for every system, including ours.

Cost model, with dates: flagship ~$0.0104 per enriched row at list price (July 2026) vs CryptoTaxEdge marginal serve ~$0.0005 (pattern-cache serving). Both figures exclude enrichment costs on both sides and amortized R&D on ours; they are marginal per-row serving comparisons, not fully loaded unit economics. Study spend, for scale: the ladder cost $7.67 across 744 model calls; the full bake-off program measured out at $22.72.

Model snapshots: claude-sonnet-5, gpt-5.5, grok-4.5, called through provider APIs in July–August 2026. All results on this page are as of August 2026 and describe this model generation; each generation re-baselines, and we re-measure on a standing cadence.

6. Limitations

  1. No ground truth in the ladder. Nothing in Study B measures accuracy. Flip, disagreement, and abstention are internal-consistency metrics; engine divergence is disagreement with one good-but-fallible classifier, and is never a model error rate — several divergent rows cut against our own engine's low-confidence reads, and we route those to our own review pipeline.
  2. Single fixed prompt, single-shot, no tools, no retrieval. This measures out-of-the-box frontier-model behavior under this protocol — not the ceiling of an engineered agent with tools, retrieval, or protocol context. It licenses claims about this configuration; it does not license “LLMs cannot classify DeFi.” An agentic system with enrichment could behave very differently — that would be a different study.
  3. Sample sizes. n≈8 transactions per rung, 96 total. Per-rung numbers are context only; headline claims are band-level with bootstrap CIs. The pre-registered rung-level trend test did not reach significance (Spearman rho 0.375, one-sided permutation p = 0.116, 10,000 permutations) — the supported claim is the band-level contrast, not a smooth 12-step staircase, and we report that rather than upgrade it by narrative.
  4. Convenience sampling. Most-recent qualifying transactions from live contract activity, not random draws from protocol history; whatever operations were popular that week shape each rung.
  5. Complexity is confounded with log readability, semantic novelty, tax-law ambiguity, chain and encoding differences (the Solana packet is structurally different from the EVM packet), and engine coverage density. The ladder ordering is a reasonable a-priori complexity proxy, not a purified single axis.
  6. Divergence denominators vary. The engine reviews 44% of exotic rows and returned errors on four rows on one chain (filed as an engine gap and counted as engine error, not divergence), so engine-divergence percentages sit on small, uneven bases; bucket-level divergence with the denominator shown is the only form worth quoting.
  7. Abstention is prompt-tied. The prompt invites abstention once; different framing could move the absolute rates. The finding is the contrast — abstention nearly flat while flips rise roughly 8× — not the level.
  8. Two runs is the floor for flip measurement (three on hard rungs). Per-transaction flip rates at two runs are noisy and only meaningful pooled.
  9. Instrument-mechanics recall was unmeasurable. The strict-JSON output contract leaves no free text to scan, so whether a model ever mentions PT/YT/maturity semantics could not be tested. The Pendle finding rests on category choices, confidence, abstention, and stability — not on text mentions.
  10. Model versions are point-in-time (claude-sonnet-5, gpt-5.5, grok-4.5, as of August 2026). These results describe this generation, this month. The trend across generations only goes one way, which is why this measurement recurs.

7. Raw-hash arm: what a chat window actually gets

The accuracy numbers in Study A required handing each model the full enrichment packet — the decoded transfers, contract labels, and receipt our pipeline produces. Nobody who asks a chatbot about a transaction supplies that. So we ran the honest version of the question: the same 388 adjudicated transactions, the same three models, given only the transaction hash and chain — exactly what a real user enters — with abstention explicitly permitted and no tools or browsing.

Result: all three models declined to classify every transaction. 1,164 calls (388 rows × 3 models), 1,164 schema-valid responses, 1,164 abstentions. Zero answers, zero guesses, zero attempts to recognize a hash from training data. Confidence 0 across the board.

Model (Aug 2026)AbstentionAnsweredSilent-wrongParse failures
claude-sonnet-5100.0% (388/388)000
gpt-5.5100.0% (388/388)000
grok-4.5100.0% (388/388)000

Read together, the two arms bracket the question cleanly: with a full evidence packet, a flagship model reaches 93.0% on deep protocols; with only the hash, it answers nothing. The 93% is unreachable without the evidence layer — the fetching, decoding, and enrichment is what makes classification possible at all.

Three disclosures, pre-registered before the run: (1) this measures single-shot, no-tools behavior — a browsing-enabled chatbot is a different configuration that would need its own arm; (2) the models behaved honestly here — this result is evidence that frontier models refuse without evidence, not that chatbots hallucinate crypto tax answers; (3) total abstention partly reflects our prompt explicitly permitting abstention and the packet honestly stating that no transaction data was provided — consumer chat interfaces that pressure a model to answer may behave differently. Frozen raw output and scorecard: frontier-bakeoff-raw-rawhash-2026-08-06.json. Arm cost: $3.44.

8. Where to verify

Claims without inspectable evidence are marketing. These are the surfaces where the underlying material lives:

This page reports measurements, not tax advice. Classification of any specific transaction depends on facts and elections; verify with a qualified tax professional before filing. All figures as of August 2026.