Skip to content

northwesternfintech/low-latency-league

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Low Latency League

Welcome to the Low Latency League — NUFT’s internal challenge to build the fastest matching engine.

Overview

Your job is simple: optimize the provided engine in engine.cpp/hpp. Your code must pass all tests (make test) to qualify.

Benchmarking

Submit your code for benchmarking by running make submit. You must be on black or scholes. Only your latest submission counts — submit as often as you like. A live leaderboard tracks results at Low Latency League Tracker.

The benchmarks simulate somewhat realistic trading conditions. For example, order prices tend to have relatively low variances (if AAPL is at $100, most orders will be within a few dollars of that).

Guidelines

  1. Anything reasonable is fair game. There are no strict memory limits or library restrictions. Add Abseil? Sure. Use 5GB RAM? Fine. Rewrite in Rust and use 64GB RAM? Not fine.
  2. You must not change any function signatures in engine.hpp.
  3. Don’t try to break things or cheat. Use common sense.

Advice

  1. Profile everything. Don’t guess — use perf, callgrind, uProf, whatever gives you answers.
  2. Start with the obvious. Think cache misses, branching, mallocs, mutexes — the basics.
  3. Only speed counts. If it doesn’t make the engine faster, it doesn’t matter.
  4. The order flow has structure. Prices cluster. Use that.
  5. Keep your hot path lean. No heap allocs, no virtuals, no slow maps.
  6. Modern C++ is your friend — std::span, std::pmr, inlining tricks, etc.
  7. Don’t get clever unless you can prove it’s faster.
  8. You're allowed to add external libraries as long as it still compiles into engine.so

About

C++ Matching Engine Competition

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published