HACKER Q&A
📣 mraza007

What programming skills are required by HFT or Trading firms


What are some skills required to land a job in Trading Firm especially in roles like DevOps or developing software. How can a person excel at the technologies required by these firms


  👤 pjmlp Accepted Answer ✓
Basically Java, .NET and C++, with heavy focus on C++.

Being able to write allocation free algorithms, even on GC languages, lock free data structures and good knowledge of all multi-core programming paradigms and distributed computing.

Here are some talks that will give you a small overview into that world,

CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”

https://www.youtube.com/watch?v=NH1Tta7purM

Core C++ 2019 :: Nimrod Sapir :: High Frequency Trading and Ultra Low Latency development techniques

https://www.youtube.com/watch?v=_0aU8S-hFQI

Open source Java HFT code from Chronicle Software, https://github.com/OpenHFT

"Writing and Testing High-Frequency Trading Engines", from Cliff Click

https://www.youtube.com/watch?v=iINk7x44MmM

However in these domains every ms counts, even how long cables are, so also expect Verilog, VHDL, and plenty of custom made algorithms running directly on hardware.

"A Low-Latency Library in FPGA Hardware for High-Frequency Trading"

https://www.youtube.com/watch?v=nXFcM1pGOIE

You can get an overview of the typical expectations here, https://www.efinancialcareers.com/


👤 brianolson
Moral flexibility and subjugation. The boss says to build a thing, you build the thing. If rewriting an infiniband driver and pinning it to a core on the server and processing requests in kernel space in exquisitely crafted C is what cuts reation time by 0.0000005 sec and makes the firm a few extra bucks, that's what you do.

I interviewed at a Manhattan HFT firm (~2015) and that's what they do. The boss noted that "Congress could make a law invalidating our business model" and I realized that would be a good idea. They're not making the world a better place; they're not providing a valuable service; they're just exploiting and extracting and skimming some dollars out of the market. They have money and they're in the right place so their money can grab more money.


👤 hft09876
I've worked at two of what are broadly considered to be the top firms. Most of these comments are inconsistent with my experience.

Everybody's talking about what it takes to write trading systems, but OP asked about "skills required to land a job" not skills needed to do the job. Aside from a few specialized roles (like FPGA dev or security), the firms I'm familiar with only evaluate general dev skills. The interview process is pretty much the same as you'd experience at a top tech company. They don't care at all if you know the languages they use. Once you're in the door, the firm will teach you everything you need to know.


👤 pclmulqdq
I can only speak to HFT.

For dev roles, Python experts (emphasis on expert) and experts in modern C++ have the easiest time. C experts and systems programmers with assembly expertise can also find a job, but the market is smaller for them (although higher-paying).

OS-level and systems programming are valuable. Understanding computer architecture is important, and computer systems as well.

Credentials are an important filtering mechanism for them, so if you didn't go to a top 10 school, your resume needs to make up for it (or you need to be a very experienced hire). Working at a FAANG company or a bank doesn't necessarily make up for not going to a top school.

Successful devs at HFTs usually have a ~50-hour workweek or are very efficient programmers.


👤 organicfigs
I passed the interviews at one of the top stat arb hft firms and it sounds like there are a couple of responses from similar shops here. One thing people haven't mentioned: pedigree. I passed 3 rounds of interviews and my final interviewer was batting for me, when I didn't get the offer, he said the team was apprehensive because I didn't have the pedigree from MIT/Princeton like everyone else. He wasn't a fan of the decision because he worked at a string of failed startups himself prior to starting there, c'est la vie. Also for the curious, he said the salary range was 400-460k with ~3-5 yoe.

👤 emidln
The three biggest skills aren't directly tech: learning fast/efficiently, communication and execution under pressure, and perseverance/discipline to finish/deliver.

Where I work, our devops use a mix of python/ruby/golang/bash for day to day debugging and development. Ability to read, understand, and modify Python (or a similar scripting language) and a familiarity with Bourne/bash are probably the minimum for devops.

For operations, you'd want to bring some skills that add to the team in new skills or redundancy. You'll likely be trained/cross trained in many more. Familiarity with and ability to debug some of the following: databases, networked services (sometimes a pcap replay is all you have), systems troubleshooting, monitoring, queues, or specific hardware and software platforms we use.

At the HFT I work at, we hire Jr and Sr people. For systems people, there is a bit of a divide between trading systems engineers, who work directly with devs and traders on the care+feeding of some corner of our software stack and infrastructure systems that provide shared tooling and substrates (k8s, deployment tooling, continuous integration/delivery, configuration management tooling, additional debugging help, etc). We also have network teams, traditional IT service desk teams, and performance monitoring/improvement teams.

If you're not coming from trading, we still need all of the standard sysadmin and devops skills. We have SSH, Kafka, Zookeeper, MySQL/Maria, tcpdump/wireshark, Linux, Puppet, Docker, Kubernetes, ElasticSearch, Hadoop, etc. We have misc custom file formats but also loads of json , some xml, etc. We integrate open source and proprietary as much or more than we build. Outside of the execution stack, you'd recognize a lot of what we do at any medium-sized tech company.

If you want to talk about life at an HFT, my email is in profile. I came into HFT as an experienced hire from the startup world and currently do builds development.


👤 kasey_junk
HFT and Trading firms are largely like any other firms. They have job postings and the skillset they expect is largely what you’d expect.

https://www.virtu.com/careers/ has a devops role listed within the first 10 results on their careers page. It looks like basically any other modern ops job sheet.

Here is one for DRW https://drw.com/careers/job/1280794 again, not much different than any other firm.

Most software written at trading firms is the same as software written anywhere else. The only real differences are on the actual tick to trade path, where you will see the need for FPGA/ASIC programming, very low level network programming and C/C++ systems programming or on the Quant side which can vary widely but typically involves showing PHD level research skills in some hard math/science.


👤 morelandjs
Suppose you have top notch data science and machine learning chops and also suppose quant shops are willing to hire you regardless of your financial domain expertise.

In such a scenario, is the 99th percentile of quant compensation significantly higher than the 99th percentile of tech company compensation (FANG etc)?

I've always considered this a fork in the road for many---finance versus say advertising--and I'm curious how others with more experience would describe the pros and cons of each.


👤 Jhsto
From the anecdotal experience of developing such software as a side-project for myself, the hardest parts technically were dealing with concurrency and race conditions caused by it. Other skills for prosperity is understanding statistical significance and randomness. Also, writing reliable software and designing both the best-case and worst-case scenarios is required when interfacing with remote systems: brokers return error or exception cases saying you were too slow all the time, which means your software is dependant on that information and must run in probabilistic state conditions while waiting for the answers to remain performant.

👤 notinventedhear
From 4 years in a large public quant house (not HFT): everything upstream of trade execution is Python with very heavy use of numpy, scipy and pandas. This has pros and cons, on balance I'd prefer a better type system, but that everyone in the org can share code has tremendous value at scale.

Briefly, the faster your execution the faster everything else needs to be. Java should be fast enough for almost anything short of HFT + colocation which is super expensive infra wise.

The skills are not different from other backend roles, but you will need to exercise more math with emphasis time series and stats.


👤 idohft
Agreed with the rest, you should just look at job descriptions. Different firms use different technologies, but a devops person will probably be building tooling for monitoring live trading, or GUIs for themselves and traders. These tend to not be as performance-sensitive.

If you want to work on the trading systems, you should be good OS-level and network-level things. And you should probably know C/C++. I think some firms might still use Java.

Good firms have probably been around for a couple of years, so it's unlikely that they'll use the cool new languages of the day.


👤 unixhero
Nobody has mentioned the K language and Q language; and the Kdb+ product from KX Systems. I know many institutions and HFT's use the K Database. It's fast because it crunches data in the CPU cache which is insanely fast.

Reference: https://code.kx.com/


👤 _asummers
Trading firms have many positions available other than the HFT algorithms. There are teams that support those to enable desks (read: startups) to get off the ground quickly (like YC!), analysis teams for doing research for future strategies, accounting, shared service teams, as well as governance teams like risk, compliance, treasury. Depending on the team you're on, your job may be drastically different. I find myself in a role focusing on devops, developer tooling, and team automation, but others on my team focus on data ingestion, financial models on top of the data, UI development for end users. If you're a skilled programmer, there will be a role for you in a sufficiently large firm.

👤 fwsgonzo
These days I would say you should get into OS development and learn about unikernels. Linux should be a solved problem right now and the future would be in OSes that don't have interrupts enabled and you have full control over the CPU cores.

👤 andersonvaz
Worth to mention is the https://lmax-exchange.github.io/disruptor/

A High Performance Inter-Thread Messaging Library used for HFT.


👤 talolard
I used to work for a firm that did FIX parsers for hft. FIX is the standard protocol for financial data. Company’s claim to fame was the fastest parser on standard hardware as opposed to an FPGA and handling the many many dialects of FIX.

A lot of work and skill went to memory layout (minimize cache missed), lock free data structures and spending time in perf looking for ways to shave microseconds off a function.

God knows how I got the job, I was super junior , but that’s the kind of work we did and presumably what other companies would want you competent with


👤 remyp
C/C++ is most common. Good luck getting their attention if you didn’t go to MIT, CMU, Stanford, etc.

👤 pmart123
I used to work in HFT, but haven’t for five years. For core developers, there’s heavy use of C/C++ with a deep understanding of low level programming. On the trade strategy development side, it’s usually some combination of a columnar database, Python/R along with rewriting performance sensitive areas in a lower level language. I won’t be surprised if there was an uptick in the usage of GO the last few years as well.

👤 lalalal123
I worked at one of the top tier prop shops in Chicago. This is my experience there:

Fresh grad devs are generally evaluated on their potential and not what languages and specific skills they know. The people they end up hiring for fresh grad dev roles tended to come from the same six schools. Said schools are generally not top tier (for developers) and are local to Chicago.


👤 madballster
Not exactly known for HFT, but Man AHL use their own library arctic with Python/Pandas and MongoDB. See https://www.youtube.com/watch?v=FVyIxdxsyok - The presentation touches on performance considerations.

👤 cheezebubba
Well you can take a look at their job openings pages:

https://www.hudsonrivertrading.com/careers/

Looks like c++, python, and linux sysadmin stuff.


👤 andrew-nguyen
Besides searching on Glassdoor or Indeed, how can someone find a list of companies that are doing this type of work? Are they limited to the east coast?

I'm not very familiar with the HFT industry, but the skills that they require (C++, computer architecture, OS, networking, & performance) are ones that I'm interested in and would love to deepen my experience with. Are there companies on the west coast (more specifically southern California) where one could develop this experience?


👤 Unklejoe
They usually ask for C/C++, but what they really mean is C++.

👤 throwfin11
HFT firms use all sorts of technologies. But to be clear, you want to be closest to trading - that's where the big money is; so either a) idea generation (quant work) or b) execution (dev work) For the execution piece, C++ would be the most viable option.

On the quant/research piece, python/R/kdb are common tools used, but the real skills are the statistics/math and market knowledge.


👤 necrotic_comp
DevOps - standard tools, depends on the firm

Trading Systems - C++, networking, memory management.

* I work at a HFT firm building algos for clients


👤 mattbl
Here's a nice (old) blog of someone in the industry: https://mechanical-sympathy.blogspot.com/

👤 franze
>How can a person excel at the technologies required by these firms from my fintech experience with the financial departments there ... excel in Excel. it's a whole programming-parallel-world

👤 szczepano
for currencies / commodities

zmq/java - lmax

then there is forex c++ mt4 metaquotes

more hardcore like cheetah-solutions fpga / hdl

don't know about asic

some insides but now inactive https://mdavey.wordpress.com/

there are also options / stocks and cryptocurrencies


👤 dilandau
C++ was big. Comfortable navigating a very large and complex codebase, being able to understand complex rules-based systems, and of course knowledge of equities and financial markets.

But they'll teach you everything you need to know as long as you can pass the interview.