HFTPlatform is in private beta - access is invite-only
Full-stack HFT infrastructure

Tick to trade in nanoseconds.

An end-to-end high-frequency trading platform - an FPGA fabric that runs on the NIC, vendor-neutral kernel-bypass networking, and a control plane written entirely in Rust.

~38 ns wire-to-wire* <3 ns transceiver · UL3422 100% Rust off the critical path 0 syscalls on the critical path
LIVE FEED md.equities.xnas
tick 0 t2t 38ns jitter ±7ns

Built on and interoperable with the standards that matter

AMD / Xilinx Alveo Solarflare Onload ef_vi TCPDirect AF_XDP PTP / IEEE 1588 Rust Veryl / SystemVerilog
The hot path is the product

A generic software stack can't keep up. Move the decision into silicon.

Syscalls, context switches, and garbage collection add microseconds and jitter you can't budget for. HFTPlatform parses, risk-checks, and fires from inside the NIC - then hands everything else to a deterministic Rust control plane.

Generic software stack

kernel path
$ recv() // syscall
  ↳ context switch
  ↳ kernel TCP/IP copy
  ↳ userspace parse (GC lang)
  ↳ GC pause risk
$ send() // syscall
status: nondeterministic
0 ns tick-to-trade, p50
jitter measured in µs

HFTPlatform FPGA fabric

in-NIC
$ hft fabric deploy --card x3522
  ✓ feed decoder synthesized
  ✓ pre-trade risk in fabric
  ✓ order encoder pinned
  ✓ PTP clock disciplined
$ parse → check → fire // no syscall
status: deterministic
0 ns tick-to-trade, p50
bounded, single-digit-ns jitter

* Figures are illustrative reference targets and depend on card, feed, and configuration.

Platform

Every layer, owned. From the wire to the order.

One coherent platform with clean abstraction boundaries - so you can swap silicon and retarget feeds without rewriting the parts that matter.

In-NIC FPGA fabric

Feed decode, pre-trade risk, and order encode run inside the NIC fabric - never touching the kernel. Authored in Veryl or SystemVerilog and synthesized straight to your card.

veryl → systemverilog → vivado

Vendor-neutral kernel bypass

A single API abstracts ef_vi, TCPDirect, Onload, and AF_XDP. Portability lives at the bypass layer - so you bind to silicon, not lock to it.

ef_vi · tcpdirect · onload · af_xdp

Rust control plane

Feed handlers, OMS, risk, gateways, simulation, and backtesting - all in safe, GC-free Rust. The FPGA accelerator sits behind a trait boundary you can mock.

no_std-friendly · zero-copy · async off-path

Hardware timestamping

PTP / IEEE 1588 clock discipline as a platform primitive. Every tick and every order carries a nanosecond-accurate, hardware-sourced timestamp.

ieee 1588 · ±8 ns sync

Deterministic by design

No syscalls, no allocation, no GC on the critical path. Latency is a budget you set - and bounded jitter you can prove with on-card telemetry.

bounded tail · per-stage histograms

Backtest equals production

The same strategy code runs in deterministic simulation, against historical replay, and in live trading. Reproduce any session, tick for tick.

replay · sim · live - one path
Architecture

Four layers. One clean boundary between silicon and software.

The latency-critical path lives in fabric; everything else is Rust against an abstracted bypass API. Swap the card, keep the stack.

Critical path

FPGA-on-NIC fabric  Veryl / SystemVerilog

Feed decoder Pre-trade risk Order encoder PTP timestamping Line-rate filter
▲   parse → check → fire, in-fabric   ▼
Bypass API

Kernel-bypass abstraction

ef_vi TCPDirect Onload AF_XDP trait Transport
▲   one API, swappable silicon   ▼
Services

Rust trading services

Feed handlers OMS Risk engine Gateways Strategy runtime
▲   off-path, deterministic Rust   ▼
Control

Control plane & tooling

Simulation Backtesting Telemetry Deploy / orchestration
Hardware

Target the card you have. Retarget the card you want.

HFTPlatform standardizes on AMD/Xilinx Alveo FPGA-on-NIC silicon, tiered from baseline capture to sub-3-nanosecond transceiver latency - all behind the same bypass abstraction.

Primary trading

X3522

The current workhorse for production low-latency trading.

ultra-low latency10/25G
Newest · fastest

UL3422

Sub-3 ns transceiver latency for the most aggressive strategies.

transceiver<3 ns
Baseline

X2522

Entry tier for capture, development, and lower-rate feeds.

baseline10/25G
High throughput

SN1022

100GbE-class workloads where bandwidth leads latency.

line rate100G
Engineering

The accelerator is a trait. The latency is a number you watch.

Program against a clean Rust boundary, swap the FPGA backend for a software mock in tests, and stream per-stage telemetry from the card in production.

crates/accelerator/src/lib.rs
// The critical path lives in fabric; the rest of the
// platform talks to it through one trait boundary.

pub trait Accelerator {
    /// Submit a decoded book update; returns a
    /// fire decision evaluated in-fabric.
    fn on_tick(&self, tick: Tick) -> Decision;

    fn timestamp(&self) -> PtpNanos;
}

// Production: the X3522 fabric backend.
impl Accelerator for FpgaFabric { /* … */ }

// Tests & backtests: a deterministic mock,
// same path, no card required.
impl Accelerator for SimFabric { /* … */ }

let engine = Engine::new(Transport::ef_vi("x3522:0")?);
engine.run(strategy);
HFTPlatform telemetry - fabric live
tick-to-trade · p5038ns
tick-to-trade · p9952ns
jitter · p99−p5014ns
PTP clock offset±8ns
ingress100GbE · line rate
critical-path syscalls0
example telemetry - illustrative, varies by card & configuration
Principles

Built on a few firm convictions.

These are the ideas HFTPlatform refuses to compromise on.

01

Abstract the API, not the silicon

Portability and longevity come from a clean bypass layer - ef_vi, TCPDirect, Onload, AF_XDP - not from betting the platform on one vendor's chip.

02

Rust everywhere it's viable

One memory-safe language across feeds, OMS, risk, gateways, sim, and tooling. The only exception is the fabric hot path, where the toolchain demands HDL - and we're honest about that.

03

Determinism over peak throughput

A predictable tail beats a fast average. The hot path makes no syscalls and never allocates, so the worst case is a number you can budget.

04

Clean boundaries you can own

Every layer is replaceable behind a trait. Mock the card and retarget the feed - without touching the parts that earn the latency.

Wire to order, in nanoseconds

Build your trading stack on the wire.

Target your card and run the same code from backtest to production.