Loading
Loading
HOW IT THINKS · CYPREDICT
The signal engine is rule-based and auditable. The news engine's formula is spelled out below. We publish what we do because trust is the product.
SIGNAL REPLAY · ILLUSTRATIVE
Watching XAUUSD OHLC across 5m / 15m / 1h plus curated macro sources — Trading Economics calendar, Finnhub real-time wire, Benzinga commodities channel, Firecrawl-scraped Kitco / FXStreet pages, GNews aggregation. Sources toggle from /admin without a redeploy.
Every news item is deduplicated (SimHash @ 64-bit, threshold 0.85), categorised across ten enums (inflation, fed, rates, yields, geopolitics, …), then scored 0–100 with a transparent admin-tunable formula. No black-box ML.
The context aggregator rolls high-impact items into macro bias, shock risk, suggested posture, and a countdown to the next major event. Refreshed every minute, cached 60s in Redis.
Rule-based decision engine: liquidity sweep detection, session timing, momentum (ROC + EMA slope), volume confirmation, and macro alignment combine into a 0–100 confidence score. Trap-risk overlay catches break-without-retest and 2σ volatility spikes.
Every emitted signal ships with CY commentary (CyIntelligence, 2-3 sentences) grounded in the same inputs. You can verify the reasoning against the chart — no opaque oracle.
Timing window (NOW · SOON · WAIT · AVOID), entry zone, stop zone, two targets. Plus a live countdown to setup expiry, and macro override that down-weights confidence when news is about to break.
CONFIDENCE FORMULA · DOCUMENTED
confidence = clamp(
structure * 0.30 + // liquidity sweep / break of structure
session * 0.15 + // Asia / London / NY bonus
momentum * 0.20 + // ROC + EMA slope
volume * 0.15 + // volume delta vs average (redistributed when feed has no volume)
macro_align * 0.20, // alignment with news context
0, 100
)Weights live in system_settings, adjustable from the admin panel without a redeploy. When the upstream candle feed has no volume data (XAUUSD spot is one of those), the 0.15 volume weight is redistributed across the remaining factors so the score still sums to 100. The macro-override layer can also force timing_window=WAIT and zero out the macro contribution when news.context.suggested_posture is wait or avoid_new_entries.