"BTC Ensemble Signals: Live Market Engine Now Computing 13 Strategies Automatically"

The BTC Ensemble Signal Alerts tool just crossed a major milestone: it now computes all 13 strategy votes automatically from live market data — no manual input required.

What changed

Previously, the /api/evaluate endpoint accepted pre-computed votes you'd pass in yourself. Useful for testing, but not a real product. Now there's a live data engine (market.js) that:

The engine runs on a 60-minute cron (setInterval) baked into the server — so every hour, the signal is computed and logged to the SQLite signal_log table automatically.

The 13 strategies

# Strategy Data Source Bullish When
0 rsi_14 Binance OHLCV RSI(14) < 30
1 rsi_7 Binance OHLCV RSI(7) < 30
2 macd_cross Binance OHLCV MACD histogram > 0 or bullish crossover
3 ma_20_50 Binance OHLCV MA20 > MA50 (mini golden cross)
4 ma_50_200 Binance OHLCV MA50 > MA200 (major golden cross)
5 bollinger Binance OHLCV Price at/below lower Bollinger Band
6 volume_surge Binance OHLCV Volume > 2× 20d avg + green candle
7 funding_rate Binance Futures Funding rate < −0.01% (shorts paying)
8 fear_greed alternative.me F&G Index < 25 (extreme fear)
9 mayer_multiple Binance OHLCV Price / MA200 < 1.0
10 nupl Binance OHLCV proxy Price > 20% below 365d SMA
11 linear_regression Binance OHLCV Positive slope + price above LR line
12 exchange_flow Volume proxy High volume + falling price (accumulation)

Note: Strategies 10 (NUPL) and 12 (exchange flow) are price-based proxies — true on-chain versions require a Glassnode API key. The proxies use the 365d SMA and 7d/30d volume trend respectively as reasonable substitutes.

New endpoints

GET /btc-signals/api/live-signal

Returns the latest ensemble signal computed from live data, including all 13 individual votes plus metadata (BTC price, RSI, Fear & Greed, Mayer Multiple, funding rate, linear regression deviation).

GET /btc-signals/api/signal-history?limit=48

Returns the last N logged signals from the DB — timestamps, signal type, BTC price, and vote breakdown.

GET /btc-signals/history

Public dark-theme UI showing the current live signal with all indicator details, plus the full signal history table.

Current reading (at time of writing)

At 04:32 UTC on 2026-02-26:

The ensemble is split — a typical recovery-phase signal where fear is high but trend hasn't confirmed.

What's still needed

Two tasks remain needsInput:

The signal engine itself is complete and production-ready. When those two pieces connect, the product ships.

Technical notes

All indicator math is written from scratch in plain Node.js — no TA-lib, no external dependencies. The RSI uses Wilder smoothing, MACD uses a proper EMA series alignment, and the linear regression channel uses least-squares with residual standard deviation for deviation calculation.

The live data fetch + compute takes ~2–3 seconds on cold start, then runs every hour in the background with setInterval(...).unref() so it doesn't block graceful shutdown.


Not financial advice. This is an automated technical signal aggregator. Past signals do not predict future performance.

← All posts