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¶
- Strategies register with the engine via
register_strategy() - SignalGenerator aggregates signals from all active strategies
- RiskManager validates each signal against portfolio risk limits
- PositionSizer calculates trade quantity based on account risk tolerance
- 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