# 🏗️ Stock Bot Trading System - Architecture Documentation ## 📋 Table of Contents - [System Overview](#system-overview) - [Current Architecture](#current-architecture) - [Service Breakdown](#service-breakdown) - [Data Flow](#data-flow) - [Technology Stack](#technology-stack) - [Future Architecture](#future-architecture) - [Improvement Recommendations](#improvement-recommendations) - [Deployment Architecture](#deployment-architecture) - [Security Architecture](#security-architecture) - [Monitoring & Observability](#monitoring--observability) --- ## 🎯 System Overview The Stock Bot Trading System is a **microservice-based**, **event-driven** trading platform built for **real-time market analysis**, **strategy execution**, and **risk management**. The system follows a **service-oriented architecture (SOA)** with **clear separation of concerns** and **horizontal scalability**. ### Core Principles - **Microservices Architecture**: Independent, deployable services - **Event-Driven Communication**: WebSocket and Redis pub/sub - **Real-Time Processing**: Sub-second latency requirements - **Scalable Design**: Horizontal scaling capabilities - **Fault Tolerance**: Circuit breakers and graceful degradation - **Type Safety**: Full TypeScript implementation --- ## 🏗️ Current Architecture ```mermaid graph TB subgraph "Frontend Layer" UI[Angular Trading Dashboard] end subgraph "API Gateway Layer" GW[API Gateway - Future] end subgraph "Core Services" MDG[Market Data Gateway
Port 3001] RG[Risk Guardian
Port 3002] SO[Strategy Orchestrator
Port 4001] end subgraph "Data Layer" Redis[(Redis Cache)] PG[(PostgreSQL)] QDB[(QuestDB)] Mongo[(MongoDB)] end subgraph "External APIs" Alpha[Alpha Vantage] IEX[IEX Cloud] Yahoo[Yahoo Finance] end UI -->|WebSocket/HTTP| MDG UI -->|WebSocket/HTTP| RG UI -->|WebSocket/HTTP| SO MDG --> Redis MDG --> QDB MDG -->|Fetch Data| Alpha MDG -->|Fetch Data| IEX MDG -->|Fetch Data| Yahoo RG --> Redis RG --> PG SO --> Redis SO --> PG SO --> Mongo ``` --- ## 🔧 Service Breakdown ### **1. Interface Services** #### **Trading Dashboard** (`apps/interface-services/trading-dashboard`) - **Framework**: Angular 20 + Angular Material + Tailwind CSS - **Port**: 4200 (development) - **Purpose**: Real-time trading interface and strategy management - **Key Features**: - Real-time market data visualization - Strategy creation and backtesting UI - Risk management dashboard - Portfolio monitoring - WebSocket integration for live updates **Current Structure:** ``` trading-dashboard/ ├── src/ │ ├── app/ │ │ ├── components/ # Reusable UI components │ │ │ ├── sidebar/ # Navigation sidebar │ │ │ └── notifications/ # Alert system │ │ ├── pages/ # Route-based pages │ │ │ ├── dashboard/ # Main trading dashboard │ │ │ ├── market-data/ # Market data visualization │ │ │ ├── portfolio/ # Portfolio management │ │ │ ├── strategies/ # Strategy management │ │ │ └── risk-management/ # Risk controls │ │ ├── services/ # Angular services │ │ │ ├── api.service.ts # HTTP API communication │ │ │ ├── websocket.service.ts # WebSocket management │ │ │ └── strategy.service.ts # Strategy operations │ │ └── shared/ # Shared utilities │ └── styles.css # Global styles ``` ### **2. Core Services** #### **Market Data Gateway** (`apps/core-services/market-data-gateway`) - **Framework**: Hono + Bun - **Port**: 3001 - **Purpose**: Market data aggregation and real-time distribution - **Database**: QuestDB (time-series), Redis (caching) **Responsibilities:** - Aggregate data from multiple market data providers - Real-time WebSocket streaming to clients - Historical data storage and retrieval - Rate limiting and API management - Data normalization and validation **API Endpoints:** ``` GET /health # Health check GET /api/market-data/:symbol # Get latest market data GET /api/historical/:symbol # Get historical data WS /ws # WebSocket for real-time data ``` #### **Risk Guardian** (`apps/core-services/risk-guardian`) - **Framework**: Hono + Bun - **Port**: 3002 - **Purpose**: Real-time risk monitoring and controls - **Database**: PostgreSQL (persistent), Redis (real-time) **Responsibilities:** - Position size monitoring - Daily loss tracking - Portfolio risk assessment - Volatility monitoring - Real-time risk alerts - Risk threshold management **API Endpoints:** ``` GET /health # Health check GET /api/risk/thresholds # Get risk thresholds PUT /api/risk/thresholds # Update risk thresholds POST /api/risk/evaluate # Evaluate position risk GET /api/risk/history # Risk evaluation history WS /ws # WebSocket for risk alerts ``` #### **Strategy Orchestrator** (`apps/intelligence-services/strategy-orchestrator`) - **Framework**: Hono + Bun - **Port**: 4001 - **Purpose**: Strategy lifecycle management and execution - **Database**: MongoDB (strategies), PostgreSQL (trades), Redis (signals) **Responsibilities:** - Strategy creation and management - Backtesting engine (vectorized & event-based) - Real-time strategy execution - Signal generation and broadcasting - Performance analytics - Strategy optimization **Current Structure:** ``` strategy-orchestrator/ ├── src/ │ ├── core/ │ │ ├── backtesting/ │ │ │ ├── BacktestEngine.ts # Main backtesting engine │ │ │ ├── BacktestService.ts # Backtesting service layer │ │ │ ├── MarketDataFeed.ts # Historical data provider │ │ │ └── PerformanceAnalytics.ts # Performance metrics │ │ ├── execution/ │ │ │ └── StrategyExecutionService.ts # Real-time execution │ │ ├── strategies/ │ │ │ ├── Strategy.ts # Base strategy interface │ │ │ ├── StrategyRegistry.ts # Strategy management │ │ │ ├── BaseStrategy.ts # Abstract base class │ │ │ ├── VectorizedStrategy.ts # Vectorized base class │ │ │ ├── MovingAverageCrossover.ts # MA strategy │ │ │ └── MeanReversionStrategy.ts # Mean reversion │ │ └── indicators/ │ │ └── TechnicalIndicators.ts # Technical analysis │ ├── controllers/ │ │ └── StrategyController.ts # API endpoints │ └── index.ts # Main entry point ``` **API Endpoints:** ``` GET /health # Health check GET /api/strategies # List strategies POST /api/strategies # Create strategy PUT /api/strategies/:id # Update strategy POST /api/strategies/:id/:action # Start/stop/pause strategy GET /api/strategies/:id/signals # Get strategy signals POST /api/strategies/:id/backtest # Run backtest GET /api/strategies/:id/performance # Get performance metrics WS /ws # WebSocket for strategy updates ``` ### **3. Shared Packages** #### **Shared Types** (`packages/shared-types`) ```typescript export interface MarketData { symbol: string; price: number; volume: number; timestamp: Date; bid: number; ask: number; } export interface Strategy { id: string; name: string; symbols: string[]; parameters: Record; status: 'ACTIVE' | 'PAUSED' | 'STOPPED'; } export interface BacktestResult { totalReturn: number; sharpeRatio: number; maxDrawdown: number; winRate: number; totalTrades: number; } ``` #### **Configuration** (`packages/config`) ```typescript export const config = { redis: { host: process.env.REDIS_HOST || 'localhost', port: parseInt(process.env.REDIS_PORT || '6379') }, database: { postgres: process.env.POSTGRES_URL, questdb: process.env.QUESTDB_URL, mongodb: process.env.MONGODB_URL }, marketData: { alphaVantageKey: process.env.ALPHA_VANTAGE_KEY, iexKey: process.env.IEX_KEY } }; ``` --- ## 🔄 Data Flow ### **Real-Time Market Data Flow** ```mermaid sequenceDiagram participant EXT as External APIs participant MDG as Market Data Gateway participant Redis as Redis Cache participant QDB as QuestDB participant UI as Trading Dashboard EXT->>MDG: Market data feed MDG->>Redis: Cache latest prices MDG->>QDB: Store historical data MDG->>UI: WebSocket broadcast UI->>UI: Update charts/tables ``` ### **Strategy Execution Flow** ```mermaid sequenceDiagram participant UI as Trading Dashboard participant SO as Strategy Orchestrator participant MDG as Market Data Gateway participant RG as Risk Guardian participant Redis as Redis UI->>SO: Start strategy SO->>MDG: Subscribe to market data MDG->>SO: Real-time price updates SO->>SO: Generate trading signals SO->>RG: Risk evaluation RG->>SO: Risk approval/rejection SO->>Redis: Store signals SO->>UI: WebSocket signal broadcast ``` --- ## 💻 Technology Stack ### **Backend** - **Runtime**: Bun (ultra-fast JavaScript runtime) - **Web Framework**: Hono (lightweight, fast web framework) - **Language**: TypeScript (type safety) - **Build Tool**: Turbo (monorepo management) ### **Frontend** - **Framework**: Angular 20 (latest stable) - **UI Library**: Angular Material + Tailwind CSS - **State Management**: Angular Signals (reactive programming) - **WebSocket**: Native WebSocket API ### **Databases** - **Time-Series**: QuestDB (market data storage) - **Relational**: PostgreSQL (structured data) - **Document**: MongoDB (strategy configurations) - **Cache/Pub-Sub**: Redis (real-time data) ### **Infrastructure** - **Containerization**: Docker + Docker Compose - **Process Management**: PM2 (production) - **Monitoring**: Built-in health checks - **Development**: Hot reload, TypeScript compilation --- ## 🚀 Future Architecture ### **Phase 1: Enhanced Microservices (Q2 2025)** ```mermaid graph TB subgraph "API Gateway Layer" GW[Kong/Envoy API Gateway] LB[Load Balancer] end subgraph "Authentication" AUTH[Auth Service
JWT + OAuth] end subgraph "Core Services" MDG[Market Data Gateway] RG[Risk Guardian] SO[Strategy Orchestrator] OE[Order Execution Engine] NS[Notification Service] end subgraph "Analytics Services" BA[Backtest Analytics] PA[Performance Analytics] ML[ML Prediction Service] end subgraph "Message Queue" NATS[NATS/Apache Kafka] end ``` ### **Phase 2: Machine Learning Integration (Q3 2025)** - **ML Pipeline**: Python-based ML services - **Feature Engineering**: Real-time feature computation - **Model Training**: Automated model retraining - **Prediction API**: Real-time predictions ### **Phase 3: Multi-Asset Support (Q4 2025)** - **Crypto Trading**: Binance, Coinbase integration - **Forex Trading**: OANDA, FXCM integration - **Options Trading**: Interactive Brokers integration - **Futures Trading**: CME, ICE integration --- ## 📈 Improvement Recommendations ### **1. High Priority Improvements** #### **API Gateway Implementation** ```typescript // Implement Kong or Envoy for: - Rate limiting per service - Authentication/authorization - Request/response transformation - Circuit breaker patterns - Load balancing ``` #### **Enhanced Error Handling** ```typescript // Implement structured error handling: interface ServiceError { code: string; message: string; service: string; timestamp: Date; correlationId: string; } ``` #### **Comprehensive Logging** ```typescript // Implement structured logging: interface LogEntry { level: 'debug' | 'info' | 'warn' | 'error'; service: string; message: string; metadata: Record; timestamp: Date; correlationId: string; } ``` ### **2. Medium Priority Improvements** #### **Database Optimization** ```sql -- QuestDB optimizations for market data: CREATE TABLE market_data ( symbol SYMBOL, timestamp TIMESTAMP, price DOUBLE, volume DOUBLE, bid DOUBLE, ask DOUBLE ) timestamp(timestamp) PARTITION BY DAY; -- Add indexes for fast queries: CREATE INDEX idx_symbol_timestamp ON market_data (symbol, timestamp); ``` #### **Caching Strategy** ```typescript // Implement multi-layer caching: interface CacheStrategy { L1: Map; // In-memory cache L2: Redis; // Distributed cache L3: Database; // Persistent storage } ``` #### **WebSocket Optimization** ```typescript // Implement WebSocket connection pooling: interface WSConnectionPool { connections: Map; balancer: RoundRobinBalancer; heartbeat: HeartbeatManager; } ``` ### **3. Low Priority Improvements** #### **Code Quality** - Implement comprehensive unit tests (>90% coverage) - Add integration tests for all services - Implement E2E tests for critical user flows - Add performance benchmarks #### **Documentation** - API documentation with OpenAPI/Swagger - Developer onboarding guide - Deployment runbooks - Architecture decision records (ADRs) --- ## 🏗️ Deployment Architecture ### **Development Environment** ```yaml # docker-compose.dev.yml version: '3.8' services: # Databases postgres: image: postgres:15 ports: ["5432:5432"] redis: image: redis:7-alpine ports: ["6379:6379"] questdb: image: questdb/questdb:latest ports: ["9000:9000", "8812:8812"] mongodb: image: mongo:6 ports: ["27017:27017"] # Services market-data-gateway: build: ./apps/core-services/market-data-gateway ports: ["3001:3001"] depends_on: [redis, questdb] risk-guardian: build: ./apps/core-services/risk-guardian ports: ["3002:3002"] depends_on: [postgres, redis] strategy-orchestrator: build: ./apps/intelligence-services/strategy-orchestrator ports: ["4001:4001"] depends_on: [mongodb, postgres, redis] trading-dashboard: build: ./apps/interface-services/trading-dashboard ports: ["4200:4200"] ``` ### **Production Environment** ```yaml # kubernetes deployment example apiVersion: apps/v1 kind: Deployment metadata: name: market-data-gateway spec: replicas: 3 selector: matchLabels: app: market-data-gateway template: metadata: labels: app: market-data-gateway spec: containers: - name: market-data-gateway image: stockbot/market-data-gateway:latest ports: - containerPort: 3001 resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "512Mi" cpu: "500m" ``` --- ## 🔒 Security Architecture ### **Authentication & Authorization** ```typescript // JWT-based authentication interface AuthToken { userId: string; roles: string[]; permissions: string[]; expiresAt: Date; } // Role-based access control enum UserRole { TRADER = 'TRADER', ADMIN = 'ADMIN', VIEWER = 'VIEWER' } enum Permission { READ_MARKET_DATA = 'READ_MARKET_DATA', EXECUTE_TRADES = 'EXECUTE_TRADES', MANAGE_STRATEGIES = 'MANAGE_STRATEGIES', CONFIGURE_RISK = 'CONFIGURE_RISK' } ``` ### **API Security** ```typescript // Rate limiting configuration interface RateLimit { windowMs: number; // 15 minutes maxRequests: number; // 100 requests per window skipIf: (req: Request) => boolean; } // Input validation interface ApiValidation { schema: JSONSchema; sanitization: SanitizationRules; authentication: AuthenticationMiddleware; } ``` ### **Data Security** - **Encryption at Rest**: AES-256 for sensitive data - **Encryption in Transit**: TLS 1.3 for all communications - **Secrets Management**: Kubernetes secrets or HashiCorp Vault - **Network Security**: VPC, security groups, firewalls --- ## 📊 Monitoring & Observability ### **Metrics Collection** ```typescript interface ServiceMetrics { // Performance metrics requestLatency: Histogram; requestRate: Counter; errorRate: Counter; // Business metrics tradesExecuted: Counter; strategiesActive: Gauge; portfolioValue: Gauge; // System metrics memoryUsage: Gauge; cpuUsage: Gauge; dbConnections: Gauge; } ``` ### **Health Checks** ```typescript interface HealthCheck { service: string; status: 'healthy' | 'degraded' | 'unhealthy'; checks: { database: boolean; redis: boolean; externalApis: boolean; webSocket: boolean; }; uptime: number; version: string; } ``` ### **Alerting Rules** ```yaml # Prometheus alerting rules groups: - name: stockbot rules: - alert: HighErrorRate expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1 for: 2m - alert: HighLatency expr: http_request_duration_seconds{quantile="0.95"} > 1 for: 2m - alert: ServiceDown expr: up{job="stockbot"} == 0 for: 30s ``` --- ## 📋 Migration Plan ### **Phase 1: Current → Enhanced (1-2 months)** 1. **Week 1-2**: Implement API Gateway and authentication 2. **Week 3-4**: Add comprehensive logging and monitoring 3. **Week 5-6**: Enhance error handling and resilience 4. **Week 7-8**: Performance optimization and testing ### **Phase 2: Enhanced → ML-Ready (2-3 months)** 1. **Month 1**: Implement ML pipeline infrastructure 2. **Month 2**: Develop feature engineering services 3. **Month 3**: Integrate ML predictions into strategies ### **Phase 3: ML-Ready → Multi-Asset (3-4 months)** 1. **Month 1**: Abstract market data interfaces 2. **Month 2**: Implement crypto trading support 3. **Month 3**: Add forex and options trading 4. **Month 4**: Performance optimization and testing --- ## 🎯 Success Metrics ### **Technical KPIs** - **Latency**: < 100ms for market data updates - **Throughput**: > 10,000 requests/second - **Availability**: 99.9% uptime - **Error Rate**: < 0.1% of requests ### **Business KPIs** - **Strategy Performance**: Sharpe ratio > 1.5 - **Risk Management**: Max drawdown < 5% - **Execution Quality**: Slippage < 0.01% - **System Adoption**: > 90% user satisfaction --- This architecture document serves as a living blueprint for the Stock Bot Trading System, providing clear guidance for current development and future scaling decisions.