Back
Life at Optiver  · 

Navigating performance challenges as a C# Software Engineer at Optiver

Daniele Albanese

When we think of market making, we often associate it with low-latency C++ applications. However, many other technologies and programming languages play a crucial role in establishing Optiver as a leading global trading firm, among them being C#.

At Optiver, our success is largely attributed to our people. While trading is heavily automated, it is still driven by human decisions. To facilitate this, we developed a wide range of applications and GUIs that traders use to make informed trading decisions. These applications and GUIs are primarily written in C#.

In this blog post, we delve into the unique challenges our C# engineers face and the techniques they employ to balance responsiveness, performance, and usability in this fast-paced global trading environment.

The unique challenges of an ever evolving trading environment

Trading is an extremely fast-paced environment that requires constant and relentless innovation. As markets moved from pit trading to electronic trading at the speed of light, the amount of data generated and the resulting performance requirements have skyrocketed.

Our C# engineers must create performant GUIs that can handle large amounts of data, particularly during busy and volatile market conditions. These GUIs must be reliable and responsive to enable traders to quickly make informed decisions. Any unresponsive or crashing applications in this fast-paced environment could lead to significant monetary loss.

As markets continue to evolve, so do our trading strategies and GUIs. Our C# engineers must be flexible and capable of navigating the diverse technical challenges that arise. This requires not only a deep understanding of the language, but also the ability to make strategic decisions regarding its implementation. This results in fast and continuous iteration cycles as we keep innovating and expanding our trading operations.

Go beyond the language

At Optiver, we firmly believe that proficiency in a single programming language, such as C#, does not define who you are as an engineer. While expertise in a chosen language is required, what sets apart a great, performance-oriented engineer is their drive to go beyond the confines of that language.

Creating a performant application involves much more than just writing fast code. It requires interacting with the operating system correctly, understanding the hardware on which you’re running, and efficiently using the network resources at your disposal. You have to be ready to debug complex systems that extend beyond your application, ensuring that the entire stack operates efficiently.

Leveraging problem-solving and technical expertise

While our C# engineers work in tandem with a wide variety of teams, one of their main counterparts are traders. Traders constantly monitor the market and devise new strategies, so they approach our engineers with open-ended challenges. Optiver’s engineers must thoroughly understand these real-world trading problems and translate them into performant software solutions that seamlessly integrate into our systems. This process requires a comprehensive understanding of C#, creative problem-solving skills, system architecture knowledge, and the ability to translate high-level problems into practical solutions.

While trading and engineering work together closely, it is up to our engineers to develop innovative solutions that balance our strict performance requirements with elegantly simple and sustainable software solutions. These solutions must be not only performant for today’s demands but also for tomorrow’s.

Real-life example: 4x performance improvements

Over the years, one of the main trading GUIs started to show signs of a slowdown. The first step to identify the causes of this slowdown involved extensive monitoring and debugging of the application to pinpoint bottlenecks, rather than blindly undertaking a complete rewrite of the entire interface.

When the GUI was first created, it needed to handle significantly less market data as Optiver traded only a couple thousand instruments. Over time, Optiver’s trading volume grew significantly, encompassing hundreds of thousands of instruments, all of which streamed their data into the GUI. The GUI’s performance optimizations were initially focused on application-specific methods, like simple multi-threading, instead of a comprehensive view of the entire system.

The solution, both simple and elegant, drew inspiration from the concept of foveated rendering used in the graphics rendering space. Even though a trader interacted with only a portion of all instruments on the GUI at any given time, the application consistently updated the prices of all subscribed instruments. This approach led to a host of unnecessary UI updates and processing of data that the trader would never see.

To solve this issue, one of our C# engineers proposed the creation of a separate, centralized backend that would handle data subscription. However, the GUI would only receive processed data that was visible to the trader. As the trader interacted with the GUI, for instance scrolling through option strikes, the backend would stream in the required data, and unsubscribe from anything that moved out of view. This process is transparent to the trader and greatly reduces the load on the GUI, making it massively more responsive. The graphs below demonstrate this improvement.

On the left, we can see the CPU usage of the GUI before this update, and on the right, after the update.

The significance of this improvement cannot be overstated. It not only improved the performance of the GUI itself, but it also freed up more CPU resources for numerous other apps, between 20 to 40, that traders run simultaneously. There were no more complaints about slowdowns or crashes, allowing the traders to focus on executing successful trades instead of wrestling with software issues.

We saw an even more drastic improvement when it came to RAM consumption, which reduced significantly due to loading much less data. To achieve this level of performance increase, it was crucial that the engineer didn’t view the GUI in isolation. Instead, they stepped outside of this sphere, viewed the system as a whole, and optimised the entire problem, not just the GUI.

This real-life example is a testament to the way our engineers approach problem-solving: with an acute focus on performance, a deep understanding of the broader system and a drive to innovate.

As markets evolve and trading strategies become more complex, our C# engineers will continue playing a key role in delivering innovative, reliable and efficient solutions. Their deep technical expertise, coupled with their capacity to translate real-world trading challenges into high-performance software, will continue to empower our traders and fuel Optiver’s success.

Apply now

Are you ready to apply your C# expertise in a high-performance trading environment?

Life at Optiver
Insights

Related Articles

  • Series
    Life at Optiver

    From ideation to production: US tech intern summer projects

    Foreword by US CTO, Alex Itkin One of the most exciting parts of summer at Optiver is hosting the ever growing intern cohort. This summer in the US alone we had 35 interns working across our software, hardware and trading infrastructure teams. The goal of the internship is to give students an opportunity to spend […]

    Learn more
    Americas
  • Series
    Life at Optiver

    Tech intern projects at Optiver Amsterdam

    This summer, Optiver’s Amsterdam office hosted a group of tech interns eager to tackle the challenges of market making. Beyond just theory, they worked hands-on with our core trading technologies, directly engaging with some of the most interesting technical challenges in the financial industry.  In this blog post, four of our Software Engineering interns delve […]

    Learn more
    EMEA
  • Series
    Life at Optiver

    The Optiver summer: A transformative experience

    This summer, we proudly welcomed our largest intern season to date across our Amsterdam and US offices. They came from top schools and dove headfirst into the fast-paced world of market making, where they underwent comprehensive training, completed impactful projects, learned from industry mentors and formed lasting bonds with their peers. This wasn’t your average […]

    Learn more
    Global
  • Life at Optiver

    Optiver and P33

    As a tech-driven market maker, Optiver seeks partnerships to help push technology forward and support the next generation of talent. Recently it partnered with P33, a non-profit organization dedicated to driving innovation and economic growth in the city of Chicago. The partnership aims to support and grow the local tech ecosystem in Chicago while creating […]

    Learn more
    Americas
  • Life at Optiver

    Data Visualisation at Optiver: Streamlining trading decisions

    Data visualisation is at the core of effective decision-making in the fast-paced, data-driven world of trading. For Optiver’s traders to access the information they need right when it matters, it’s crucial to display data intuitively and meaningfully.In this blog post, we’ll take you behind the scenes of data visualisation at Optiver and explore how our […]

    Learn more
    Global
  • Life at Optiver

    Inside Optiver’s 12-week training programme

    Meet Ophelia, an Execution Trader who joined Optiver after graduating from the University of Cambridge. Despite having no background in finance or trading, Ophelia was drawn to the fast-paced environment and the opportunity to utilise her quantitative skills. In this interview, she reflects on her experience in the Optiver Academy training programme, shares her favourite […]

    Learn more