Skip to content

Spark Trading Engine

Overview

Spark's trading engine implements a full day-trading pipeline: strategy evaluation, signal generation, risk gating, position sizing, and multi-broker order execution. It supports Alpaca Markets as the primary broker and Interactive Brokers as secondary.

Pipeline

Strategy -> Signal Generation -> Risk Gate -> Position Sizing -> Order Execution
  1. Strategies register with the engine via register_strategy()
  2. SignalGenerator aggregates signals from all active strategies
  3. RiskManager validates each signal against portfolio risk limits
  4. PositionSizer calculates trade quantity based on account risk tolerance
  5. Broker executes the order via the appropriate adapter

Strategy Framework

Strategies extend BaseStrategy (ABC) and implement: - name / description -- Strategy identity - analyze(symbol, market_data) -- Returns a TradeSignal - get_required_bars() -- Historical data requirement

Current strategies: SMA Crossover (configurable periods).

Key Code Paths

File Purpose
src/trading/engine.py Core trading engine orchestrator
src/trading/signal_generator.py Signal aggregation from strategies
src/trading/risk_manager.py Risk gate for trade signals
src/trading/position_sizer.py Position size calculator
src/trading/strategies/base.py BaseStrategy ABC
src/trading/strategies/sma_crossover.py SMA crossover strategy
src/brokers/alpaca_broker.py Alpaca Markets adapter
src/brokers/ib_broker.py Interactive Brokers adapter
src/services/trade_execution_service.py Trade execution service
src/services/market_data_service.py Market data fetching
src/services/portfolio_service.py Portfolio tracking

Slack Commands

  • /spark status -- Account summary + positions + daily P&L
  • /spark portfolio -- Full portfolio with performance
  • /spark positions -- Current open positions
  • /spark risk -- Risk metrics and drawdown