How it thinks · CyPredict
Transparent pipeline no magic
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
Watch the engine fire BUY / SELL signals as price moves
The same decision loop the live dashboard runs, replayed on a fixed tape — candles print in, three setups fire, and cumulative P&L integrates across the window so you can see every entry, stop, and target land.
System pipeline
How the engine thinks
Twelve wires and the live tape feed one decision surface. Every stage is rule-based and auditable — from raw price to a delivered XAUUSD decision.
- 01Step 01
Ingest
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.
- 02Step 02
Classify · Score
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.
- 03Step 03
Build context
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.
- 04Step 04
Run signal engine
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.
- 05Step 05
Explain
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.
- 06Step 06
Deliver
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.
Rule-based and auditable · No black box
The readout, decoded
Six numbers, one posture
Bias
Direction, structural
Long or short, read from structure and session flow — never from a single candle.
Confidence
0–100, transparent
How much confluence backs the read. Low scores are published too — that is the point.
Trap risk
Fake-outs, called early
Liquidity sweeps and stop-hunts flagged before entry, not explained after.
Timing
NOW / SOON / WAIT
A window, not a countdown. If the window closes, the setup is retired.
Levels
Entry · stop · target
Drawn from the candle the engine fired on. Nothing repainted.
CY commentary
Context per signal
One paragraph of macro context per setup, written by CyIntelligence.
Every rule is documented. Every signal is traceable. If we cannot explain it, we do not ship it.
Confidence formula · Documented
How confidence is composed
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.
