EUR/USD Forex Ghost Trader Status
Live EUR/USD Forex Ghost Trader status — current trade, latest verdict, regime, RSI, EMA, live spread (Gate 8), session label, 6 specialist agent votes, all 9 entry gates
EUR/USD council uses 6 specialist agents unique to Forex: MACRO_SAGE (VETO), TECH_ANALYST, SESSION_GUARDIAN (VETO), FLOW_WARDEN, MOMENTUM_HUNTER, RISK_WARDEN (VETO). Three veto agents — AVOID confidence > 0.7 forces a hard AVOID regardless of the chief judge ruling. EUR/USD is more macro-sensitive than any other AIOKA asset, hence the extra VETO compared to ETH/Gold.
⚠️ This is a paper-trading status snapshot, not financial advice. AIOKA EUR/USD Ghost Trader is a simulation in Sprint 186. Never make real financial decisions based solely on this signal.
Sprint 186 field-naming convention
This endpoint returns snake_case field names exclusively. No camelCase aliases. Other AIOKA endpoints (ETH / SOL / TAO / Gold) use camelCase aliases via Pydantic populate_by_name; EUR/USD does not. TypeScript clients should write interfaces matching exactly what the JSON contains.Response Fields
EUR/USD evaluates 9 entry gates (Gate 0 news blackout through Gate 8 spread). Gates 0, 7, and 8 are unique to EUR/USD vs crypto:- Gate 0 (news blackout) blocks entry around FOMC, NFP, CPI, ECB, Fed Chair Speech, FOMC Minutes (TIER-1 = full-day block; TIER-2 = ±N min symmetric window).
- Gate 7 (session) blocks entry outside London / NY / Overlap (Tokyo and Sydney sessions are intentionally blocked for EUR/USD due to thin liquidity).
- Gate 8 (spread) blocks entry when live ZEURZUSD spread is >= 2 pips (microstructure stress signal).
Top-level
| Field | Type | Meaning |
|---|---|---|
status | string | "WAITING" (no open EUR/USD trade) or "IN_TRADE" |
current_trade | object | null | Open EUR/USD trade details when status == "IN_TRADE" |
latest_verdict | object | null | Latest EUR/USD council verdict with agent votes |
regime | string | null | Market regime (e.g. ACCUMULATION, BULL_TRENDING, RECOVERY) |
rsi_1h | number | null | EUR/USD 1H RSI |
ema_200 | number | null | EUR/USD 1H EMA(200), 5 decimal places |
eurusd_price | number | null | Latest EUR/USD spot price (last trade), 5 dp |
eurusd_bid | number | null | Live best bid (5 dp) |
eurusd_ask | number | null | Live best ask (5 dp) |
spread_pips | number | null | Live (ask - bid) in pips. Must be < 2.0 for Gate 8 to pass. |
session_label | string | "LONDON" / "OVERLAP" / "NEW_YORK" / "WEEKEND" / "CLOSED". Entry only during London / Overlap / NY. |
paper_trades_validated | int | Count of closed validated EUR/USD paper trades (0 — 10 milestone before live capital). |
paper_mode | bool | true while EUR/USD is in paper mode. Becomes false after 10 validated paper closes AND post-validation approval. |
generated_at | string | Response timestamp (ISO 8601 UTC) |
gates | object | Per-gate boolean evaluator (9 gates for EUR/USD) |
current_trade fields (when status == "IN_TRADE")
| Field | Type | Meaning |
|---|---|---|
entry_price | number | EUR/USD entry price (5 dp) |
size_units | number | Position size in base-currency units (EUR) |
pnl_usd | number | Live P&L in USD |
pnl_pips | number | Live P&L in pips (Forex-native unit) |
tp1_hit | bool | Whether TP1 partial close has fired |
stop_loss | number | Stop loss price (5 dp). Hard stop = entry × 0.995 (0.50% / ~50 pips floor) |
tp1_price | number | TP1 target price = entry × 1.003 (+0.30% / ~30 pips) |
tp2_price | number | TP2 target price = entry × 1.007 (+0.70% / ~70 pips) |
hwm | number | null | High-water mark for TSL ratchet |
session | string | null | Session label at entry (LONDON/OVERLAP/NEW_YORK) |
spread_at_entry | number | null | Live spread in pips at entry fill (Gate 8 audit) |
latest_verdict fields
| Field | Type | Meaning |
|---|---|---|
ruling | string | STRONG_BUY / BUY / ACCUMULATE / HOLD / REDUCE / AVOID |
confidence | number | 0.0 — 1.0. Entry requires confidence ≥ 0.65. |
agent_votes | object | Per-agent verdict from all 6 specialist agents |
agent_votes.<AGENT> | object | Each agent entry has ruling and confidence |
plain_explanation | string | null | Plain-English, jargon-free 2-3 sentence summary of WHY the council reached its ruling, synthesized by the Chief Judge in the same call. null for historical verdicts recorded before this feature. |
created_at | string | ISO 8601 timestamp of verdict |
gates fields
| Field | Type | Meaning |
|---|---|---|
news_blackout | bool | Gate 0 — no high-impact macro event within window |
judiciary | bool | Gate 1 — Judiciary Agent bullish |
council | bool | Gate 2 — EUR/USD council ≥ 65% confidence and bullish |
ema_proximity | bool | Gate 3 — price +0.05% to +0.30% above EMA 200 |
regime | bool | Gate 4 — regime is ACCUMULATION / BULL_TRENDING / RECOVERY |
quality | bool | Gate 5 — composite quality score ≥ 65 |
momentum | bool | Gate 6 — 1H momentum not FALLING |
session | bool | Gate 7 — inside London / NY / Overlap; weekend hard block |
spread | bool | Gate 8 — live ZEURZUSD spread < 2 pips |
session_label | string | Current session label (see top-level fields) |
spread_pips | number | null | Live spread (Gate 8 input) |
macro_event_clear | bool | Gate 0 outcome (TRUE = no event in window) |
gates_met | int | Count of passing gates (0 — 9) |
trigger | string | null | Description of the first failing gate, or null when all 9 pass |
Specialist Agents (6)
| Agent | Weight | Veto | Domain |
|---|---|---|---|
MACRO_SAGE | 0.25 | ✅ | Fed-ECB rate diff, DXY, US-EU surprise, macro event proximity |
TECH_ANALYST | 0.20 | — | RSI multi-timeframe, MACD, Bollinger Bands, EMA 200 distance |
SESSION_GUARDIAN | 0.20 | ✅ | Session detection, spread, weekend block, vol ratio |
FLOW_WARDEN | 0.15 | — | CFTC COT institutional positioning, DXY momentum |
MOMENTUM_HUNTER | 0.10 | — | 1H momentum, MTF alignment, tick activity heuristic |
RISK_WARDEN | 0.10 | ✅ | Hard stop math, TSL monotonicity, BE Shield, weekend gap, drawdown |
0.7 from any of MACRO_SAGE, SESSION_GUARDIAN, or RISK_WARDEN forces a council ruling of AVOID regardless of the chief judge synthesis.
EUR/USD-specific risk flags
The council surfaces these risk flags on the verdict object (visible in the internal/eurusd_council Telegram command output; not persisted on
the public verdict row):
MACRO_HEADWIND— DXY rising or rate differential bearishSESSION_BLOCKED— outside London / NY / Overlap or weekend approachingSPREAD_RISK— live spread >= 1.5 pips (approaching 2-pip Gate 8)MACRO_EVENT_IMMINENT— high-impact event within 30 minWEEKEND_GAP_RISK— Friday afternoon, insufficient exit runwayUSD_STRENGTH— DXY 7d change > +1%
Response
Live EUR/USD Ghost Trader status
"WAITING" (no open EUR/USD trade) or "IN_TRADE".
Live spread in pips (must be < 2.0 for Gate 8).
Current EUR/USD session. LONDON / OVERLAP / NEW_YORK = entry allowed; WEEKEND / CLOSED = blocked.
Closed validated EUR/USD paper trades (0-10 milestone).
EURUSD_PAPER_MODE flag; live unlocked after 10 validated paper closes AND post-validation approval.
Per-gate boolean status for the EUR/USD 9-gate entry framework.
Spec enumerates Gate 0 (news blackout) through Gate 8 (spread) inclusive = 9 distinct checks. The header in the spec doc says "8 gates" colloquially but every evaluation row shipped here is required for entry.