Skip to content

fintools-ai/trade-copilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Stay tuned: Full source code and detailed documentation are on the way! Follow https://x.com/Sayantan317 for updates.

πŸš€ Trade Copilot

Python 3.11+ License: MIT MCP Protocol AWS Bedrock Anthropic Claude

AI-powered trading chat interface with real-time market analysis

Trade Copilot is a trading assistant that combines institutional-grade market analysis with cutting-edge AI. Built on the Model Context Protocol (MCP), it provides real-time order flow analysis, options monitoring, and technical analysis through a clean, professional chat interface.

Tools Arsenel

mindmap
  root((Trade Copilot<br/>))
    Trading Memory
      get_current_bias
      check_consistency
      store_trading_decision
      force_reset
    Technical Analysis
      volume_profile
      technical_analysis
      technical_zones
      orb_analysis
      fvg_analysis
    Order Flow
      equity_order_flow
      pattern_detection
      options_order_flow
      options_monitoring
    Options Intelligence
      open_interest_analysis
      institutional_positioning
      gamma_exposure
Loading

✨ Key Features

🎯 Institutional-Grade Analysis

  • Real-time Order Flow Analysis - Track institutional vs retail sentiment
  • Options Flow Monitoring - Detect sweeps, blocks, and unusual activity
  • Volume Profile Analysis - Identify key support/resistance levels (POC, VAH, VAL)
  • Technical Analysis Suite - ORB, FVG, technical zones, and indicators
  • Parallel Tool Execution - Sub-30 second comprehensive market analysis

πŸ”„ Multi-Provider LLM Support

  • AWS Bedrock - Claude Sonnet 4, Claude 3.5 Sonnet, Claude Haiku
  • Anthropic API - Direct Claude API integration
  • Runtime Switching - Change providers/models without restart
  • Optimized Prompts - Military-precision system prompts for speed and accuracy

⚑ High-Performance Architecture

  • MCP Protocol - Native integration with market data servers
  • Go-based Data Broker - Sub-10ms latency for real-time data
  • Concurrent Processing - Parallel tool execution for maximum speed
  • Professional Interface - Rich terminal UI with formatted responses

πŸ› οΈ Installation

Prerequisites

  • Python 3.11+
  • AWS credentials (for Bedrock)
  • Anthropic API key (for Claude API)
  • Market data API keys

Quick Start

# Clone the repository
git clone https://github.com/your-org/trade-copilot.git
cd trade-copilot

# Install dependencies
pip install -r requirements.txt

# Or for development
pip install -r requirements-dev.txt

# Copy environment file
cp .env.example .env

# Edit configuration
nano config/config.yaml

βš™οΈ Configuration

Multi-Provider Setup

# config/config.yaml
llm_providers:
  bedrock:
    region: "us-east-1"
    models:
      claude_sonnet_4: "bedrock.anthropic.claude-sonnet-4-20250514"
      claude_sonnet_35: "anthropic.claude-3-5-sonnet-20241022-v2:0"
      claude_haiku: "anthropic.claude-3-haiku-20240307-v1:0"
  
  claude_api:
    models:
      claude_sonnet_4: "claude-3-5-sonnet-20250514"
      claude_sonnet_35: "claude-3-5-sonnet-20241022"
      claude_haiku: "claude-3-haiku-20240307"

# Default settings
default_provider: "bedrock"
default_model: "claude_sonnet_4"

MCP Server Configuration

mcp_servers:
  market_data:
    command: "python"
    args: ["-m", "mcp_market_data_server"]
    env:
      TWELVE_DATA_API_KEY: "${TWELVE_DATA_API_KEY}"
  
  order_flow:
    command: "python"
    args: ["-m", "mcp_order_flow_server"]
    env:
      GRPC_BROKER_URL: "localhost:9090"
      
  options_flow:
    command: "python"
    args: ["-m", "mcp_options_order_flow_server"]
    env:
      GRPC_BROKER_URL: "localhost:9090"

πŸš€ Usage

Basic Commands

# Start chat interface
trade-copilot chat

# Use specific provider/model
trade-copilot chat --provider claude_api --model claude_sonnet_4

Interactive Commands

# In chat interface
help                           # Show help
status                        # System status
clear                         # Clear history
switch bedrock claude_sonnet_4 # Switch provider
exit                          # End session

πŸ“Š Sample Trading Queries & Expected Responses

Real-Time Analysis Queries

Basic Order Flow Analysis

Query: "Analyze SPY order flow for the last 10 minutes"

Expected Tools Called:
β”œβ”€ analyze_order_flow_tool(ticker="SPY", minutes=10)
β”œβ”€ financial_volume_profile(ticker="SPY", timeframe="1m") 
└─ financial_technical_analysis(ticker="SPY", timeframes=["1m", "5m"])

Sample Response:
**SIGNAL:** BUY CALLS
**CONVICTION:** 78/100 (3 confirming signals)
**ENTRY:** $472.25
**STOP:** $469.80 (2% risk)
**TARGET:** $477.15 (2:1 R/R)
**TIMEFRAME:** 15 minutes validity
**EVIDENCE:**
- Order flow: 68% institutional buying pressure, large block at 472.00
- Volume profile: POC at 471.95 acting as support, 89% buy volume above POC
- Technical: Clean break above 5min EMA with increasing momentum

Options Flow Analysis

Query: "Show me NVDA options unusual activity and sweeps"

Expected Tools Called:
β”œβ”€ get_options_flow(ticker="NVDA", history_minutes=30)
β”œβ”€ configure_options_monitoring_tool(ticker="NVDA", min_premium=50000)
└─ analyze_order_flow_tool(ticker="NVDA", minutes=15)

Sample Response:
**SIGNAL:** WAIT - Mixed signals
**CONVICTION:** 45/100 (conflicting data)
**ANALYSIS:**
- Options: $2.3M in call sweeps at 520 strike (2x normal), but also 1.2M put volume
- Unusual activity: 400% increase in 525C volume, premium suggesting 3% move expected
- Underlying flow: Retail buying pressure (78%), institutions net selling
**INVALIDATION:** Clear above 522.50 = bullish confirmation

Multi-Timeframe Technical

Query: "Check QQQ opening range breakout and volume profile"

Expected Tools Called:
β”œβ”€ financial_orb_analysis(ticker="QQQ", orb_minutes=30)
β”œβ”€ financial_volume_profile(ticker="QQQ", timeframe="5m")
β”œβ”€ financial_technical_zones(ticker="QQQ")
└─ financial_technical_analysis(ticker="QQQ")

Sample Response:
**SIGNAL:** BUY CALLS
**CONVICTION:** 82/100 (4 confirming signals)
**ENTRY:** $398.75 (ORB high + 0.05)
**STOP:** $396.90 (ORB low - 0.10)
**TARGET:** $402.45 (1.2x ORB range)
**EVIDENCE:**
- ORB: Clean breakout above 30min range (396.95-398.70), volume 2.1x average
- Volume profile: 73% volume above POC (397.85), strong buying interest
- Technical zones: Breaking resistance cluster at 398.60-398.80
- ADX: 28.4 showing strong trend, RSI healthy at 58.7

Advanced Multi-Asset Queries

Sector Rotation Analysis

Query: "Compare tech vs financials order flow - XLK vs XLF"

Expected Tools Called:
β”œβ”€ analyze_order_flow_tool(ticker="XLK", minutes=20)
β”œβ”€ analyze_order_flow_tool(ticker="XLF", minutes=20)  
β”œβ”€ financial_volume_profile(ticker="XLK")
β”œβ”€ financial_volume_profile(ticker="XLF")
└─ sector_comparison_analysis(tickers=["XLK", "XLF"])

Sample Response:
**SECTOR ROTATION DETECTED:**
**XLK (Tech):** 72% institutional selling, volume 1.8x average
**XLF (Financials):** 81% institutional buying, volume 2.3x average
**ROTATION SIGNAL:** Tech β†’ Financials rotation confirmed
**TRADE IDEA:** Long XLF, Short XLK (pairs trade)

πŸ—οΈ System Architecture

Complete Workflow Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                 CLIENT INTERACTION                                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  User Query: "Analyze SPY order flow and options activity"                          β”‚
β”‚                                        β”‚                                            β”‚
β”‚                                        β–Ό                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                              TRADE COPILOT CORE                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                        CHAT INTERFACE (Rich Terminal)                       β”‚   β”‚
β”‚  β”‚  β€’ Input validation and parsing                                             β”‚   β”‚
β”‚  β”‚  β€’ Real-time response streaming                                             β”‚   β”‚
β”‚  β”‚  β€’ Conversation history persistence (SQLite)                               β”‚   β”‚
β”‚  β”‚  β€’ Model switching commands                                                 β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                        β”‚                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      LLM PROVIDER MANAGER                                   β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚   β”‚
β”‚  β”‚  β”‚   AWS Bedrock   β”‚    β”‚   Claude API    β”‚    β”‚  Model Switching    β”‚     β”‚   β”‚
β”‚  β”‚  β”‚   (boto3)       β”‚    β”‚  (anthropic-sdk)β”‚    β”‚   (Runtime)         β”‚     β”‚   β”‚
β”‚  β”‚  β”‚                 β”‚    β”‚                 β”‚    β”‚                     β”‚     β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Claude-3.5    β”‚    β”‚ β€’ Claude-3.5    β”‚    β”‚ β€’ Provider select   β”‚     β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Claude Haiku  β”‚    β”‚ β€’ Claude Haiku  β”‚    β”‚ β€’ Model switching   β”‚     β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Auto-scaling  β”‚    β”‚ β€’ Direct API    β”‚    β”‚ β€’ Config hot-reload β”‚     β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                        β”‚                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                         MCP TOOL MANAGER                                    β”‚   β”‚
β”‚  β”‚  β€’ Tool discovery and registration                                         β”‚   β”‚
β”‚  β”‚  β€’ Parallel tool execution (15+ concurrent)                               β”‚   β”‚
β”‚  β”‚  β€’ Error handling and retry logic                                         β”‚   β”‚
β”‚  β”‚  β€’ Tool result aggregation and formatting                                 β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                        β”‚
                          PARALLEL TOOL EXECUTION
                                        β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                         β–Ό                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    MCP MARKET DATA      β”‚  β”‚   MCP ORDER FLOW        β”‚  β”‚  MCP OPTIONS FLOW       β”‚
β”‚       SERVER            β”‚  β”‚      SERVER             β”‚  β”‚      SERVER             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ TOOLS:                  β”‚  β”‚ TOOLS:                  β”‚  β”‚ TOOLS:                  β”‚
β”‚ β€’ financial_technical_  β”‚  β”‚ β€’ analyze_order_flow_   β”‚  β”‚ β€’ get_options_flow      β”‚
β”‚   analysis              β”‚  β”‚   tool                  β”‚  β”‚ β€’ configure_options_    β”‚
β”‚ β€’ financial_volume_     β”‚  β”‚ β€’ get_level_2_data      β”‚  β”‚   monitoring_tool       β”‚
β”‚   profile               β”‚  β”‚ β€’ get_trade_prints      β”‚  β”‚ β€’ get_unusual_activity  β”‚
β”‚ β€’ financial_technical_  β”‚  β”‚ β€’ detect_patterns       β”‚  β”‚ β€’ analyze_sweep_blocks  β”‚
β”‚   zones                 β”‚  β”‚                         β”‚  β”‚                         β”‚
β”‚ β€’ financial_orb_        β”‚  β”‚ DATA SOURCES:           β”‚  β”‚ DATA SOURCES:           β”‚
β”‚   analysis              β”‚  β”‚ β€’ Real-time quotes      β”‚  β”‚ β€’ Options chains        β”‚
β”‚ β€’ financial_fvg_        β”‚  β”‚ β€’ Level 2 book data     β”‚  β”‚ β€’ Unusual activity      β”‚
β”‚   analysis              β”‚  β”‚ β€’ Trade patterns        β”‚  β”‚ β€’ Greeks calculations   β”‚
β”‚                         β”‚  β”‚ β€’ Volume analysis       β”‚  β”‚ β€’ Flow direction        β”‚
β”‚ DATA SOURCES:           β”‚  β”‚                         β”‚  β”‚                         β”‚
β”‚ β€’ Twelve Data API       β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β€’ Technical indicators  β”‚  β”‚ β”‚    gRPC CLIENT      β”‚ β”‚  β”‚ β”‚    gRPC CLIENT      β”‚ β”‚
β”‚ β€’ Volume calculations   β”‚  β”‚ β”‚   localhost:9090    β”‚ β”‚  β”‚ β”‚   localhost:9090    β”‚ β”‚
β”‚ β€’ Multi-timeframe       β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                        β”‚                         β”‚
                          gRPC CONNECTION (sub-10ms latency)      β”‚
                                        β”‚                         β”‚
                                        β–Ό                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        MCP TRADING DATA BROKER (Go)                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                          CORE SERVICES                                      β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚
β”‚  β”‚  β”‚   Order Flow    β”‚  β”‚  Options Flow   β”‚  β”‚     Market Data Cache       β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   Aggregator    β”‚  β”‚   Processor     β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚ β€’ Real-time price feeds     β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Pattern       β”‚  β”‚ β€’ Sweep/Block   β”‚  β”‚ β€’ Historical OHLCV          β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   detection     β”‚  β”‚   detection     β”‚  β”‚ β€’ Level 2 order book       β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Institutional β”‚  β”‚ β€’ Unusual       β”‚  β”‚ β€’ Trade tape analysis      β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   vs retail     β”‚  β”‚   activity      β”‚  β”‚ β€’ Volume profile cache     β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Volume        β”‚  β”‚ β€’ Greeks        β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   analysis      β”‚  β”‚   calculation   β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                        β”‚                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                      WEBSOCKET CLIENT POOL                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”‚
β”‚  β”‚  β”‚   3P WS         β”‚  β”‚   Market WS     β”‚  β”‚    Health Monitor           β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   Client        β”‚  β”‚   Client        β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚ β€’ Connection monitoring     β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Real-time     β”‚  β”‚ β€’ Level 2 data  β”‚  β”‚ β€’ Auto-reconnection         β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   options data  β”‚  β”‚ β€’ Trade prints  β”‚  β”‚ β€’ Latency tracking          β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Order flow    β”‚  β”‚ β€’ Quote stream  β”‚  β”‚ β€’ Error logging             β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ Auto-retry    β”‚  β”‚ β€’ Volume feeds  β”‚  β”‚ β€’ Performance metrics       β”‚  β”‚   β”‚
β”‚  β”‚  β”‚ β€’ 60s timeout   β”‚  β”‚                 β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β”‚   monitoring    β”‚  β”‚                 β”‚  β”‚                             β”‚  β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                        β”‚
                           EXTERNAL DATA INGESTION
                                        β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                         β–Ό                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      3P API             β”‚  β”‚    TWELVE DATA API      β”‚  β”‚   POLYGON/OTHER APIs    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β€’ Real-time options     β”‚  β”‚ β€’ Stock market data     β”‚  β”‚ β€’ Alternative feeds     β”‚
β”‚ β€’ Order flow data       β”‚  β”‚ β€’ Technical indicators  β”‚  β”‚ β€’ News sentiment        β”‚
β”‚ β€’ Institutional trades  β”‚  β”‚ β€’ Historical OHLCV      β”‚  β”‚ β€’ Economic data         β”‚
β”‚ β€’ Unusual activity      β”‚  β”‚ β€’ Volume data           β”‚  β”‚ β€’ Social sentiment      β”‚
β”‚ β€’ WebSocket streams     β”‚  β”‚ β€’ Fundamental data      β”‚  β”‚                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Configuration Management

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                             CONFIGURATION SYSTEM                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                    /etc/config/TradingInsightsAgentConfig.json               β”‚   β”‚
β”‚  β”‚  {                                                                          β”‚   β”‚
β”‚  β”‚    "ANTHROPIC_API_KEY": "sk-ant-...",                                      β”‚   β”‚
β”‚  β”‚    "CLAUDE_API_KEY": "sk-ant-...",                                         β”‚   β”‚
β”‚  β”‚    "3P   _API_KEY": "3p_key_...",                                          β”‚   β”‚
β”‚  β”‚    "TWELVE_DATA_API_KEY": "td_key_...",                                    β”‚   β”‚
β”‚  β”‚    "AWS_ACCESS_KEY_ID": "AKIA...",                                         β”‚   β”‚
β”‚  β”‚    "AWS_SECRET_ACCESS_KEY": "...",                                         β”‚   β”‚
β”‚  β”‚    "GRPC_BROKER_URL": "localhost:9090"                                     β”‚   β”‚
β”‚  β”‚  }                                                                          β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                        β”‚                                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                        config/config.yaml                                   β”‚   β”‚
β”‚  β”‚  llm_providers:                                                             β”‚   β”‚
β”‚  β”‚    bedrock:                                                                 β”‚   β”‚
β”‚  β”‚      region: "us-east-1"                                                   β”‚   β”‚
β”‚  β”‚      models:                                                                β”‚   β”‚
β”‚  β”‚        claude_sonnet_4: "bedrock.anthropic.claude-sonnet-4-20250514"      β”‚   β”‚
β”‚  β”‚    claude_api:                                                              β”‚   β”‚
β”‚  β”‚      models:                                                                β”‚   β”‚
β”‚  β”‚        claude_sonnet_4: "claude-3-5-sonnet-20250514"                      β”‚   β”‚
β”‚  β”‚                                                                             β”‚   β”‚
β”‚  β”‚  mcp_servers:                                                               β”‚   β”‚
β”‚  β”‚    market_data: "python -m mcp_market_data_server"                        β”‚   β”‚
β”‚  β”‚    order_flow: "python -m mcp_order_flow_server"                          β”‚   β”‚
β”‚  β”‚    options_flow: "python -m mcp_options_order_flow_server"                β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow & Execution Pipeline

USER QUERY β†’ INPUT VALIDATION β†’ LLM ANALYSIS β†’ TOOL EXECUTION β†’ RESPONSE GENERATION
     β”‚              β”‚                β”‚              β”‚                    β”‚
     β–Ό              β–Ό                β–Ό              β–Ό                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ "SPY    β”‚  β”‚ Parse &     β”‚  β”‚ Claude      β”‚  β”‚ Parallel    β”‚  β”‚ Aggregate   β”‚
β”‚ options β”‚  β”‚ validate    β”‚  β”‚ decides     β”‚  β”‚ MCP tool    β”‚  β”‚ results &   β”‚
β”‚ flow"   β”‚  β”‚ ticker,     β”‚  β”‚ which tools β”‚  β”‚ execution:  β”‚  β”‚ format for  β”‚
β”‚         β”‚  β”‚ timeframe   β”‚  β”‚ to call     β”‚  β”‚ β€’ Options   β”‚  β”‚ trading     β”‚
β”‚         β”‚  β”‚ params      β”‚  β”‚ based on    β”‚  β”‚ β€’ Order     β”‚  β”‚ decision    β”‚
β”‚         β”‚  β”‚             β”‚  β”‚ context     β”‚  β”‚ β€’ Volume    β”‚  β”‚             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                      β”‚
                                         CONCURRENT EXECUTION
                                              (Sub-30s total)

Example Query Workflow

User Input: "Analyze SPY order flow and options activity"

Step 1: Query Processing (50ms)

  • Input validation and ticker extraction
  • Context analysis for tool selection
  • Historical conversation context loading

Step 2: LLM Tool Selection (200ms)

  • Claude analyzes query requirements
  • Selects 3-5 relevant tools based on system prompt
  • Plans parallel execution strategy

Step 3: Parallel Tool Execution (1-2s)

TOOL 1: analyze_order_flow_tool(ticker="SPY", minutes=10)
     β”œβ”€ gRPC call to data broker
     β”œβ”€ Real-time order flow aggregation  
     └─ Pattern detection & sentiment analysis

TOOL 2: get_options_flow(ticker="SPY", history_minutes=20)
     β”œβ”€ Options chain analysis
     β”œβ”€ Unusual activity detection
     └─ Sweep/block identification

TOOL 3: financial_volume_profile(ticker="SPY", timeframe="5m")
     β”œβ”€ Twelve Data API call
     β”œβ”€ Volume profile calculation
     └─ POC/VAH/VAL identification

TOOL 4: financial_technical_analysis(ticker="SPY")
     β”œβ”€ Multi-timeframe indicator analysis
     β”œβ”€ Trend strength assessment
     └─ Support/resistance levels

About

Trade Copilot is a trading assistant that combines market analysis with AI. Built on the Model Context Protocol (MCP), it provides real-time order flow analysis, options monitoring, and technical analysis through a clean, chat interface.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages