Market Watch is a full-stack algorithmic trading platform where six specialized agents communicate through an async event bus. DataAgent fetches market data, SignalAgent runs pluggable strategies (momentum, mean reversion, breakout, RSI), RiskAgent validates against circuit breakers and position limits, and ExecutionAgent routes approved orders to Alpaca. The web dashboard surfaces live equity curves, trade history, and real-time position P&L via WebSocket, all configurable at runtime without a restart.
What the system does and how it looks doing it — screenshots from a live paper-trading session.
The top of the interface encodes the system's operating state at a glance — universe, market status, and auto-trade mode — before a single number is read. Below that, agents and analytics update in real time.

Full Dashboard View
Header status badges encode the three operating invariants: MARKET OPEN (whether the exchange is live), UNIVERSE: PAPER (the execution context — PAPER, LIVE, or SIMULATION — set at construction time and enforced across every subsystem), and AUTO-TRADE: ENABLED (whether the execution pipeline is cleared to submit orders). The agent health row and analytics panel sit immediately below, updating via WebSocket without page refresh.

Real-Time Market Ticker
A scrolling ticker strip shows top % gainers from the current day's momentum scan alongside sector ETF moves (XLF, XLK, XLE, etc.). The Data agent refreshes this every minute during market hours — the gainers list feeds directly into the Signal agent's candidate pool.

Agent Pipeline
Seven specialized agents run concurrently in independent threads: DATA fetches live market bars, SIGNAL evaluates momentum conditions, RISK validates every order candidate through a 14-step filter chain, EXECUTION submits cleared orders, MONITOR watches for stop-loss breaches, ALERT dispatches notifications, and OBSERVABILITY logs all agent events for audit.
Live portfolio state sourced from the broker API, broken down into cash and position components with a visual concentration view.

Account Summary
Pulled live from Alpaca on each polling cycle. Daily Trades tracks completed round-trips against the configured maximum — once the limit is hit, the execution pipeline stops accepting new buy orders for the rest of the session.

Open Positions
All current holdings with quantity, average entry price, unrealized P&L in dollars and percentage. Each row has a trade button for manual intervention, useful during demo mode where auto-trade is disabled but the interface stays fully operational.

Position Concentration Chart
A donut chart visualizing portfolio allocation by position — green segments are profitable, red are losses, sized proportionally by weight. This makes concentration risk immediately visible in a way a list view can't.
The execution feed and signal queue — what the system traded and why.

Trade Execution History
Sourced directly from the Alpaca broker feed: ticker, direction, execution source (AUTO = algorithm-driven), average fill price, notional value, and timestamp. Exports to CSV for external analysis.

Watchlist Signals
The Signal agent evaluates each watched symbol's 20-day momentum score every cycle and emits BUY / HOLD / SELL with the rationale — momentum %, existing P&L, current price. Signals that clear Risk enter the execution queue.
Every order passes through a multi-layer risk filter before reaching the broker. These controls are visible live and configurable without a restart.

Risk & Limits Panel
Live guard-rail status in one place. Circuit Breaker shows OK or TRIGGERED — when triggered, the execution pipeline halts until the operator resets it. Daily Loss Limit and Max Drawdown display active thresholds; breaching either pauses new buys automatically.
Performance metrics derived from an on-disk equity snapshot store, independent of live broker state and queryable across any time window.

Equity Curve & Performance Metrics
The equity curve plots end-of-day portfolio value; the drawdown overlay shows percentage decline from each preceding peak. The summary row shows Total Return, Max Drawdown, Volatility/Sharpe Ratio, and Trade Stats for the selected period.
All strategy and risk parameters are live-updatable through the UI. Changes apply to the running system immediately and persist across restarts via per-universe config files — no code changes, no redeploy.

Configuration Panel
Strategy Preset selects a pre-tuned parameter bundle; Custom allows individual field overrides. Watchlist Mode controls the symbol universe. Below that: buy/sell momentum thresholds, stop loss, position sizing limits, max daily trades, and exposure caps.

Inline Validation
Config fields carry real-time safety indicators. Green checkmark = within safe operating bounds. Amber warning = valid but operationally risky — shown here flagging a Max Position of 50% as concentrated. Validation runs client-side on every keystroke; the server enforces the same rules on save.