How sjain7117/quant-backtest-engine works
This repository is a quantitative strategy research project built around an event-driven backtesting engine. Its main workflow loads adjusted prices, lets pairs or momentum strategies produce signals using cursor-limited history, executes orders on the next bar with modeled costs, accounts for fills and equity, then reports performance. Separate research branches screen cointegration and sizing, and explore market regimes with feature construction, detectors, and a strategy overlay. Engine wiring and regime components not directly excerpted are represented only where the README or source index supports their relationships.
Main entry points: backtest.py Event Loop · events.py Event Messages · loader.py Price Loader · features.py Regime Features
Components 22
Market Data
- Price Loader
data/loader.py
Backtest Engine
- Pair Data Handler
engine/data_handler.py - Multi-Asset Handler
engine/data_handler.py - Event Messages
engine/events.py - Event Loop
engine/backtest.py - Strategy Interface
engine/strategy.py - Simulated Execution
engine/execution.py - Portfolio Accounting
engine/portfolio.py
Trading Strategies
- Pairs Strategy
strategies/pairs_trading.py - Momentum Strategy
strategies/momentum.py - Baseline Strategies
strategies
Quant Research
- Pair Screening
analysis/cointegration.py - Kelly Sizing
analysis/kelly.py - Performance Metrics
analysis/performance.py
Regime Analysis
- Regime Features
regime/features.py - HMM Detector
regime/detector_hmm.py - Online Detector
regime/detector_online.py - Rule Detector
regime/detector_rule.py - Strategy Sleeves
regime/sleeves.py - Regime Overlay
regime/overlay.py
Other components
- Researcher
- Market Data Source
Connections 32
- Researcher → Event Loop: runs
README.md - Market Data Source → Price Loader: provides prices
data/loader.py - Price Loader → Pair Data Handler: loads pairs
engine/data_handler.py - Price Loader → Multi-Asset Handler: loads universe
engine/data_handler.py - Pair Data Handler → Event Messages: emits bars
engine/data_handler.py - Multi-Asset Handler → Event Messages: emits bars
engine/data_handler.py - Event Loop → Pair Data Handler: advances bars
- Event Loop → Event Messages: dispatches
engine/backtest.py - Event Loop → Simulated Execution: executes pending
engine/backtest.py - Event Loop → Strategy Interface: requests signals
- Event Loop → Portfolio Accounting: routes events
engine/backtest.py - Pairs Strategy → Strategy Interface: implements
strategies/pairs_trading.py - Momentum Strategy → Strategy Interface: implements
strategies/momentum.py - Baseline Strategies → Strategy Interface: implements
strategies/buy_and_hold.py - Pairs Strategy → Event Messages: emits signals
strategies/pairs_trading.py - Momentum Strategy → Event Messages: emits signals
strategies/momentum.py - Portfolio Accounting → Event Messages: creates orders
engine/portfolio.py - Simulated Execution → Event Messages: creates fills
engine/execution.py - Event Loop → Performance Metrics: reports curve
- Researcher → Pair Screening: screens pairs
README.md - Pair Screening → Price Loader: analyzes prices
- Researcher → Kelly Sizing: sizes positions
README.md - Researcher → Regime Features: studies regimes
README.md - Regime Features → Price Loader: loads market data
regime/features.py - HMM Detector → Regime Features: builds inputs
regime/detector_hmm.py - Online Detector → Regime Features: uses features
regime/detector_online.py - Rule Detector → Regime Features: uses features
regime/detector_rule.py - Strategy Sleeves → Pairs Strategy: runs strategy
regime/sleeves.py - Strategy Sleeves → Momentum Strategy: runs strategy
regime/sleeves.py - Regime Overlay → Online Detector: uses detector
scripts/regime_overlay.py - Regime Overlay → Strategy Sleeves: combines sleeves
scripts/regime_overlay.py - Regime Overlay → Performance Metrics: evaluates results
scripts/regime_overlay.py