Skip to content

JasonTeixeira/QuantumTrader

Repository files navigation

QuantumTrader

An algorithmic trading system I built to explore momentum and mean-reversion strategies. Event-driven architecture with backtesting engine, risk management, and real-time execution.

┌─────────────────────────────────────────────────────────────────┐
│  WHAT THIS IS                                                   │
├─────────────────────────────────────────────────────────────────┤
│  Trading Engine           Event-driven, strategy-agnostic       │
│  Backtesting              Transaction costs, slippage modeling  │
│  Risk Management          Position sizing, stop losses          │
│  Execution Engine         Order routing, fill simulation        │
│  Data Pipeline            Multi-source market data              │
│  11,000+ Lines Python     Real implementation, not a demo       │
└─────────────────────────────────────────────────────────────────┘

Why I Built This

Wanted to understand how algorithmic trading systems actually work—not just backtesting but real execution logic, risk management, and event handling. Built to answer: can I create a system that doesn't blow up an account?

Focus areas:

  • Event-driven architecture (no lookahead bias)
  • Proper backtesting (transaction costs, slippage)
  • Risk management (position sizing, stop losses)
  • Strategy isolation (easy to add new strategies)

Used Python because the quant libraries are Python-native. Event-driven because it's the only honest way to backtest. PostgreSQL for trade history, Redis for caching.

Quick Start

git clone https://github.com/JasonTeixeira/QuantumTrader.git
cd QuantumTrader

python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

pip install -r requirements-base.txt

# Start infrastructure (PostgreSQL, Redis)
docker-compose up -d

# Initialize database
python scripts/init_databases.py

# Run backtest
python -m QuantumTrader.src.cli.quantum_cli backtest \
  --strategy momentum \
  --start 2023-01-01 \
  --end 2024-01-01

Architecture

Event-driven system with clean separation:

   Market Data Sources
        │
        v
   Data Pipeline              Load, validate, normalize
   ├── Polygon API
   ├── Alpaca API
   └── Yahoo Finance
        │
        v
   Event Queue                Event-driven processing
   ├── Market data events
   ├── Signal events
   ├── Order events
   └── Fill events
        │
        v
   Strategy Engine            Generate signals
   ├── Momentum strategy
   └── Mean reversion
        │
        v
   Risk Manager               Position sizing, limits
        │
        v
   Execution Engine           Order routing, fills
        │
        v
   Database (PostgreSQL)      Trade history, analytics

Project Structure

QuantumTrader/
├── src/
│   ├── engine/
│   │   └── base_strategy.py     # Base strategy class
│   ├── strategies/
│   │   ├── momentum.py          # Momentum strategy
│   │   └── mean_reversion.py    # Mean reversion
│   ├── backtesting/
│   │   └── engine.py            # Backtest engine
│   ├── execution/
│   │   └── engine.py            # Order execution
│   ├── risk/
│   │   └── risk_manager.py      # Risk management
│   ├── data/
│   │   ├── connectors.py        # Data source connectors
│   │   └── models.py            # Data models
│   ├── events/
│   │   └── event_system.py      # Event queue
│   ├── database/
│   │   └── db_manager.py        # Database operations
│   ├── analytics/
│   │   └── performance.py       # Performance metrics
│   ├── api/
│   │   └── main.py              # FastAPI server
│   └── cli/
│       └── quantum_cli.py       # CLI interface
├── tests/
│   └── test_strategies.py       # Strategy tests
├── docker-compose.yml           # Infrastructure
└── requirements-base.txt        # Dependencies

Strategies

Momentum Strategy

Simple momentum: buy when price crosses above 20-day SMA, sell when crosses below.

from QuantumTrader.src.strategies.momentum import MomentumStrategy

strategy = MomentumStrategy(
    lookback_period=20,
    threshold=2.0  # Standard deviations
)

Mean Reversion Strategy

Bollinger Bands mean reversion: buy oversold, sell overbought.

from QuantumTrader.src.strategies.mean_reversion import MeanReversionStrategy

strategy = MeanReversionStrategy(
    window=20,
    num_std=2.0
)

Backtesting

Backtest engine includes:

  • Transaction costs (0.1% per trade)
  • Slippage modeling
  • Position sizing
  • Stop losses
  • Portfolio-level risk limits
from QuantumTrader.src.backtesting.engine import BacktestEngine
from QuantumTrader.src.strategies.momentum import MomentumStrategy

# Initialize backtest
backtest = BacktestEngine(
    initial_capital=100000,
    commission=0.001,  # 0.1%
    slippage=0.0005    # 0.05%
)

# Add strategy
strategy = MomentumStrategy(lookback_period=20)
backtest.add_strategy(strategy)

# Run backtest
results = backtest.run(
    symbols=['AAPL', 'GOOGL', 'MSFT'],
    start_date='2023-01-01',
    end_date='2024-01-01'
)

print(results.summary())

Risk Management

Position sizing based on portfolio risk:

  • Max 10% per position
  • Max 50% total exposure
  • Stop loss at 2% per position
  • Portfolio stop at 10% drawdown
from QuantumTrader.src.risk.risk_manager import RiskManager

risk_mgr = RiskManager(
    max_position_size=0.10,  # 10% per position
    max_exposure=0.50,        # 50% total
    stop_loss_pct=0.02,       # 2% stop loss
    portfolio_stop=0.10       # 10% portfolio stop
)

What Was Hard

  • Event-driven complexity: Getting event ordering right is tricky. Signal → Order → Fill with proper timestamps.
  • Backtesting honesty: Easy to leak lookahead bias. Had to be strict about using only past data.
  • Transaction costs: Theoretical Sharpe of 2.5 dropped to 1.8 after costs. Optimization needed.
  • Data quality: Bad ticks, missing data, corporate actions. Validation layer was critical.
  • Risk management: Position sizing math is harder than it looks. Got it wrong twice before getting it right.

Testing

# Unit tests
pytest tests/ -v

# With coverage
pytest tests/ --cov=QuantumTrader.src --cov-report=html

# Specific test
pytest tests/test_strategies.py -k test_momentum

Tech Stack

┌─────────────────────────────────────────────────────────────────┐
│  Component           Technology                                 │
├─────────────────────────────────────────────────────────────────┤
│  Language            Python 3.10+                               │
│  Data Processing     Pandas, NumPy                             │
│  Database            PostgreSQL (trade history)                │
│  Caching             Redis (market data)                       │
│  API                 FastAPI (monitoring, control)             │
│  Testing             Pytest                                    │
│  Deployment          Docker + docker-compose                   │
└─────────────────────────────────────────────────────────────────┘

API

FastAPI server for monitoring and control:

# Start API server
python -m QuantumTrader.src.api.main

# Endpoints
GET  /status                  # System status
GET  /positions               # Current positions
GET  /performance             # Performance metrics
POST /strategy/start          # Start strategy
POST /strategy/stop           # Stop strategy

Deployment

# Docker
docker-compose up -d

# Manual
python -m QuantumTrader.src.cli.quantum_cli run \
  --strategy momentum \
  --symbols AAPL,GOOGL,MSFT \
  --mode live

What I'd Do Differently

  • More data sources: Only 3 sources. Would add more for redundancy.
  • Better order routing: Simple fill simulation. Would add realistic slippage models.
  • Machine learning: Strategies are rule-based. Would experiment with ML signal generation.
  • Multi-timeframe: Daily only. Would add intraday strategies.
  • Production monitoring: Basic logging. Would add Prometheus/Grafana.

Roadmap

  • Machine learning strategies (RF, XGBoost)
  • Intraday trading (1min, 5min bars)
  • Options strategies
  • Portfolio optimization
  • Production monitoring (Prometheus, Grafana)
  • Cloud deployment (AWS, GCP)

License

MIT

Note on Other Projects

This repo originally planned 6 sub-projects (RiskLab, AlphaForge, etc.). Currently only QuantumTrader is implemented. The others are placeholders for future work.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors