← HFT
Strategies

HFT Strategies

Methodology

HFT strategies operate on sub-second to microsecond timescales and rely on speed, scale, and market microstructure knowledge rather than directional price prediction. The three primary categories — market making, arbitrage, and execution algorithms — each have distinct signal sources, risk profiles, and infrastructure requirements.

Analysis here is conceptual and infrastructure-focused. Profitability depends heavily on execution latency, venue selection, and real-time risk controls that are not captured in daily-bar backtests.

This page focuses on one niche strategy pattern that looks simple on paper but is hard in production: queue-reactive market making with toxicity-aware quote skew. Instead of generic "market making/arbitrage/execution" summaries, this is how practitioners actually glue these ideas together in one real-time loop.

Core setup: fair value, microprice, and inventory state

The strategy runs around a short-horizon fair value estimate. A common anchor is microprice:

Microprice = (Ask * BidSize + Bid * AskSize) / (BidSize + AskSize)

Then we adjust quoting center using inventory and flow toxicity. If inventory is long and toxic buy flow appears, we bias quotes downward to reduce adverse selection risk.

Niche signal: order-flow imbalance with decay

Instead of raw trade imbalance over long windows, we use a short-decay order-flow imbalance (OFI) signal that reacts within milliseconds. A practical version:

OFI_t = Sum(w_i * signed_size_i), where w_i = exp(-(t - t_i) / tau)

Here `tau` is very small (for example, single-digit milliseconds in liquid names). This keeps the signal local to current queue pressure rather than stale flow.

Quote engine: spread, skew, and size in one equation

A production quote model often looks like:

BidQuote = FV - HalfSpread - k_inv * Inventory - k_tox * OFI

AskQuote = FV + HalfSpread - k_inv * Inventory - k_tox * OFI

When `OFI` indicates aggressive buy pressure, both quotes shift up, but inventory term can override if position is already too long. This is where "alpha" and "risk" stop being separate modules and become one continuous control system.

Queue-reactive cancellation logic

Static cancel thresholds are usually too slow. We maintain per-order queue rank estimates and cancel if expected markout turns negative before likely fill. The strategy is not just "post and hope," it is continuous queue quality selection.

  • Cancel if queue-ahead shrinks slower than expected while OFI turns toxic
  • Repost at safer level when adverse selection probability spikes
  • Use stricter rules near open, close, and scheduled macro events
  • Enforce venue-specific cancel throttles to avoid operational penalties

Where arbitrage and execution fit inside this framework

In practice, arbitrage and execution logic are not separate "products." They inject constraints and opportunities into the market-making loop:

  • Arbitrage anchors fair value when related venue/instrument leads
  • Execution module unwinds inventory using smart venue routing
  • Cross-venue dislocation checks gate quote aggressiveness
  • Parent-order execution logic can temporarily override maker behavior

The metric that matters: markout by queue state

Many teams track spread capture only. Better practice is conditional markout by queue rank and toxicity bucket. For each fill, measure post-fill move at fixed horizons (for example 10ms, 50ms, 250ms). If short-horizon markout is persistently negative in specific queue states, your fill policy is wrong even if gross spread looks fine.

Production safeguards that keep this strategy alive

  • Hard inventory bands with forced de-risk mode
  • Per-symbol loss caps and per-interval quote-to-fill sanity checks
  • Automatic widening on venue instability and ack-latency spikes
  • Kill-switch if stale-book risk or sequence-gap uncertainty appears

Niche takeaway: queue-reactive market making is less about having a clever signal and more about aligning fill probability, toxicity filtering, and inventory control at the same microsecond timescale.