wavesurf-kev9b-filter-v1

A delta fine-tune of jaredpalmer/kev-9b, a System One decision model on top of Qwen/Qwen3.5-9B-Base. It was trained to filter the entry setups of the WaveSurf BTCUSDT momentum bot (y_claude_mysql.py, --provider decision).

Result: negative. Do not use it for trading. On the held-out weeks the model learned to answer NO_TRADE almost every time, which is the majority label. Its maximum P(OPEN) on held-out setups was 0.40. It cannot tell winning setups from losing ones (ranking AUC 0.495), and every top-k slice it picks still loses money after fees.

Task

The request is the one the bot sends, rendered by the bot's own _decision_state and _decision_questions. It is a single choice question with the options NO_TRADE, OPEN_LONG and OPEN_SHORT. The state contains the rubric checks precomputed for each direction (EMA trend, fast trigger, book, edge, and a PASSES/FAILS summary) plus the raw market fields.

How the labels were built:

  • A setup that passes the rubric in one direction is labelled OPEN_<dir> when its 30-minute return in that direction beat the 0.1% round-trip fee, and NO_TRADE otherwise.
  • A 15% sample of non-setup minutes was added, labelled NO_TRADE.
  • The edge gate was 0.5%.

Training

  • Kev at commit 2074cc4, using kev.train with warm start from kev-9b.
  • LoRA rank 16 on all targets, 45.4M trainable parameters.
  • bf16 weights, lr 2e-5, batch 2, gradient accumulation 4, 1 epoch.
  • Replays 2000 public decision-v7 records alongside the WaveSurf data.
  • Trained on one RTX 5090; training took about 60 minutes.
  • Temperature 0.62, fitted on the calibration split, is written to the checkpoint meta.
  • The states are about 480 tokens. Score them with kev.suite.SERVING_CONTEXT, because the training context caps states at 384 tokens.

Data

The data is in the private dataset webbrain-one/wavesurf-btc-decisions-v1.

Split Period (UTC) Records
train before 2026-09-10 14,231
calibration 2026-09-10 to 09-24 1,038
development (held out) 2026-09-24 to 10-22 1,906

Held-out results (development, 1,658 rubric setups over 25 days)

Returns are the after-fee 30-minute return per setup-minute, in %.

Selection n Mean Win rate Mean of daily means ± SE
Take every rubric setup 1658 -0.130 38% -0.136 ± 0.030
This model, P(open) ≥ 0.5 0 – – –
This model, top 10% by P(open) 165 -0.110 36% -0.148 ± 0.067
This model, top 5% 82 -0.101 37% -0.177 ± 0.076
kev-9b (untuned), top 5% 82 -0.088 45% -0.145 ± 0.072

Classification on development: accuracy 0.671 (equal to the NO_TRADE base rate), NLL 0.585 and ECE 0.056 after calibration. The untuned kev-9b scored NLL 1.30.

A gradient-boosting check on the same splits also found no signal (AUC 0.49). The rubric's setups have roughly zero gross edge at a 30-minute horizon, so no filter on these features can make them pay after fees.

trading_report.json and eval/ contain the raw numbers and predictions.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for webbrain-one/wavesurf-kev9b-filter-v1

Adapter
(89)
this model

Collection including webbrain-one/wavesurf-kev9b-filter-v1