Overview
TheLatencyConfig struct defines latency parameters for simulating realistic network and exchange delays in backtests. Proper latency modeling is critical for HFT strategy validation.
Source: nano-backtest/src/config.rs
LatencyConfig
Fields
| Field | Type | Default | Description |
|---|---|---|---|
order_latency_ns | u64 | 100,000 | Order submission latency (nanoseconds) |
market_data_latency_ns | u64 | 50,000 | Market data reception latency (ns) |
ack_latency_ns | u64 | 100,000 | Order acknowledgment latency (ns) |
jitter_ns | u64 | 10,000 | Latency jitter std deviation (ns) |
use_random_jitter | bool | true | Enable random jitter simulation |
Constructor
default
Creates a default latency configuration modeling co-location environment.
- Order latency: 100μs (typical colo to exchange)
- Market data: 50μs (faster than orders)
- Acknowledgment: 100μs (round-trip to exchange)
- Jitter: 10μs standard deviation
- Random jitter: enabled
Field Details
order_latency_ns
Time from order submission to arrival at exchange. Units: Nanoseconds (1 microsecond = 1,000 nanoseconds) Represents:- Network transmission time
- Gateway processing
- Exchange ingress processing
| Environment | Latency | Notes |
|---|---|---|
| Aurora (CME colo) | 5-10μs | Direct exchange connection |
| NY5 colo | 50-100μs | Generic NY data center |
| Cross-venue | 100-500μs | Different exchange locations |
| Retail (US) | 1-10ms | Internet connection |
| International | 10-100ms | Trans-oceanic |
market_data_latency_ns
Time from exchange event to market data reception. Units: Nanoseconds Represents:- Market data feed transmission
- Decoder processing time
- Network delay
- Aurora (CME): 2-5μs
- Colo: 25-50μs
- Retail: 0.5-5ms
ack_latency_ns
Time from exchange processing to acknowledgment reception. Units: Nanoseconds Represents:- Exchange order processing
- Return network path
- Gateway processing
- Colo: 50-100μs
- Remote: 1-10ms
jitter_ns
Standard deviation of latency variability (jitter). Units: Nanoseconds Purpose: Simulates realistic network variance Distribution: Normal distribution (whenuse_random_jitter: true)
Example:
- Low jitter (fiber): 1-5μs
- Medium jitter (colo): 5-20μs
- High jitter (internet): 50-500μs
use_random_jitter
Enables random jitter simulation. Values:true(default): Adds random jitter to each latencyfalse: Deterministic latencies (for reproducibility)
- Realistic simulation: Models network variance
- Stress testing: See how strategy handles variable latency
- Reproducibility: Disable for deterministic backtests
Configuration Presets
Aurora (CME Primary Colo)
Ultra-low latency at CME’s Aurora data center.Generic Colo
Typical co-location facility.Remote/Cloud
Cloud-based or remote trading.Retail/Internet
Typical retail trader connection.Conservative (Pessimistic)
Worst-case latency for stress testing.Optimistic (Best-case)
Best-case latency for strategy research.LatencySimulator Usage
TheLatencySimulator uses this configuration:
Latency Impact Analysis
Understand how latency affects strategy performance:Time Unit Reference
Best Practices
- Measure Reality: Benchmark your actual latencies before backtesting
- Test Multiple Scenarios: Run backtests with optimistic, realistic, and pessimistic latencies
- Include Jitter: Always enable random jitter for realistic results
- Conservative for Live: Use pessimistic latencies when validating for live trading
- Document Assumptions: Record what infrastructure your latencies model
- Asymmetric Latencies: Market data is often faster than order submission
- Latency Matters: For HFT, 10μs difference can dramatically impact performance
- Round-Trip Time: Total latency = order + exchange processing + ack
Complete Example
See Also
- LatencySimulator - Latency simulation implementation
- BacktestConfig - Complete configuration
- BacktestEngine - Running backtests