The Bot Audit · Iteration Log · Public

We built an autonomous trader.
It failed. We re-engineered it in public.

A real-money, real-time iteration log of an autonomous Coinbase trading system — every backtest, every halt, every promoted strategy, written to a public ledger before any subscriber sees the trade. This is what trading looks like when the audit is the product.

Bot · live Strategy · dual_momentum Net alpha · +1.87% Iterations · 2
scroll · enter the audit
tl;dr · 2026-04-27

The strategy lab found alpha 28 hours after the original halt. dual_momentum cleared the +1% threshold (+1.87% net alpha, 91.7% hit rate). Halt auto-lifted; bot has placed five live entries since (ETH×2, BTC, ATOM, ARB). A second iteration proposed a trailing-stop exit variant — the lab rejected it (−2.38% alpha). Live bot stays on dual_momentum.

CHAPTER 01

The setup

On April 26, 2026, we deployed a Coinbase Advanced trading bot with a controlled live-test stake. Within 6 hours we halted it. This page explains why — with the actual numbers, every order we placed, and the math most retail trading strategies bury.

If you sell trading signals, run a Discord pump group, or tweet "I'm up 200% this year" — you should read this and ask whether your strategy survives net of fees.

Our SEC catalyst scanner has an audited 89% hit rate on equity catalysts (full audit at /trust/). We wanted to extend that edge to crypto by trading the BTC/ETH/etc spot market on Coinbase, using a multi-signal stack:

Combined into a 0–6 score. Threshold ≥ 2 to enter. Conviction-weighted position sizing (5%–20% of equity scaled to score). +5% take-profit, −4% stop-loss, 168h time-stop. Re-entry blocked while holding.

CHAPTER 02

"Edge confirmed" — and wrong

We ran a 60-day walk-forward backtest across 10 coins, 210 trades. Result:

Hit rate              48.6%
Avg strategy return   +4.83% per coin
Avg buy-and-hold      +2.32% per coin
Alpha vs buy-and-hold +2.52%
Verdict               EDGE confirmed ✓

We deployed live. Placed three real-money trades. Then ran the backtest again — this time with Coinbase's actual taker fee (25bps × 2 sides = 50bps round-trip) subtracted from each trade.

CHAPTER 03

Same data, fees included

Hit rate              48.6% (same)
Avg strategy return   -5.24% per coin   ← SUBTRACTING fees
Avg buy-and-hold      +2.71% per coin
Alpha vs buy-and-hold -7.95%
Verdict               NO EDGE — bot underperforms B&H by 8% ✗

The same strategy that looked like alpha became a fee-bleeder once we honestly accounted for the cost of trading. 21 trades per coin × 50bps = 10.5% in fees over 60 days per coin. The +2.52% gross alpha was completely consumed.

The fee trap. The most common pattern in retail trading marketing is "look at this backtest, it printed +X%." If the backtest doesn't disclose fee assumptions, assume it omitted them. Coinbase taker is 25bps. Robinhood is "free" but pays via PFOF (you slip on the spread). Interactive Brokers is 0.5–1bp. Whatever venue you use, multiply your trade frequency by the round-trip cost. Most active retail strategies don't survive once you do.

Before halting, we tested two adjustments:

ConfigStrategyB&HAlpha
5% TP / 4% SL (original)−5.24%+2.71%−7.95%
8% TP / 3% SL (asymmetric)−4.88%+2.91%−7.79%

Tighter or wider exits don't help — the underlying win/loss distribution at 48.6% hit rate just isn't favorable enough to overcome 50bps × 21 trades. Tuning can't fix a strategy that doesn't have edge.

CHAPTER 04

The honest halt

We wrote a halt file. Bot stopped placing new entries. The three live positions ($24.70 ETH × 2 + $9.69 BTC) stayed open and were set to exit naturally on TP/SL/time-stop. Total real-money loss: about 0.6% in fees on the live-test stake.

— operator "Earn or die" — when something doesn't work, kill it. Don't pretend.

We caught this on day one of live deployment, lost less than 1% of capital, and now know two things we didn't know before:

  1. Pure intraday momentum on hourly bars has no alpha after Coinbase's retail fee tier. This isn't a tuning issue — it's a strategy-doesn't-work-at-scale issue. Fixing it requires either materially better signals (lower trade frequency or higher hit rate) or materially lower fees (Tier 2+ volume — unreachable at live-test scale).
  2. Our SEC scanner edge probably doesn't transfer to crypto spot directly. The scanner has 89% hit rate on equity catalysts. But "MSTR catalyst hit" doesn't mean "BTC will move 5% in next 168h." The correlation is weaker than the per-equity edge.
ITERATION · 01

Research found alpha. Halt auto-lifted.

The strategy lab kept iterating after the original halt. On 2026-04-27 we added 4 new candidates (weekly_rotate, drawdown_buy, regime_split, dual_momentum). One of them — dual_momentum — cleared the +1% promote threshold with +1.87% net alpha vs B&H over 60 days, 91.7% hit rate (11/12 winners), only 12 trades so the fees barely bite. The lab auto-removed the halt file and wrote .live_strategy.json naming dual_momentum as the live strategy.

What dual_momentum actually does

Antonacci-style trend confirmation on hourly crypto bars — four rules, all required to fire an entry:

RULE 01

7d return positive

The most recent week must be uptrending. No buying into a down week.

RULE 02

30d return positive

The longer-window trend must agree. Stops false breakouts in down regimes.

RULE 03

Not at 24h high

Don't chase the local top. Price within 1% of yesterday's high → skip.

RULE 04

All three pass

If any rule fails, no entry fires. Most days we don't trade.

It's intentionally restrictive. Most days no entry fires. When it does, the trend is multi-window confirmed and the entry isn't right at a local peak. Wide TP (+15%) and tight SL (−6%) — one winner pays for two losers; with 91.7% hit rate, very few losers happen.

ITERATION · 01

Why others failed and this one won

StrategyTradesHit %Alpha vs B&HVerdict
momentum_5_4 (original)10252.9%−11.29%FAILED
buy_and_hold (control)5100%−0.34%FAILED
bear_regime_long4055.0%−4.42%FAILED
weekly_rotate (new)1844.4%−13.24%FAILED
regime_split (new)771.4%−0.70%FAILED

The pattern: low trade count + high hit rate + dual-window trend confirmation is what survives the fee tax. Single-window strategies trigger too often and get eaten by fees. Dual-window strategies trigger rarely and only when the trend is actually established.

ITERATION · 01

How the live bot uses this

We wired dual_momentum directly into agent_coinbase.py on 2026-04-27. The live bot now runs a closed loop:

First live trade since the halt fired at 04:13:42 UTC on 2026-04-27 — $5.00 ATOM-USD at $1.993, gated by dual_mom_7d=+11.84% / 30d=+19.20%. ARB and LINK were filtered out by the "not at 24h high" rule that same run, exactly as designed. ARB later passed at $0.1308 once the rule cleared (7d +4.31% / 30d +46.64%). 5 open positions now: ETH×2, BTC, ATOM, ARB.

— the methodology The halt-file + auto-promote loop works.
Bot was off for ~28 hours. Lab found alpha. Halt lifted automatically.
No manual intervention required.
ITERATION · 02

The audit killed the next idea.

Operator hypothesis (2026-04-27): "We're sitting on +1% to +1.6% unrealized winners with a +15% TP that may take days to hit. Could a trailing-stop exit (arm at +5%, exit on −2% from high-water mark) capture more of the move and rinse the loop faster?"

Reasonable hypothesis. Sounds tradeable. We did NOT ship it directly. Instead we added it to the strategy lab as dual_momentum_trail and replayed against the same 60-day candle set with the same fee model:

StrategyTradesHit %Returnvs B&HVerdict
dual_momentum_trail (proposed)2878.6%+10.76%−2.38%FAILED — rejected

The trailing exit closed too eagerly on minor pullbacks. 28 trades vs 12 means more fee burn, 78.6% hit rate vs 91.7% means more losers, and the +15% wins that drive dual_momentum's edge got capped at ~+5% to +8% before they could fully develop.

The audit kept the bad idea out of production. Live bot stays on dual_momentum. We DID wire the trailing-stop logic into manage_exits() inside agent_coinbase.py so the rails exist for any future variant that does pass the threshold — but the rails stay inert until a strategy with trail_pct in its params actually gets promoted by the lab.
FINAL

What this proves

🛠

"Sounds tradeable" ≠ "is tradeable."

The trailing-stop proposal was logical. The math said no. Always backtest before promoting.

Build rails when you write rules.

Trailing-exit live support exists now — when a variant ever clears the bar, no re-engineering needed.

The audit IS the product.

Every promoted strategy AND every rejected variant lives at /data/strategy_lab.json. Pro subscribers pay for transparency, not signals.

"Earn or die" cuts both ways.

Earlier we killed a strategy that didn't earn. Now we're shipping one that does — same standard, opposite direction.

What you should take from this

Most paid trading services advertise gross returns. Almost none disclose the fee math, slippage, or kill-switch logic. We just halted our own bot in public, then iterated it back to alpha, then rejected an upgrade that didn't pass the audit — all in front of you. That's how you build trust.

If a service won't show you their full audit ledger including the trades that got halted and the ideas that got killed, you have your answer.

Footnotes

Backtest data: /data/coinbase_backtest.json · strategy lab results: /data/strategy_lab.json · promoted strategy: .live_strategy.json (dual_momentum, +1.87% alpha) · live P/L: /data/coinbase_pnl.json · all open and historical positions: /trust/ · halt file REMOVED 2026-04-27 04:02 UTC by lab auto-promote.

This is not investment advice. We are a software publisher, not a registered investment advisor. The bot trades a small principal sum we control. We disclose all trades, all halts, and all rejected iterations.

The console is already running.
You just haven't sat down at it yet.

Three hundred SEC filings parsed since you started reading. Heatmap recalculating, scanner sorting, bot watching every position. The audit log is open. The console is hot.

Enter the Scanner See the Audit
No signup required for free tier · Stripe checkout takes 12 seconds · cancel any time

You just read the write-up. The screen it came from runs every morning at 3:30 AM ET.

$99 once — read tomorrow's list instead of last week's.

Tier 1 setups touched +2% intraday 49.5% of the time across 329 tracked calls. Baseline for everything else: 40.8%. That is a +8.7 point edge, measured from the NEXT OPEN — the first price you could actually pay, not the prior close. We publish the misses too: https://catalystedgescanner.com/trust/

  1. Click Become a Founding Member below.
  2. Pay $99 once — not monthly, not ever again.
  3. You keep every future release at that price. Tomorrow's ranked list lands at 3:30 AM ET, before the open.

29 of 30 founding seats left. The price goes up when they are gone.

Become a Founding Member — $99 once

One payment. Lifetime access. The free daily picks stay free — this is for people who want the full console. Not buying today? Get tomorrow's ranked list free →