Assay 002 · Published

Lorentzian k-NN.
After real costs.

A recognisable machine-learning classifier was tested on BTC/USD and ETH/USD. The signal did not clear its own trading bill.

Category-level testBTC/USD and ETH/USD2025-01-01 to 2026-06-30Frozen evidence attached
The result

Both pairs failed both legs.

A widely shared k-nearest-neighbours classification mechanism using a Lorentzian distance metric was run at a frozen community-standard configuration. On both pairs, the worked account ended well below where it started and below buying and holding the same pair over the same window.

2 / 2pairs falsified after measured execution cost

The mechanism did not merely fail to beat the benchmark; it compounded a high cost bill.

Assay 002 worked-account results
PairStarting accountEnding accountReturnBuy-and-hold returnRound trips
BTC/USDKraken 4-hour bars10,000 USD2,608.67 USD−73.9%−38.2%167
ETH/USDKraken 4-hour bars10,000 USD1,848.04 USD−81.5%−53.7%161

Each worked account starts flat with 10,000 USD, runs long-only full-account rotation, and marks any final open position to the final close net of the same cost model.

What was tested

The subject is the cost-free backtest habit.

The subject is not a product, script or person. The test asks whether this frozen mechanism configuration survives once realistic execution cost is charged. The configuration was fixed in advance: eight neighbours, a two-thousand-bar history window, a four-bar-forward training label, volatility filter on, regime filter on at a −0.1 threshold, and trend-strength filter off.

Signals are confirmed at bar close and filled at the next bar open. The test is long-only, with a fixed exit after four bars or on an opposing signal.

The claim under assay

Positive account return and benchmark outperformance.

At the frozen configuration, executed long-only on a worked account after the measured cost model, the mechanism needed to produce a positive whole-account return on BTC/USD and ETH/USD over the evaluation window, and beat buying and holding the same pair over the same window under the same cost treatment.

A pair survived only if both legs held. Fail either leg and the claim was falsified for that pair.

Why it failed

The cost is the mechanism.

The window matters less than the churn. Over eighteen months, the BTC/USD account turned over 167 complete round trips; the ETH/USD account turned over 161. At 84 basis points each, that trading frequency compounds into a cost drag that dominates the result.

Strip out all price selection and charge only the cost of the trades taken: 167 round trips at 84 bps would by itself pull a 10,000 USD account down to roughly 2,450 USD. BTC/USD finished slightly higher than that, which means the raw price selection was marginally profitable before cost. ETH/USD finished lower than its cost-only counterfactual, so a modest negative raw selection added to an already dominant cost drag.

The finding is mechanical: at this configuration, the mechanism trades often enough that no edge it plausibly carried in these markets, over this window, survived its execution cost.

Where the money went

The cost, made visible.

Split each account into the value the trades selected before cost, and the cost of taking them. Toggle the pair, then hover, tap or focus the account chart to inspect each observation.

Where the account went
  1. Starting account$10,000Starting balance
  2. Raw picks+$667Price selection before cost
  3. Gross before cost$10,667Same trades, zero-cost counterfactual
  4. Cost drag−$8,058167 round trips at 84 bps
  5. Net end$2,609Down 73.9%
Account bridge for BTC/USDFrom a 10,000 dollar start, raw trade selection reaches $10,667.15, then the 84 basis point cost drag of 167 round trips removes $8,058.48, ending at $2,608.67. Buy and hold ended at $6,184.76.Buy & hold $6,184.76$10,000.00Start+$667.15Raw picks−$8,058.48Cost drag$2,608.67Net end
Account value across the window: gross-before-cost versus net
Account value over time for BTC/USDThe gross-before-cost account and the net account after the 84 basis point round-trip cost model, across the evaluation window. The widening gap is the accumulated trading cost. Net ended at $2,608.67; the gross counterfactual ended at $10,667.15.$10,000.00$5,000.00Gross, before costNet, after costBuy & hold $6,184.762025-01-012026-06-30

Hover, tap or drag across the chart. When focused, use ← and → for one 4-hour bar, Page Up and Page Down for one day, or Home and End.

UTC observation30 Jun 2026
Gross before cost$10,667.15
Net after cost$2,608.67
Accumulated cost gap$8,058.48
Where the account went
  1. Starting account$10,000Starting balance
  2. Raw picks−$2,790Price selection before cost
  3. Gross before cost$7,210Same trades, zero-cost counterfactual
  4. Cost drag−$5,362161 round trips at 84 bps
  5. Net end$1,848Down 81.5%
Account bridge for ETH/USDFrom a 10,000 dollar start, raw trade selection reaches $7,210.04, then the 84 basis point cost drag of 161 round trips removes $5,361.99, ending at $1,848.04. Buy and hold ended at $4,625.78.Buy & hold $4,625.78$10,000.00Start−$2,789.96Raw picks−$5,361.99Cost drag$1,848.04Net end
Account value across the window: gross-before-cost versus net
Account value over time for ETH/USDThe gross-before-cost account and the net account after the 84 basis point round-trip cost model, across the evaluation window. The widening gap is the accumulated trading cost. Net ended at $1,848.04; the gross counterfactual ended at $7,210.04.$10,000.00$5,000.00Gross, before costNet, after costBuy & hold $4,625.782025-01-012026-06-30

Hover, tap or drag across the chart. When focused, use ← and → for one 4-hour bar, Page Up and Page Down for one day, or Home and End.

UTC observation30 Jun 2026
Gross before cost$7,210.04
Net after cost$1,848.04
Accumulated cost gap$5,361.99

On BTC/USD the raw price picks were marginally positive (+$667.15); the cost drag alone (−$8,058.48) is larger than the entire net loss (−$7,391.33). The trading bill, not the signal, is the finding.

For ETH/USD the raw price selection was already negative (−$2,789.96); the cost drag then removed another $5,361.99 and drove the worked account to $1,848.04. No edge survived the trading bill.

These figures are reconstructed from the frozen per-trade records; the reconstructed net curve reproduces the frozen equity curve exactly. The gross-before-cost line is a zero-cost counterfactual on the same trades, not an achievable outcome. Derived data · derivation receipt.

How it was measured

Frozen data, fixed cost, one evaluation.

Data and accountKraken BTC/USD and ETH/USD, 4-hour bars
  • Evaluation window: 2025-01-01 to 2026-06-30 inclusive.
  • History from 2023-01-01 supplies the classifier neighbour window.
  • Evaluated bars: 3,275 per pair.
  • Absent bars from venue downtime were skipped, not synthetically filled.
  • Worked account: 10,000 USD per pair, long-only full-account rotation, no leverage, no shorting and no pyramiding.
Cost model84 bps round trip
ComponentValue
Fee per side40.0 bps taker
Spread2.0 bps once per round trip
Slippage1.0 bps per side
Round trip84.0 bps

Depth-walk was not applied. Where an input was uncertain, the assumption chosen was favourable to the strategy.

Evidence provenanceExported capsule and conformance record

Every figure on this page traces to the frozen Assay 002 capsule exported from Keel. The public evidence page records the file hashes, engine commit, method note, conformance review and receipt summary.

Open the frozen evidence receipt

Scope

A narrow finding, stated honestly.

It does mean

Run this way, with costs charged the way a real account pays them, this frozen configuration lost money and lost to buying and holding on both tested pairs.

It does not mean

This does not evaluate every configuration, market, timeframe, implementation, tool or product. It is not a prediction and not trading advice.

Assay verdicts are independent educational research measurements under explicit, published assumptions. They are not financial, investment or trading advice, and nothing here is a recommendation to buy, sell or use any instrument, strategy, system or product.

Cost assumptions are static operator assumptions and must be verified against current venue schedules. Real-world results vary with venue, size and conditions. Past or simulated performance does not indicate future results.

Published evidenceAsk Coach Steve