Skip to main content

Signal feed

The Signals tab in the Markets terminal shows a dedicated feed of all markets where the AI has found a meaningful divergence from the current price. Unlike the AI Pick badges on market cards (which are just indicators), the signal feed shows full signal data with rich filtering.

Signal card anatomy

Each SignalFeedCard displays:
ElementDescription
Type badgeSignal type with color: Sentiment (purple), Momentum (amber), Spot Price (cyan)
Top gradientColor gradient background matching the signal type
Market questionTruncated market question text
Confidence bar0-100% horizontal bar showing AI confidence level
Live priceCurrent YES/NO price from SSE feed
AI Pick badgeWhich outcome the AI favors (YES/NO)
Favorite outcomeBadge showing the AI’s recommended side
Asset tagIf crypto-related, shows the asset symbol
Trade buttonAnimated button that opens the market for trading

Card animations

  • Dealt layout: Cards cascade from the top with spring physics (stagger delay per card)
  • Grid layout: Cards fade in with scale-up animation
  • Hover: Card lifts with shadow enhancement

Filters

The signal feed has independent filters at the top:

Signal type filter

TypeDescription
ALLShow all signal types
SENTIMENTAI’s independent probability based on news, social data, and fundamentals. Fires when AI confidence diverges from market price.
MOMENTUMPrice action has moved in the direction the AI predicted. The market is confirming the AI’s thesis. Trend-following signal.
SPOT_PRICECrypto-specific. A token crosses a threshold relevant to a prediction market (e.g., BTC above $100K triggers related market signals).

Category filter

Dropdown with all available market categories. Filters signals to only show markets in the selected category.

Info modal

A ”?” button that opens an explanatory modal describing each signal type in detail.

Sorting

SortDescription
Confidence (default)Highest AI confidence first. The signals the AI is most sure about.
VolumeHighest market volume first. Ensures you’re looking at liquid markets.
Ending SoonClosest to resolution first. Time-sensitive opportunities.
Price ChangeBiggest 24h movers first. Where the action is right now.

Pagination

The signal feed uses cursor-based infinite pagination:
  • Page size: 50 signals per page
  • Cursor format: {confidence}:{condition_id} for stable ordering
  • More signals load as you scroll near the bottom
  • Total signal count displayed at the top

Data pipeline

The signal feed has its own data pipeline:
  1. API: GET /api/signals/feed with query params for all filters
  2. Server: Queries market_signals table, joins with market_catalog for enrichment
  3. Caching: 2-minute server-side cache on the feed (skipped for cursor requests), 5-minute cache on total count
  4. Post-filtering: Tags (OR match), keyword search, date range, minimum volume, sentiment, trending status are all applied after the initial query
  5. Hook: useSignalFeed manages the infinite query state, parses results, memoizes for performance
  6. Enrichment: Each signal is enriched with live prices from the SSE price pool

Signal data model

Each signal contains:
FieldTypeDescription
condition_idstringMarket identifier
signal_typesentiment | momentum | spot_priceType of signal
signal_valueobjectJSON blob containing the full signal payload — includes sentiment direction, favourite outcome, AI reasoning, and source data
confidencenumber (0-100)AI confidence score
expires_attimestampWhen the signal expires
The feed API enriches each signal with live market data: question, category, live YES/NO prices (from SSE), volume, 24h volume, liquidity, and end date.
The most profitable setup: sort by Confidence, filter to 70+, and cross-reference with the War Room in the detail panel. High confidence + high agent agreement + large edge = the trifecta. Most traders find 2-3 actionable signals per day using this filter.