How a 0–100 opportunity score is built
Every score is fully deterministic — the same candles always produce the same number, with no AI in the loop. That makes the engine reproducible and backtestable. The AI writes the plain-English narrative after the score exists; it never moves the number. The pipeline runs in three stages.
Detect signals
Fire named technical signals from the candle history — RSI extremes, distance from SMA50, MACD trend, volatility compression. Each carries a direction and a 0–1 strength. No signals, no opportunity.
Fold into five metrics
Signals plus raw candle math become five 0–100 components: expected return, confidence, safety, liquidity, momentum. Direction (long/short) is the heavier side of the signal weights.
Weighted composite
The five metrics combine through fixed weights into one 0–100 score. A floor (55 crypto/stocks, 40 forex) decides what surfaces on the feed.
What each component measures — and how much it counts
Expected return
weight 0.30Size of the ATR-projected move to target. Highest weight.
Confidence
weight 0.25Signal agreement × confluence × hit-rate.
Safety
weight 0.20Inverse of volatility — calmer instruments score higher.
Momentum
weight 0.15MACD strength and EMA trend agreement, in the trade's favour.
Liquidity
weight 0.10Log-scaled traded volume — can you actually get filled.
Tracing one real score, end to end
DOGEUSDT
▲ LongTop of the ranking — yet still below the 55 crypto floor. The numbers below show why.
Stage 1 · Raw readings
- RSI(14)
- 43.01
- Price vs SMA50
- −1.08%
- MACD histogram
- ≈ 0 (+)
- EMA20 vs EMA50
- below
- ATR%
- 0.604%
- Short/long vol
- 0.517
Signals fired
RSI and SMA50 stayed silent — nothing extreme enough. Only macd_bull is directional, so the trade is long.
Stage 2 · Metrics
Stage 3 · Weighted composite
Each metric contributes value × weight to the final score. The bar is the full 0–100 range; coloured segments are what DOGE actually earned.
Why a great instrument can still score low
DOGE posted excellent Safety (94) and Liquidity (89) — but scored just 48, below the floor, so it wouldn't appear on your feed. The culprit is Expected Return of 9, weighted heaviest at 0.30. And that's correct: ATR is 0.6%/hour — the market is dead calm, so a 1.8% projected move genuinely isn't much. In a volatile session the same setup projects ~15% → Expected Return jumps to ~75 and the score lights up green.
Known calibration bias
Safety rewards low volatility; Expected Return rewards high volatility — and Expected Return outweighs Safety (0.30 vs 0.20). So the engine net-favours volatile markets. That's why forex, with its ~0.5% moves, needs a lower floor, and why proper per-market volatility normalisation is the real long-term fix.
The takeaway: a high score means a meaningful projected move, backed by agreeing signals, on a tradeable but not-too-wild instrument, with the trend behind it. Scores are legible, reproducible, and never financial advice.