~940 signals/year: how keel went from 2 trades per asset-year to a collectable evidence pipeline (Coinbase spot) #359
eaitbrahim
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The number
~940 entry signals per year, pooled across 19 assets (~2.6/day). Six weeks ago the same engine, on the same venue — Coinbase spot, USD pairs, the only venue keel trades — produced 2.15 signals per asset per year.
The problem it fixes
keel's promotion gate demands n=100 trades per rule per product before paper evidence can argue for real money. At 2.15 signals/asset-yr that gate is 31–84 years away per asset. As the August status review put it: waiting is not a slower path; it is no path. The engine's honesty gates were fine; the clock was the defect.
How it was achieved — three moves, each measured
1. Trade the same rules on an hourly clock (issue #337). The daily turtle rules evaluated on
ONE_HOURbars fire 49.4 signals per asset-year (measured over 5 years of cached Coinbase candles; median n=268 per rule-product; range 48.5 LTC to 57.0 BTC) — a 23x increase with zero parameter changes. This shipped as a third deployment profile,paper-hourly: its own database, its own config, one cycle per UTC hour, kill-switch-gated.2. Fix the warm-up so the confirmation series actually exists (issue #349, shipped in v0.9.1). The documented cache-warm step turned out to fetch only two of the profile's three candle series —
keel fetchwas ignoringconfig.market_data.granularities, so theFIFTEEN_MINUTEentry-gate confirmation series started with literally one bar per product. v0.9.1 makes every fetch path honor the config; the warm step now fills ~35,000 fifteen-minute bars per product.3. Widen the universe 8 → 19, behind a measured health gate (issue #351, PR #358). Eleven Tier-2 assets (ZEC, NEAR, AVAX, UNI, FET, ICP, DOT, CRV, ALGO, BCH, DOGE) were admitted only after a 90-day
FIFTEEN_MINUTEdata-health screen on Coinbase: coverage >= 95.98%, zero zero-volume bars, worst gap 5 bars. They trade with target weights capped at 2% each (78/22 Tier-1/Tier-2 split) pending the spread-gate rail (#350).49.4 signals/asset-yr x 19 assets = ~940/year. The n=100 pooled forward-trades review (#353) is now ~5-6 weeks of accrual away, not decades — it is scheduled for 2026-09-30.
The honest caveat (read this part)
The hourly configuration is measured NET-NEGATIVE at Coinbase's taker fees — 0 of 90 backtest cells profitable at every fee tier the venue offers (restated 2026-08-13 under the production-faithful engine). This pipeline exists to produce admissible forward evidence — rail vetoes, real outcomes, pending lifespans, intent divergence: the things a backtest cannot observe — not profit. A positive stretch would prove nothing: ~250 sequential trades inside one regime are not 250 independent draws. Daily-tuned parameters on an hourly clock is also, legitimately, a different strategy; forward evidence is the only thing that can settle it.
Status
The kill switch on the hourly profile was opened by the operator on 2026-08-18; the first 19-asset cycle ran clean (19 rules evaluated, correct no-signal verdicts, no errors). Progress tracks in milestone 14; the n=100 review lands in #353.
All reactions