Skip to content

Architecture Overview

[!WARNING] DISCLAIMER: This architecture is designed for educational and research purposes. Use of this system for live trading is strictly at your own risk. Trading involves significant risk of loss.

System Components

The Trading Bot System consists of several key components:

Core Classes

  • Bot: Base class for all trading bots
  • DataService: Handles market data fetching and caching
  • PortfolioManager: Manages buy/sell operations and rebalancing
  • BotRepository: Database operations for bot state and trades

Database Models

  • Bot: Stores bot configuration and portfolio state
  • Trade: Logs all trade executions
  • HistoricData: Caches market data for performance
  • RunLog: Tracks bot execution history
  • PortfolioWorth: Historical portfolio valuations

Utilities

  • Backtesting: Simulate strategies on historical data
  • Hyperparameter Tuning: Optimize bot parameters
  • Helpers: Timezone handling and data validation
  • Utils Subpackages: Domain-focused utilities grouped under utils.core, utils.data, utils.portfolio, and utils.ai (see utils-layout.md for details)

Data Flow

1. Bot Initialization
   └──> Creates/retrieves bot from database
   └──> Initializes portfolio with {"USD": 10000}
   └──> Sets up DataService and PortfolioManager

2. Bot Execution (run())
   └──> Calls makeOneIteration()
   └──> Fetches data with technical indicators
   └──> Gets trading decision
   └──> Executes buy/sell if needed
   └──> Logs result to database

3. Data Fetching
   └──> Checks database cache first
   └──> Fetches from yfinance if needed
   └──> Saves to database for future reuse
   └──> Applies technical analysis indicators

Key Technologies

  • Python 3.12+ with type hints
  • PostgreSQL via SQLAlchemy ORM
  • yfinance for market data
  • ta library for technical analysis
  • Kubernetes CronJobs for scheduled execution
  • Helm for deployment management

Next Steps