← All Services
Signals Service

Signals Service

Strategy engines for actionable trading signals

The Signals service consumes enriched market data from the Feed, runs multiple trading strategies in parallel, and publishes per-strategy signals directly to Redis. Each AccountExecutor subscribes to the strategy stream it is configured for.

Strategy Purity

Strategies are pure signal generators. They receive a MarketSnapshot and return a StrategySignal. They do not compute entry pricing, position sizing, or manage positions — that is handled by the Executor service.

Intent Actions

Each signal carries one of five intent values; four are actionable (trigger execution):

  • BUY — Enter a new long position
  • EXIT — Close existing position
  • SCALE_IN — Increase position size
  • SCALE_OUT — Decrease position size
  • WAIT — No action recommended (fire-and-forget)

Strategies

Strategies are built in the UI. Define entry rules, exit rules, and parameters, then save and reuse them. Each account can run multiple strategies in parallel — create as many as you need and attach them per account.

Data Flow

Input: feed:{token}:market:{frame} — Full market snapshots from the Feed (per slot, e.g. 15min).

Output: signal:{strategy}:{account}:{token} — Actionable signals go to Redis streams for Executor consumption; WAIT signals use pub/sub only.

Signal Traceability

Actionable signals carry a unique signal_id (SID) for full traceability from entry to exit. EXIT signals inherit the SID from the open position so the Executor knows exactly which position to close.