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/
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.
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.
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.
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.
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.
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.
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.
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.
Reference: https://code.kx.com/
A High Performance Inter-Thread Messaging Library used for HFT.
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
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.
https://www.hudsonrivertrading.com/careers/
Looks like c++, python, and linux sysadmin stuff.
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?
On the quant/research piece, python/R/kdb are common tools used, but the real skills are the statistics/math and market knowledge.
Trading Systems - C++, networking, memory management.
* I work at a HFT firm building algos for clients
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
But they'll teach you everything you need to know as long as you can pass the interview.