Skip to content

Instantly share code, notes, and snippets.

@ianic
Created August 10, 2023 12:22
Show Gist options
  • Save ianic/9e834eb5a042c84c2f7c06f439ef5c1c to your computer and use it in GitHub Desktop.
Save ianic/9e834eb5a042c84c2f7c06f439ef5c1c to your computer and use it in GitHub Desktop.

From Jane Street Singals & Threads podcast: Multicast and the Markets about use of multicast in trading exchanges.

here are two kinds of primary data flows that a trading firm encounters, at least when we’re talking to an exchange. There is: the order flow connection, where we send our specific orders and our specific cancels and see the specific responses to those, and that is almost always done on a TCP connection; then there is the receipt of market data, and that’s where you’re sending the data that everyone needs to see exactly the same anonymized stream of data, and that’s almost always done through multicast. (14:37)

... multicast in trading environments is a dominant technology. ...there are a small number of videos that we all want to watch at the same time. Unlike Netflix, where everybody watches a different thing, we actually want in the trading world to all see what’s going on on NASDAQ and ARCA and NYSE and CBOE... (18:49)

The exchange, the primary thing it’s doing is determining the order of the events that are happening. And then the exchange wants to disseminate that information to as many participants as possible. (20:32)

..we added sequencing and the ability to retransmit missed messages in various specialized ways. [instead of using general purpose reliable multicast]. ... getting data out quickly and fairly, but they care more about getting data to almost everyone in a clean way than they do making sure that everyone can keep up (23:37)

A huge step you can take in any technical design is figuring out what are the part of the problems you don’t have to solve.

The basic description was, the way NASDAQ works is, every single transaction on the entire exchange goes through a single machine on a single core. And on that core is running a more or less ordinary Java program that processes every single transaction, and that single machine was the matching engine, the sequencer. (29:23)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment