stock-bot/.serena/memories/project_overview.md
2025-06-22 17:55:51 -04:00

2 KiB

Stock Bot Trading Platform

Project Purpose

This is an advanced trading bot platform with a microservice architecture designed for automated stock trading. The system includes:

  • Market data ingestion from multiple providers (Yahoo Finance, QuoteMedia, Interactive Brokers, WebShare)
  • Data processing and technical indicator calculation
  • Trading strategy development and backtesting
  • Order execution and risk management
  • Portfolio tracking and performance analytics
  • Web dashboard for monitoring

Architecture Overview

The project follows a microservices architecture with shared libraries:

Core Services (apps/)

  • data-ingestion: Ingests market data from multiple providers
  • data-pipeline: Processes and transforms data
  • web-api: REST API service
  • web-app: React-based dashboard

Shared Libraries (libs/)

Core Libraries:

  • config: Environment configuration with Zod validation
  • logger: Structured logging with Loki integration
  • di: Dependency injection container
  • types: Shared TypeScript types
  • handlers: Common handler patterns

Data Libraries:

  • postgres: PostgreSQL client for transactional data
  • questdb: Time-series database for market data
  • mongodb: Document storage for configurations

Service Libraries:

  • queue: BullMQ-based job processing
  • event-bus: Dragonfly/Redis event bus
  • shutdown: Graceful shutdown management

Utils:

  • Financial calculations and technical indicators
  • Date utilities
  • Position sizing calculations

Database Strategy

  • PostgreSQL: Transactional data (orders, positions, strategies)
  • QuestDB: Time-series data (OHLCV, indicators, performance metrics)
  • MongoDB: Document storage (configurations, raw API responses)
  • Dragonfly/Redis: Event bus and caching layer

Current Development Phase

Phase 1: Data Foundation Layer (In Progress)

  • Enhancing data provider reliability
  • Implementing data validation
  • Optimizing time-series storage
  • Building robust HTTP client with circuit breakers