All projects
    Algorithmic TradingFeatured

    Market Watch

    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.

    PythonFastAPIWebSocketSQLiteAlpaca APIPandasPytest

    Feature Walkthrough

    What the system does and how it looks doing it — screenshots from a live paper-trading session.

    Live Dashboard

    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 overview

    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

    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 status

    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.

    Account & Positions

    Live portfolio state sourced from the broker API, broken down into cash and position components with a visual concentration view.

    Account summary

    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 list

    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

    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.

    Trading Activity

    The execution feed and signal queue — what the system traded and why.

    Trade execution history

    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

    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.

    Risk Controls

    Every order passes through a multi-layer risk filter before reaching the broker. These controls are visible live and configurable without a restart.

    Risk and limits panel

    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.

    Analytics & Reporting

    Performance metrics derived from an on-disk equity snapshot store, independent of live broker state and queryable across any time window.

    Equity curve and metrics

    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.

    Configuration

    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

    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 config validation

    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.