What is your SLA for an expressive bid? I'm guessing it its less than 1ms? Do you use a database of some sort? How do you to handle settlement? How do you handle ingest?
The optimization procedure (which includes bid evaluation) is ~30ms. We cycle bound (under a formal model of computation via function application and graph reduction) computation of bidders to ensure that everyone shares an identical and deterministic resource cap.
> Do you use a database of some sort?
Not as part of the real-time trading system, which operates as a CP fail-stop distributed system model checked for safety and liveness by TLA+ and system tested by Jepsen.
> How do you to handle settlement?
Regular way (T+2 settlement with a 3rd party clearing BD)
> How do you handle ingest?
We use a constellation of GPS synchronized Stratum 1 clocks and proprietary network timestamping software + hardware to ensure that we process orders entered by the auction call time regardless of what physical host we receive the order on. We do the same for market data broadcast from other trading venues across data centers and geographies. We stream both market data and orders to a central point for processing. Every node in our distributed system that processes orders or “away venue” market data broadcasts a “Gateway Call Announcement (GCA)” message at auction call time to downstream compute nodes that run the auction. Auction solver nodes get to work after receiving GCA messages from the hosts they expect to hear from.