Skip to main content

Overview

The LatencyConfig 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

Constructor

default

Creates a default latency configuration modeling co-location environment.
Default values:
  • 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
Example:

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
Example:
Typical Values by Environment: Conversion helpers:

market_data_latency_ns

Time from exchange event to market data reception. Units: Nanoseconds Represents:
  • Market data feed transmission
  • Decoder processing time
  • Network delay
Typical relationship: Usually faster than order latency (optimized path) Example:
Typical Values:
  • 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
Typical relationship: Similar to order latency (round-trip) Example:
Typical Values:
  • 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 (when use_random_jitter: true) Example:
Typical Values:
  • 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 latency
  • false: Deterministic latencies (for reproducibility)
Purpose:
  • Realistic simulation: Models network variance
  • Stress testing: See how strategy handles variable latency
  • Reproducibility: Disable for deterministic backtests
Example:

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

The LatencySimulator uses this configuration:

Latency Impact Analysis

Understand how latency affects strategy performance:

Time Unit Reference

Best Practices

  1. Measure Reality: Benchmark your actual latencies before backtesting
  2. Test Multiple Scenarios: Run backtests with optimistic, realistic, and pessimistic latencies
  3. Include Jitter: Always enable random jitter for realistic results
  4. Conservative for Live: Use pessimistic latencies when validating for live trading
  5. Document Assumptions: Record what infrastructure your latencies model
  6. Asymmetric Latencies: Market data is often faster than order submission
  7. Latency Matters: For HFT, 10μs difference can dramatically impact performance
  8. Round-Trip Time: Total latency = order + exchange processing + ack

Complete Example

See Also