HFT CORE SYSTEMS
Curriculum
96 lessons that take you from measurement, probability basics and low-level C++ to Linux, networking, concurrency, market microstructure, market data, order books, execution, risk and a full tick-to-trade capstone.
01
HFT ENGINEERING ROADMAP
What you learn, in order.
01Measurement + probability basicsDistributions · percentiles · tail latency · benchmark confidence↗02CPU + memory systemsCaches · branch prediction · TLBs · NUMA · memory bandwidth↗03Linux for low latencyScheduling · affinity · interrupts · memory · host tuning↗04Networking + packet pathsUDP · multicast · sockets · AF_XDP · DPDK · NIC locality↗05Low-latency C++Memory layout · allocation · parsing · SIMD · fixed-point types↗06Concurrency + lock-free engineeringAtomics · memory ordering · queues · reclamation · contention↗07Markets + microstructureOrders · venues · spreads · matching · product vocabulary · order books↗08Market data + execution + riskFeeds · sequencing · order entry · executions · limits · reconciliation↗09Tick-to-trade + production systemsArchitecture · latency attribution · recovery · observability · operations↗10HFT interviews + job preparationC++/DSA coding · systems design · mock interviews · resume + portfolio↗
ALL 96 LESSONS
Course lessons
VISIBLE96
Measurement before optimization
EP 01–0801
Define latency like an engineerSeparate service time, queueing time and end-to-end latency
↗02Build a benchmark harness that resists self-deceptionPrevent dead-code elimination and constant folding
↗03Clocks: monotonic time, TSC, RDTSCP, and calibrationChoose between OS clocks, TSC and RDTSCP
↗04Describe the machine before describing the resultCapture CPU, cache, NUMA, kernel and compiler context
↗05Histograms and tails, not averagesRead distributions beyond mean and median
↗06Hardware counters without cargo cultingConnect PMU events to a concrete performance hypothesis
↗07Disassembly as experimental evidenceMap source constructs to generated instructions
↗08Phase gate: the reproducible benchmark laboratoryCombine clocks, manifests, histograms and counters
↗CPU and memory systems
EP 09–2009
Cache geometry and address decompositionDecompose an address into offset, set and tag
↗10Cache coherence: MESI/MOESI without the bus-lock mythTrace cache-line state transitions between cores
↗11False sharing and constructive sharingDetect independent fields sharing a coherence line
↗12Out-of-order execution and the dependency graphReason about dependencies rather than source order
↗13Branch prediction and data-dependent control flowExplain predictors without treating branches as universally bad
↗14SIMD with feature dispatchRecognize vectorizable data layouts
↗15TLBs and page walksConnect virtual addresses to page-table translation
↗16Huge pages: explicit HugeTLB vs. THPCompare explicit huge pages with transparent huge pages
↗17NUMA placement and ownershipMap CPU and memory locality across NUMA nodes
↗18Prefetching: hardware, software, and pointer chasingKnow where hardware prefetchers succeed
↗19DRAM and memory bandwidth under contentionSeparate memory latency from sustainable bandwidth
↗20Phase gate: data-oriented redesignRedesign a workload around access pattern and ownership
↗Linux determinism
EP 21–3221
Scheduler classes and real-time hazardsCompare normal and real-time scheduling policies
↗22Affinity, topology, SMT, and migrationPin work to CPUs using topology-aware choices
↗23CPU isolation as a system configurationSeparate application affinity from true CPU isolation
↗24Interrupts, NAPI, softirqs, and NIC queuesTrace receive work from interrupt to softirq
↗25Memory locking and prefaultingExplain page faults on a latency-sensitive path
↗26Power management, turbo, C-states, and thermal behaviorConnect frequency and idle states to latency variance
↗27Finding OS noise with rtla, ftrace, and perfUse tracing to localize latency spikes
↗28System calls and context switches are different thingsSeparate privilege transitions from scheduler switches
↗29Shared memory IPC with explicit ownershipDesign shared-memory layout and initialization
↗30cgroup v2, cpusets, memory nodes, and least privilegeConstrain CPU and memory placement with cgroup v2
↗31Asynchronous logging: page cache, direct I/O, and io_uringKeep formatting and storage off the hot path
↗32Phase gate: reproducible low-jitter host profileCombine placement, memory, IRQ and power controls
↗Network datapaths
EP 33–4433
Ethernet frames and the real wire budgetAccount for preamble, headers, FCS and inter-packet gap
↗34IPv4/IPv6, UDP, checksums, and fragmentationParse IP and UDP headers safely
↗35Multicast joins, IGMP, and feed topologyUnderstand group membership and IGMP behavior
↗36The Linux receive path: DMA to userspaceTrace buffer ownership from NIC DMA to recvmsg
↗37Socket tuning and busy pollingSize socket buffers from traffic and burst assumptions
↗38RSS, flow steering, RPS/RFS, and XPSMap flows to NIC queues and CPUs
↗39AF_PACKET, PACKET_MMAP, and AF_XDPCompare socket, mmap ring and XDP data paths
↗40DPDK architecture and memory ownershipUnderstand EAL, huge pages, mbufs and poll-mode drivers
↗41AMD Solarflare ef_vi and raw layer-2 accessUnderstand virtual interfaces and event queues
↗42PCIe, DMA, IOMMU, DDIO, and NIC localityTrace NIC DMA across PCIe and the IOMMU
↗43Hardware and software packet timestampsDistinguish application, kernel and NIC timestamp points
↗44Phase gate: receiver bake-offCompare receive paths under identical traffic
↗Low-latency C++
EP 45–5645
Object lifetime, storage, alignment, and aliasingSeparate storage duration from object lifetime
↗46Value categories, moves, forwarding, and copy elisionReason about lvalues, xvalues and prvalues
↗47Layout by access pattern, not packingChoose AoS, SoA and hybrid layouts by access pattern
↗48Allocation strategy: arenas, PMR, pools, and failure policyChoose an allocator by lifetime and capacity
↗49Fixed-capacity text and identifiersRepresent bounded strings without hidden allocation
↗50Static polymorphism, concepts, and devirtualizationReplace runtime dispatch only where variants are known
↗51Inlining, branch hints, LTO, PGO, and code layoutTreat inlining as a cost model, not a keyword
↗52Exceptions, RTTI, noexcept, and error channelsChoose error channels by failure domain
↗53Containers under latency constraintsEvaluate containers by allocation, locality and iterator stability
↗54Fixed-point money and quantity typesAvoid floating-point ambiguity in price and quantity
↗55Safe, allocation-free binary parsingValidate bounds before reading untrusted bytes
↗56Phase gate: allocation-free protocol coreCombine bounded types, storage and parsing
↗Concurrency and lock-free engineering
EP 57–6857
The C++ memory model and data-race freedomDefine happens-before and conflicting actions
↗58Sequential consistency and total orderExplain the single order promised by seq_cst
↗59Acquire/release publicationPublish initialized state with release
↗60Relaxed atomics, counters, and misconceptionsUse relaxed operations when only atomicity is required
↗61SPSC ring buffer from invariants firstDefine ownership of slots and indices
↗62Bounded MPMC queues and sequence numbersCoordinate multiple producers and consumers per slot
↗63Michael–Scott queue and linked-node trade-offsLocate enqueue and dequeue linearization points
↗64Spinlocks, atomic_wait, futexes, and backoffChoose spinning, parking or hybrid waiting by hold time
↗65ABA: mechanism, not sloganConstruct an execution where A changes and returns
↗66Hazard pointers and safe reclamationPublish protected pointers before dereference
↗67Epoch reclamation and user-space RCUUnderstand grace periods and reader quiescence
↗68Phase gate: queue library and concurrency defensePackage bounded queues behind explicit contracts
↗Electronic trading systems
EP 69–8069
Market microstructure for systems engineersUnderstand venues, participants, matching and price-time priority
↗70Feed transport, packet headers, and sequencingParse feed packet and message framing
↗71Nasdaq ITCH decoding with schema disciplineTranslate a wire specification into typed messages
↗72Feed arbitration, gap detection, and recoveryArbitrate redundant A/B feeds deterministically
↗73L1, L2, and L3 limit-order-book designDistinguish top-of-book, aggregated depth and order-level state
↗74Book data structures by instrument domainChoose dense, sparse or hybrid price-level storage
↗75FIX tag-value, FAST, and SBE are different toolsCompare human-readable, compressed and fixed-schema protocols
↗76Order entry: OUCH lifecycle and session stateModel login, sequence and session transitions
↗77Pre-trade risk as a controlled systemEnforce quantity, notional, position and rate limits
↗78Order management, drop copy, and reconciliationMaintain authoritative order and execution state
↗79Deterministic replay and exchange simulationCapture inputs needed to reproduce a run
↗80Phase gate: market-data plant and order gatewayConnect sequencing, decoding, book and order state
↗Production safety and operations
EP 81–8881
PTP, PHC, clock domains, and timestamp provenanceUnderstand PTP roles and NIC hardware clocks
↗82End-to-end latency attributionDefine timestamps at each processing boundary
↗83Capacity, backpressure, and overload policyModel arrival rate, service rate, burst and queue capacity
↗84Journaling, durability, and crash recoveryDefine what must survive which failure
↗85Failure injection and chaos for a single hostTurn assumptions into explicit fault experiments
↗86Observability that stays off the critical pathSeparate hot-path event capture from cold-path aggregation
↗87Deployment, warm-up, rollout, and rollbackMake artifacts, configuration and host state reproducible
↗88Incident response and postmortemsStabilize before diagnosing deeply
↗Capstone and hiring conversion
EP 89–9689
Architecture of the integrated tick-to-trade platformPartition feed, book, strategy, risk and gateway responsibilities
↗90Integrate the hot path without hiding copiesTrace every buffer and representation transition
↗91End-to-end correctness campaignTest invariants across component boundaries
↗92End-to-end performance campaignBenchmark the complete path under realistic traffic
↗93Design review: defend the trade-offsExplain why each major design fits the workload
↗94Incident game day and recovery demonstrationOperate the system while faults compound
↗95HFT interview loop simulationAnswer C++, systems and market-structure questions from first principles
↗96Portfolio launch and engineering retrospectivePackage the repositories for a five-minute reviewer journey
↗