Overview
Standard HftBacktest provides highly accurate results by simulating every market event, tracking queue positions, and modeling latencies precisely. However, this accuracy comes at a cost: backtesting can be slow, especially when:- Testing hundreds of parameter combinations
- Running multi-month backtests
- Iterating on new strategy ideas
- Performing walk-forward optimization
- Precomputing fill conditions for time intervals
- Skipping detailed queue position tracking
- Ignoring order response latency
- Processing data in larger chunks
Key Differences
| Aspect | Standard Backtest | Accelerated Backtest |
|---|---|---|
| Queue Position | Tracked with probability models | Ignored (no partial fills) |
| Order Response Latency | Modeled accurately | Ignored (immediate state update) |
| Feed Latency | Modeled | Modeled (preserved) |
| Fill Simulation | Event-by-event | Precomputed per interval |
| Partial Fills | Supported | Not supported |
| Speed | 1x (baseline) | 10-50x faster |
| Accuracy | Highest | Reduced, but sufficient for parameter search |
How It Works
Fill Conditions
Instead of checking fills on every market event, accelerated backtesting precomputes fill prices for each time interval: For Buy Orders:Important: Because queue position is not considered:
order_price == trade_pricedoes NOT fill (need to cross)- Orders are either fully filled or not filled at all
- No partial fills
Data Structure
Accelerated backtesting uses preprocessed data with precomputed fill prices:- bid_fill[t+1]: Highest price where buy orders get filled
- ask_fill[t+1]: Lowest price where sell orders get filled
- bid_fill_ack[t]: Fill price for orders sent before ack time
- bid_fill_after_ack[t]: Fill price for orders sent after ack time
Preprocessing Market Data
Step 1: Define the Running Interval
Choose your strategy’s decision interval:- 10-100ms: Good balance for most strategies
- 100-500ms: Faster, sufficient for slower strategies
- < 10ms: Defeats purpose of acceleration
Step 2: Process Raw Market Data
Implement preprocessing using Numba for performance:Step 3: Simplified Preprocessing
For practical use, you can leverage HftBacktest’s data utilities and focus on interval-based aggregation:Using Accelerated Backtesting
Once you have preprocessed data, use it with a simplified backtester:In accelerated mode:
- Queue position is not tracked
- Orders fill immediately when conditions met (no response latency)
- Much faster execution
- Suitable for parameter optimization
Parameter Optimization
Accelerated backtesting shines in parameter optimization:Validation Workflow
Use accelerated backtesting for optimization, then validate with standard backtesting:Accuracy Tradeoffs
Understand what you lose with acceleration:Lost Accuracy
-
Queue Position Effects
- Can’t model “getting in line early”
- Overestimates fills in congested markets
- Underestimates fills when you’d be at front
-
Partial Fills
- Orders either fully fill or don’t fill
- Reality: large orders may partially fill
-
Order Response Latency
- State updates happen immediately
- Reality: you don’t know fill status until response arrives
- Can lead to unrealistic hedging in backtest
Preserved Accuracy
-
Feed Latency
- Still modeled correctly
- You react to stale market data as in reality
-
Order Entry Latency
- Still modeled correctly
- Orders arrive at exchange with delay
-
Price Movements
- Market dynamics preserved
- Spread and volatility effects captured
Best Practices
Choose Appropriate Interval
Choose Appropriate Interval
The running interval should match your strategy’s natural decision frequency:
- HFT strategies: 10-50ms
- Market making: 50-200ms
- Slower strategies: 200-1000ms
Validate with Standard Backtest
Validate with Standard Backtest
Always validate your top parameter sets with standard backtesting before live deployment. Use accelerated mode for searching, standard mode for validation.
Avoid Queue-Sensitive Strategies
Avoid Queue-Sensitive Strategies
Accelerated backtesting works poorly for:
- Strategies that rely on queue position
- Large tick size markets
- Strategies that use GTX orders aggressively
Monitor Accuracy Degradation
Monitor Accuracy Degradation
Compare accelerated vs standard results periodically:
Performance Comparison
Typical speedups from accelerated backtesting:| Strategy Type | Standard Time | Accelerated Time | Speedup |
|---|---|---|---|
| Simple Market Making | 120s | 8s | 15x |
| Grid Trading | 180s | 5s | 36x |
| Multi-Asset Strategy | 300s | 25s | 12x |
| Complex Alpha Strategy | 240s | 18s | 13x |
Next Steps
Queue Models
Return to standard backtesting with accurate queue models
Pricing Framework
Build sophisticated pricing models for multi-asset strategies