XTX Markets is a leading quantitative-driven electronic market-maker partnering with counterparties, exchanges and e-trading venues globally to provide liquidity in the Equity, FX, Fixed Income and Commodity markets. We provide consistent liquidity, helping market participants throughout the world obtain the best prices in the various assets classes we cover, regardless of changing market conditions.
We are a diverse organization which attracts outstanding talent from across all industry backgrounds. We are focused on teamwork and our people collaborate on all aspects of the business, working openly and with respect for each other, our clients and the market. We strive for excellence in everything we do.
At XTX Markets technology is our business. Our competitiveness is determined by the collective intellectual power of our people who collaborate on solving the most interesting problems in financial technology. Our culture is non-hierarchical and one where everyone is valued.
We are looking to expand our low-latency C++ team. We have hundreds of Linux servers located at tens of financial exchanges around the world, and we design/build/maintain the entire software stack which runs on them. We’re not serving up adverts, or worrying about user acquisition metrics, or building software for a faceless third party – everything we build is for our own use, and we use what we build to trade over 150 billion dollars worth of assets every day, all in a completely automated manner.
- You should have a strong knowledge of modern C++ (C++11 onwards). We use a lot of modern C++ (we have the advantage of a completely post-2011 codebase) and have been eager to adopt features from C++14/17 as soon as they are released (std::optional and std::any finally!), you’ll even see some C++20 features in use throughout our codebase (we’re a big fan of string literals as a template parameter).
- We expect a strong understanding of what really is going on inside a computer when your code is running, for example caching, paging and system calls, as well as how these work and why they work like that. Knowledge of the execution pipeline in a modern CPU is even better: when are instructions executed out of order, why would they be, how is the branch target predicted for an indirect call? A lot of our code is very high performance, and the only way to achieve that is by understanding what’s really going on when it’s executed.
- You should have a good competence in mathematics, at the very least being comfortable with calculus and matrices. Much of our work involves designing and implementing numerical algorithms, for example, a previous project involved developing a new technique to solve NP-hard integer-programming problems with special structure (we saw a 100,000x increase in performance in some pathological examples!).
- You should have a good familiarity with common algorithms and data structures and their performance trade-offs, as well as the ability to reason about the running time of algorithms that you haven’t seen before. Although traditionally this would be covered in a computer science degree most of our existing team are self-taught, so a computer science degree is not necessarily a prerequisite.
You will often have to work independently designing complex systems that need to run uninterrupted for long periods of time, so practical experience designing and implementing software systems is a plus.
All of our development is in a Linux environment, in fact, many of us run Linux on our desktops also, so familiarity with the Linux command line and common tools is a plus but by no means a necessity.
We use a lot of Python for less performance critical tasks (we try and keep as much business logic out of C++ as possible), so familiarity with Python or another scripting language is a plus. If not then don’t worry, it’s easy to learn.
Prior finance knowledge is not required.
Please apply by sending your CV to firstname.lastname@example.org, with the reference to the position you are applying for in the Subject of the email.