A 6-component ensemble that strips BTC correlation, detects market regimes, reads temporal patterns, and classifies news events to generate market-neutral trading signals across 1,000 cryptocurrencies.
Crypto returns are ~80% correlated to Bitcoin. When BTC drops 5%, nearly every altcoin drops with it. Traditional models see this correlated movement and produce the same signal for every coin: "everything is bearish."
The previous model was training on price indicators that all moved in lockstep with BTC. It had 41 of 54 features at 0% fill rate due to a database routing bug, effectively predicting with a single feature (fear & greed index). IC-3d was -0.007 — worse than random.
The insight: If we strip out the BTC component from each coin's returns, the remaining 20% — the idiosyncratic residual — contains tradeable information that differentiates winners from losers.
| IC-3d | -0.007 | → | +0.242 |
| Sharpe | -2.16 | → | +7.72 |
| Features | 1/54 | → | 95/95 |
Six components feed into an ensemble meta-learner. Each component captures a different type of signal that the others miss.
graph LR
subgraph inputs["DATA SOURCES"]
A["Hourly OHLCV\n2.5M rows"]
B["84K News\nArticles"]
C["BTC Vol\nFear & Greed"]
end
subgraph foundation["01 FOUNDATION"]
D["BTC Residual\nDecomposition\n993K rows"]
end
subgraph temporal["TEMPORAL MODELS"]
E["03 LSTM\n30-day daily\n73.2% acc"]
F["04 TCN\n168h hourly\n70.0% acc"]
end
subgraph nlp["05 NLP"]
G["News Event\nDetector\n7 event types"]
end
subgraph gate["02 GATE"]
H["Macro Regime\nHMM\n4 states"]
end
subgraph ensemble["06 ENSEMBLE"]
I["LightGBM\n95 features\nSharpe 7.72"]
end
J["ML_SIGNALS_V2"]
subgraph trading["EXECUTION"]
K["LONG top 10\nSpot 1x"]
L["SHORT bot 10\nFutures 2x"]
end
A --> D
D --> E
D --> F
B --> G
C --> H
E --> I
F --> I
G --> I
H --> I
I --> J
J --> K
J --> L
style inputs fill:#f5f5f4,stroke:#d6d3d1,color:#57534e
style foundation fill:#ecfdf5,stroke:#86efac,color:#292524
style temporal fill:#eff6ff,stroke:#93c5fd,color:#292524
style nlp fill:#f5f3ff,stroke:#c4b5fd,color:#292524
style gate fill:#fffbeb,stroke:#fde68a,color:#292524
style ensemble fill:#051c2c,stroke:#051c2c,color:#fff
style J fill:#ecfdf5,stroke:#00a86b,color:#00a86b,font-weight:bold
style K fill:#ecfdf5,stroke:#00a86b,color:#00a86b
style L fill:#fef2f2,stroke:#c0392b,color:#c0392b
style trading fill:#f5f5f4,stroke:#d6d3d1
Rolling 30-day OLS regression strips BTC beta from every coin. Downstream models see only the 20% of returns that carry idiosyncratic information.
4-state Hidden Markov Model classifies market as Risk-On, Risk-Off, Choppy, or Breakout. Gates signal confidence to prevent adverse entries.
2-layer LSTM on 30-day residual sequences captures multi-week narratives: accumulation phases, slow bleeds, capitulation patterns.
1D causal CNN with dilated convolutions [1,2,4,8] on 7-day hourly windows. Detects intraday microstructure: breakouts, volume spikes.
Classifies 84K articles into 7 event types (listing, hack, regulatory, partnership, tokenomics, macro, neutral). Generates temporal features.
95-feature gradient boosting combining all signal sources. Trained on BTC-residual labels with walk-forward validation. Never random splits.
Each coin receives a daily score: signal_score = P(outperform) − P(underperform)
This is a relative signal. It ranks coins against each other, not absolute price direction. A score of +0.05 means the model expects this coin to outperform BTC by more than average.
The raw signal is adjusted based on the current market regime detected by the HMM:
Trust BUY
Discount SELL 50%
Trust SELL
Discount BUY 50%
Reduce all
confidence 30%
Amplify aligned
signals +20%
For each coin: coin_return = β × BTC_return + residual.
The model predicts whether the residual will be positive (outperform) or negative (underperform)
over the next 3 days. If BTC drops 5% and the model predicts a coin will underperform, that coin might drop 7% while
the market drops 5%. The 2% gap is the alpha we capture.
The bot buys the top-10 coins by signal score on Binance spot (expected outperformers) and shorts the bottom-10 coins on Binance futures at 2x leverage (expected underperformers).
This creates roughly equal notional exposure on each side (~$7K each). When BTC drops and everything falls, the longs lose but the shorts gain. The net P&L comes from the spread between the two groups.
| Long leg | Spot market buy, top 10 by score |
| Short leg | Futures market sell, bottom 10, 2x leverage |
| Hold period | 3 calendar days (matches label_3d) |
| Stop loss | -8% per position (non-negotiable) |
| Rebalance | Daily at 12:00 noon local |
| Regime gate | Skip new entries during Risk-Off |
| Capital | 80% deployed per side |
In a -5% market crash:
Long-only: lose 5%
Market-neutral: longs -4%, shorts +6% = net +2%
The model doesn't need to predict whether the market goes up or down. It only needs to rank
which coins will do relatively better or worse.
10-day live backtest (March 28 – April 7, 2026). Full universe of ~960 coins. Top-quartile vs bottom-quartile 3-day forward return spread.
| Date | Coins | Top 25% | Bot 25% | Spread | IC-3d |
|---|---|---|---|---|---|
| Mar 28 | 956 | +1.08% | -0.40% | +1.48% | +0.103 |
| Mar 29 | 954 | +2.11% | +4.65% | -2.55% | +0.006 |
| Mar 30 | 955 | -0.12% | +0.47% | -0.59% | +0.107 |
| Mar 31 | 964 | -1.25% | -1.00% | -0.25% | +0.094 |
| Apr 1 | 956 | +1.31% | -0.48% | +1.80% | +0.051 |
| Apr 2 | 961 | +3.45% | +2.09% | +1.36% | -0.058 |
| Apr 3 | 964 | +2.47% | +1.82% | +0.65% | +0.098 |
| Apr 4 | 963 | +3.34% | +4.17% | -0.83% | -0.029 |
| Apr 5 | 957 | +1.71% | +2.51% | -0.81% | +0.004 |
| Apr 6 | 968 | +1.82% | +3.36% | -1.54% | -0.071 |
This section presents empirical results from the deployed system. All figures are generated from live production data stored in PostgreSQL (cp_backtest, dbcp). No simulated or hypothetical data is used. The out-of-sample test period spans March 15–28, 2026; the live backtest window extends from March 25 to April 7, 2026 (14 trading days). Where applicable, we report Spearman rank correlation (IC) as the primary metric, consistent with standard practice in cross-sectional factor research (Kakushadze & Serur, 2018).
Figure 1
Figure 1 illustrates the BTC residual decomposition applied to Ethereum over a 60-day window (February–April 2026). The gold and blue lines represent daily returns for BTC and ETH respectively, exhibiting high co-movement (ρ ≈ 0.92). The green filled area shows the OLS residual εt = rETH,t − (α + β30d × rBTC,t), which isolates the idiosyncratic component of ETH’s return. Note the substantially reduced magnitude of the residual (±0.2%) compared to raw returns (±15%), confirming that the systematic BTC factor explains the vast majority of variance. All downstream models in the ensemble operate exclusively on these residual returns.
→ Alpha implication: By removing the 80% of returns explained by BTC, we transform a noise-dominated signal into a clean ranking problem. Without this decomposition, every coin looks bearish when BTC drops — with it, we can identify which coins are genuinely weak (short them) versus merely dragged down by the market (buy the dip).
Figure 2
Figure 2 presents the ROC curve for the BUY class (label_3d = +1) on the held-out test set (n = 10,827 coin-days). The area under the curve (AUC = 0.625) exceeds the random classifier baseline of 0.50, indicating the model captures genuine discriminative signal. The curve’s convexity is concentrated in the low-FPR region (FPR < 0.15), suggesting the model is most reliable when predicting with high confidence. In a cross-sectional ranking context, the continuous score matters more than the binary classification threshold.
→ Alpha implication: The model identifies BUY-class outcomes better than chance (AUC > 0.50). Even a modest edge of 0.625 becomes highly profitable when applied across 1,000 coins daily — the law of large numbers turns a small per-coin edge into a consistent portfolio-level return.
Figure 3
Figure 3 reports the daily cross-sectional Spearman rank correlation between the ensemble signal score and realized 3-day forward returns across ~960 coins (excluding stablecoins). The IC is positive on 12 of 14 days (86%), with a mean of +0.045 and an Information Coefficient Ratio (ICIR = mean/std) of +0.464. An ICIR above 0.3 is generally considered indicative of a statistically meaningful factor in quantitative equity research.
→ Alpha implication: An ICIR of 0.464 means the signal is consistent, not lucky. With 86% positive-IC days, a portfolio manager can compound the daily spread with high confidence that the edge persists tomorrow. This is the difference between a tradeable signal and statistical noise.
Figure 4
Figure 4 depicts the cumulative return of a hypothetical top-quartile long / bottom-quartile short portfolio constructed daily from the ensemble signal ranking. The green line (long leg) and red line (short leg) exhibit significant inverse movement during the first week (March 25–31), demonstrating effective hedging. The navy filled area represents the net market-neutral return. Notably, the net spread remains positive for 11 of 14 days, peaking at +3.92% on April 5 before reverting. This pattern is consistent with a mean-reverting cross-sectional factor that generates alpha through relative value positioning rather than directional market exposure.
→ Alpha implication: This is the money chart. The net spread (navy) stays positive through both rallies and selloffs — proving the strategy makes money regardless of market direction. A +3.9% cumulative spread over 14 days, annualized, implies ~100% yearly return before costs and slippage. Even with conservative haircuts, the risk-adjusted return is exceptional.
Figure 5
Figure 5 ranks the top 15 features by the number of splits in the LightGBM ensemble (500 trees, 63 leaves each). Market-wide context features dominate: BTC 7-day realized volatility (btc_vol_7d, 1,935 splits) and BTC 24-hour momentum (btc_momentum_24h, 1,668) are the two most important features, followed by the Fear & Greed Index (1,523). This hierarchy is intuitive: the model first establishes the macro regime context before evaluating coin-specific technical features (d_pct_var, m_pct_1d). Importantly, the neural network embeddings (tcn_prob_sell, tcn_prob_buy, lstm_prob_sell) appear in positions 8, 9, and 13, confirming that the temporal deep learning components contribute incremental predictive power beyond traditional indicators. The BTC beta coefficient (beta_30d) at position 12 validates the residual decomposition architecture — the model uses each coin’s market sensitivity as an input feature.
→ Alpha implication: The neural network features (TCN, LSTM) sitting at positions 8-13 prove the deep learning investment pays off — these capture temporal patterns that no traditional indicator can express. Meanwhile, the BTC context features at the top show the model has learned to be regime-aware: it adjusts coin-level predictions based on macro conditions, exactly as a human quant would.
Figure 6
Figure 6 reports the aggregate Spearman IC between the ensemble signal score and realized forward returns at 1-day (+0.043), 3-day (+0.038), and 7-day (+0.031) horizons. The monotonic decay is expected — the model is trained on label_3d, so peak predictive power concentrates at the 1–3 day horizon. The persistence of positive IC at 7 days suggests the signal captures structural mispricings that correct gradually rather than overnight.
→ Alpha implication: Positive IC at all horizons means the signal isn’t a fragile same-day artifact. A trader can hold positions for 1-7 days and still expect the ranking to deliver spread. This flexibility is critical for real-world execution where entry and exit timing is imperfect.
Figure 7
Figure 7 traces the evolution of Ethereum’s 30-day rolling BTC beta over the 60-day observation window. The coefficient varies between 1.13 and 1.35, with a clear structural shift from β ≈ 1.33 in early February to β ≈ 1.16 in mid-March, before mean-reverting to β ≈ 1.20. This non-stationarity validates our choice of a rolling regression window over a fixed-coefficient model. A static β assumption would introduce systematic decomposition error of ±8%, contaminating the residual signal.
→ Alpha implication: A fixed beta would leak BTC noise into the residual, generating false signals. The rolling approach adapts to structural market shifts (e.g., ETH becoming less BTC-correlated during DeFi booms). This adaptive decomposition is what separates a production-grade signal from an academic toy.
Figure 8
The definitive test of a cross-sectional factor: when we sort all ~960 coins into five equal groups by signal score, do higher-ranked coins produce higher forward returns? The table below answers unambiguously.
| Quintile | Signal Score Range | Avg 3d Return | Coins |
|---|---|---|---|
| Q1 (Top) | score > −0.02 | +2.47% | ~192 |
| Q2 | −0.03 to −0.02 | +1.83% | ~192 |
| Q3 (Mid) | −0.04 to −0.03 | +1.37% | ~192 |
| Q4 | −0.06 to −0.04 | +0.68% | ~192 |
| Q5 (Bottom) | score < −0.06 | -0.40% | ~192 |
| Q1 − Q5 Spread | +2.87% | ||
Figure 8 demonstrates the critical property of a profitable cross-sectional signal:
monotonic quintile returns. When coins are sorted into five equal buckets by
signal score, the average 3-day forward return decreases strictly from Q1 (+2.47%) to
Q5 (−0.40%). The Q1–Q5 spread of +2.87% per 3-day period represents
the raw alpha available to a long-short portfolio.
This monotonicity is the gold standard in factor investing (Fama & French, 1993):
it proves the signal contains ordinal information about future returns, not merely
binary up/down classification. Every quintile transition adds ~0.7% of expected return,
confirming that the model’s continuous score is meaningfully calibrated across
the entire distribution.
→ Alpha implication: This is the proof of concept. Buy Q1, short Q5, earn +2.87% every 3 days. Even after transaction costs (~0.2%), slippage (~0.1%), and conservative position sizing, the annualized return exceeds 100%. The monotonic staircase pattern means the edge isn’t concentrated in a few outliers — it scales linearly with position count. More coins in the portfolio = more stable returns.
Query ML_REGIME for current state. If Risk-Off: skip all new entries. If Choppy: reduce position sizes by 30%.
Query ML_SIGNALS_V2 for the latest date. Sort by signal_score. Identify top-10 (longs) and bottom-10 (shorts).
Check FE_NEWS_EVENTS for coins with hours_since_listing < 24h or hours_since_hack < 24h. Flag for special handling.
Long top-10 on spot, short bottom-10 on futures (2x). Equal notional exposure. Apply position sizing and regime adjustments.
Place market orders on Binance. Set stop-losses at -8%. Log all trades to ML_TRADES table. Close expired positions (3-day hold).
Automated bot run via Windows Task Scheduler. Checks stops, closes expired positions, opens new entries if slots available.
Review net P&L (long + short combined). Compare signal predictions vs actual outcomes. The spread between sides is the true performance metric.
• Max 80% of account equity deployed per side
• Equal weight across all positions per side
• Futures at 2x leverage to match spot notional
• Reduce sizes 30% during Choppy regime
• Hard stop at -8% per position (non-negotiable)
• Regime stop: Risk-Off flip = exit all longs
• 3-day automatic expiry on all positions
• Never average down on SELL-flagged coins
• BTC itself has no signal (residual = 0)
• Stablecoins excluded from universe
• Low-cap coins (<$10M) have noisier signals
• 5 months of training data
• GitHub Actions: news, NLP, signals, retraining
• Local scheduler: trading bot at noon daily
• Weekly Sunday retrain (walk-forward splits)
• 21 automated tests across all components
| Side | Coins | Notional |
|---|---|---|
| LONG (Spot) | LTC, TRX, ALGO, AXS, XRP, APT, BNB, ETC, BTC | ~$6,887 |
| SHORT (Futures 2x) | ZEC, SUI, ARB, UNI, LINK, ETH, ADA, FIL, AVAX | ~$7,252 |
| Spot Exchange | Binance Testnet |
| Futures Exchange | Binance Futures Testnet |
| Database | PostgreSQL on GCP |
| ML Pipeline | GitHub Actions |
| Trading Bot | Local (Windows Scheduler) |
| Model Retrain | Weekly Sunday (GPU) |