Goldman Sachs VP's guide to coding electronic trading systems

eFC logo
Goldman Sachs VP's guide to coding electronic trading systems

If you're interested in working as a developer in an investment bank and coding electronic trading systems, then Goldman Sachs vice president Kelsey Lafer's presentation yesterday at this week's Grace Hopper Conference offered some pointers on what the job actually entails.

Lafer's worked for Goldman for seven years and is currently a vice president (VP) developing trading software for the firm's fixed income currencies and commodities (FICC) systematic market making business in New York City. Her entire career has been coding trading systems, and she is a specialist in speed.

"One of the main lessons I’ve learned, is that a lot of things don’t need to be that fast, but sometimes they really do need to be fast and really performant," said Lafer.  In electronic trading parlance, speed is known as "latency," and latency is defined as, "the amount of time it takes for information to be transferred from one place to another."

In high speed/low latency trading systems, information has to be transferred almost unfeasibly quickly. "In electronic trading, we're trying to get as close as possible to the speed of light," said Lafer. "When we're talking about low latency, we're often talking in the sub-second scale." It takes light about one nanosecond to travel a foot, and electronic trading latency is defined in terms of micro seconds and nanoseconds. A micro-second is one millionth of a second; a nanosecond is one billionth of a second.

The performance of an electronic trading system is typically measured in terms of percentiles. For example, banks will look at how well a system performs at the 95th percentile - well outside the bounds of normality. Lafer said this is because, "electronic trading systems have to be performant all the time, not just on average."

Fundamentally, electronic trading systems are about exchanging financial products through automated systems. "Historically, this [trading] was a very manual process," noted Lafer. Today, it means that a broker dealer receives an order from a client, splits it into smaller orders using an algorithm, and sends the order to an exchange where the trade actually happens. Speed is essential: broker dealers can make money by securing a favorable price at the exchange ahead of their competitors.  "You have a market of people trying to get that price faster than the other person," said Lafer. 

Coding an electronic trading system is partly about the effectiveness of the algorithms used (they're typically single threaded rather than multi-threaded for simplicity), but it's also about the size of the coded message that's being transmitted and the efficiency with which the information in it is expressed. Banks exchange information in a messaging protocol known as Financial Information eXchange (FIX), and run their own internal binaries that transfer FIX messages from client adaptors to exchange adaptors. JSON (JavaScript Object Notation (JSON)) is also used in message transfer. Latency is a product of "how long it takes the components [in the system] to communicate with each other," said Lafer. 

If you want to work in low latency trading development, there are two coding languages you'll need to know: Java and C++ . You might also want to familiarize yourself with tools like: the Java MicroBenchmark Harness, which is used to benchmark chunks of code with sub-second specifications, along with Java Mission Control, Java Flight Recorder, and JavaVisual VM, which help you view runtime latency metrics. 

Even if you don't want to code low latency trading systems, it can make sense to understand how to code as close as possible to the speed of light. The techniques used at Goldman Sachs and other banks are also used in industries like gaming, where there's an expectation of responsiveness in real time. 


Related articles

Popular job sectors


Search jobs

Search articles