If you've spent any time looking at trading charts, you've seen the problem: RSI says oversold, MACD just crossed bearish, Bollinger Bands are squeezing, the trend is up, volume is fading. So what is it — a buy, a sell, or noise?
Most traders pick a favourite indicator and ignore the rest. That works for a while, then a single regime change turns the favourite into the worst performer in your toolkit. The honest answer is that no single indicator is reliable across markets, time-frames, or volatility regimes. Each one captures one slice of price behaviour and is wrong in different ways.
The Composite Indicator Index — CII for short — is Stryqe's response. Instead of trusting any single signal, the engine evaluates twelve indicators on every coin, every cycle, weights each by historical reliability, applies combo bonuses for known-strong combinations, and emits a single net score from −100 to +100. The display surface clamps that to a 0–100 confluence number. When it crosses a strict threshold, and only when, the engine emits an ALIGNED tag.
This article walks through every part of that pipeline — what each indicator contributes, how the weights are tuned, what the threshold actually guarantees, and (critically) what the score does not tell you.
The twelve indicators
Each cycle, the engine computes twelve discrete signals on each coin's hourly candles. Every signal returns one of five values: BUY, MILD_BUY, NEUTRAL, MILD_SELL, or SELL.
| Indicator | What it captures | Default weight |
|---|---|---|
| RSI (14) | Momentum exhaustion (oversold < 30, overbought > 75) | 6 |
| MACD (8,21,5) | Trend-momentum crossover (fast variant for crypto) | 10 |
| Bollinger Bands | Position within volatility envelope (lower 10% = BUY) | 5 |
| BB Squeeze | Volatility compression below 20th percentile + expansion | 12 |
| RSI Divergence | Price/momentum direction conflict over 30 candles | 12 |
| Volume Spike | Recent 3-candle volume vs 20-candle average | 11 |
| Buy Pressure | Maker-buy volume share of total trade volume | 5 |
| Trend Confluence | Price above 20-, 50-, and 200-period MAs | 8 |
| Momentum (ROC) | 1-hour and 4-hour rate-of-change | 5 |
| OBV (proxy) | Volume-weighted price drift over recent candles | 12 |
| Daily Trend | Higher-time-frame structure (daily candle position) | 10 |
| Funding Rate | Perpetual swap funding extremes (squeeze potential) | 7 |
The default weights sum to 103, then are normalised to 100 inside the scoring step. The normalisation matters: it means weights are relative, not absolute, and tuning one indicator's weight up implicitly tunes others down.
Scoring: weighted net + combo bonuses
For each coin, the engine adds up bullish weight, subtracts bearish weight, and returns a net percentage:
bearScore = Σ (weight × {1 if SELL, 0.2 if MILD_SELL, 0 otherwise})
netScore = ((bullScore − bearScore) / totalWeight) × 100 + comboBonus
netScore = clamp(netScore, −100, +100)
The combo bonuses are extra points the engine adds when specific high-conviction combinations co-occur. These were not invented from theory — they emerged from backtesting which two-indicator pairings produced disproportionately better outcomes than the sum of their individual contributions.
| Combination | Bonus | Reason |
|---|---|---|
| BB Squeeze BUY + OBV BUY | +15 | Compression + accumulation = breakout fuel |
| MACD BUY + OBV BUY | +12 | Momentum cross confirmed by volume |
| Trend BUY + OBV BUY | +10 | Trend alignment with smart-money flow |
| RSI BUY + BB BUY without OBV | −10 | Oversold + extreme low band but no buyers = falling knife |
The negative combo is as important as the positive ones. RSI saying "oversold" while price is hugging the lower Bollinger band looks like a textbook bounce setup, but with no volume confirmation it's frequently a knife continuing to fall. The −10 explicitly punishes that pattern.
The ALIGNED threshold
A high CII number alone doesn't trigger an ALIGNED tag. The engine demands three independent conditions:
- Net score > 75 — the weighted confluence must clear a strict cutoff
- Bull count ≥ 3 — at least three indicators must individually be flashing
BUY(not just contributing partial weight) - Volume confirmed — recent volume spike ratio must be > 1.5× the 20-period average
On top of those, the engine applies veto filters: if price is below the 200-period EMA, or more than 5% extended above it (overextension), or if recent ATR is below 0.3% (low-volatility chop), the action is downgraded or suppressed entirely. ATR-based take-profit and stop-loss levels are then attached at 2.5× ATR and 1.5× ATR respectively — the same geometry every backtest uses.
Three conditions must all clear, plus three vetoes must all stay quiet. ALIGNED is deliberately rare. On a 60-coin universe, a typical 6-hour cycle produces only 2–3 ALIGNED tags. If the threshold were lower, the tag would lose meaning.
Why the threshold isn't tuneable per user
Some platforms let users set their own confluence threshold. Stryqe deliberately does not. The reason is statistical: the threshold is calibrated against the historical accuracy distribution. If a user lowered it to "60 to see more signals", what they actually do is silently degrade their accuracy from the published baseline. The current pooled measurement — 44.8% on 24h outcomes across n=96 ALIGNED signals from twenty cron runs — is only valid at the 75 threshold the engine ships with. (Random-walk break-even at the 2.5×ATR / 1.5×ATR geometry is 37.5%, so the 24h figure is roughly seven points above the noise floor — modest positive expectancy, not a strong edge. The live accuracy panel always shows the latest reading.)
If you want more signals, that is what the MILD_BUY tag is for. It uses a looser cutoff (net score > 65 with bull count ≥ 3 and volume confirmation) and is shown on the scanner with a different colour. It is explicitly not the same population of signals as ALIGNED, and we do not collapse them in accuracy reporting.
Weight tuning: the never-worse guard
The weights aren't static. Every six hours, a Cloud Function runs the engine on 60 coins × 2000 historical candles, captures every ALIGNED signal it would have produced, checks the 4-hour and 24-hour outcomes for each, and proposes weight adjustments based on each indicator's individual hit rate within those signals.
hit rate > 55% → weight + 1 (cap 22)
hit rate < 40% → weight − 1 (floor 5)
hit rate < 25% → weight − 3 (floor 5)
sample size < 3 → no change
After adjustment, weights are re-normalised to 100. Then comes the critical step: a never-worse guard. The engine simulates the proposed new weights against the same historical signals it just analysed. If the simulated accuracy under the new weights is lower than the actual accuracy under the old weights, the proposed change is rejected and the old weights persist. This isn't optional — it is the only thing protecting the engine from a noisy 6-hour run pushing weights in a worse direction.
The guard is calibrated on the 24-hour outcome axis, not the 4-hour axis. That decision was deliberate: the engine ships a 24-hour adoption gate, so it must be tuned on the same axis it is judged on. Tuning on 4h while shipping on 24h would be incoherent — a tuning could nudge 4h up while degrading 24h, and the system would adopt it.
Friction-aware: the 0.3% adjustment
One feature that distinguishes the v2 engine from naive backtests is friction-awareness. Every signal's outcome is computed net of typical round-trip costs:
- Binance taker fee × 2 legs ≈ 0.20%
- Typical alt-coin slippage ≈ 0.10%
- Total friction subtracted from gross exit ≈ 0.3%
A "win" requires net P&L > 0 after that subtraction — not just gross price movement. This is why the published accuracy numbers are lower than a frictionless backtest would show. We consider the difference important: the frictionless number is fictional in the sense that no user actually pockets it.
What the CII does not tell you
Confluence is not prediction. The CII is a present-tense measurement of how many independent technical conditions agree right now. Historical accuracy in the low-to-mid forties on the 24-hour horizon — above the 37.5% random-walk floor for the published TP/SL geometry but well below a "high-probability" claim — means a slight positive expectancy across many signals over time, not a guarantee that any one signal will work. It also says nothing about the magnitude of moves, only their direction relative to the entry.
News events, exchange outages, regulatory announcements, sudden whale liquidations, and most macro shocks. The engine processes price and volume only. Any of those non-technical events can override the strongest confluence reading instantly, and in the wrong direction.
The engine also has nothing to say about position sizing, leverage, or correlation between simultaneous signals. If three coins all flash ALIGNED at once and they're all small-cap alts, treating them as three independent opportunities is wrong — they're likely the same trade riding the same beta. That's a portfolio-level concern outside the scope of the engine itself.
Reading the live scanner
On the scanner, every coin shows three numbers: the CII bar (0–100), the action tag (NEUTRAL / MILD_BUY / ALIGNED / MILD_SELL / EXIT ZONE), and the per-indicator breakdown when you expand a row. The colour coding is consistent: green for confluence-positive, gold for caution-but-watching, orange for weak, red for confluence-negative.
If you only look at one number, look at the action tag — not the CII percentage. A coin with a CII of 73 and bull count 2 is not equivalent to a coin with a CII of 73 and bull count 4, even though the headline number is identical. The action tag bakes in the count, the volume confirmation, and the veto filters, so it carries more information per character than any single metric.
The bottom line
The CII is a confluence aggregator, not a prediction model. Its value is that it is honest about the noise in any single indicator and conservative about when to claim that noise has resolved into signal. That conservatism shows up in the gap between the number of coins on the scanner (60) and the typical number of ALIGNED tags per cycle (2–3) — a 95%+ rejection rate by design.
Treat ALIGNED as an attention-trigger, not a buy button. Verify the per-indicator breakdown, check the higher-time-frame context, confirm the position fits your risk budget, and trade your own plan. The engine's job is to filter the universe down to the few setups worth your attention; what you do with that attention is your call.