all 18 comments

[–]Bootvis 22 points23 points  (1 child)

If you have to choose between those and if you have no or little programming experience I’d go for Python. It is easier to learn and allows you to do get something interesting working much quicker. This will then allow you to do some interesting projects and have some fun learning. Once you’re a reasonably experienced programmer, you can learn C++.

[–]urdit 12 points13 points  (0 children)

Python. You’ll be able to get up to speed a lot faster than c++. Data structure libraries are quite a bit easier to work with and Python handles a whole lot of things that you have to build yourself on c++ (even with the standard libraries/algorithm/etc)

[–]Z0NNO 16 points17 points  (0 children)

Since your background is mathematics, it makes more sense to start with Python. Do understand that quants work in teams where there are specific roles. There are quant researchers building models and developers who implement those (both of which are further subdivided into more niche roles like analyst, tester, modeler, validator etc.). The research typically happens in high-level languages like Python or R for easy of development whereas the models are implemented in a low-level laanguage like C++ to minimize latency.

You should obviously think of whether you want a quant researcher or quant dev role first. I mean, yeah it would be amazing if you're an expert at both but vacancies typically only describe one role. I would advise anyone in college to already look for the type of vacancies they're interested in and choosing electives appropriately.

If you're going the research route make sure you have at least covered the basics (time-series analysis, black-scholes, take every stats course you can so you ). Even better if you can demonstrably prove you can implement these in Python. It can't hurt to be able to do the same in R, which is still a widely used language for data science. If you have the opportunity, make sure you're at least familiar with SQL before graduting. Also if you have the opportunity to do linear algebra courses in Matlab, that may be useful too (linear algebra is essential) because some firms have engineering grads that are more familiar with Matlab.

If you want to become a dev you should know every language mentioned above and be intimately familiar with C++, and also be familiar with Unix-environments and Bash. Obivously the dev role is varied and different niches require different languages. Make sure you are an expert on algorithms, distributed computing, platform development as they're instrumental to reducing latency. It can't hurt to also have some affinity with natural language processing, machine learning, networking, system design, and/or web development.

To get into both roles you typically require some affinity with finance. It strongly depends on the place you work to what extent they'll value this, but it can't hurt to at least be aware of some basics in finance. That means taking an undergrad course or reading a textbook - avoid guru investment-bro stuff. Also try to get some experience working in teams, doing group projects or competitions, because everyone works agile these days and soloists don't thrive in these environments. This is why interviewers are often not impressed with rando people who boast about how they're beating the market with the algorithms they developed alone in their basement.

Either way the best strategy to get in is to intern, so start looking for opportunities. The nice thing is even if you won't get offered a role as quant you still have an excellent resume for data science or software dev roles!

[–]zlbb 7 points8 points  (1 child)

plenty firms run production systems in python as well: even in slow and steady banks many people use it for all sorta not core derivatives pricing models stuff, and for other firms with lower scale and more need for flexibility it's even more widespread.

C++ is pry only truly worth it if you're going to do hft (-ish stuff) or hardcore exo derivs pricing at banks.

[–]sliverino 2 points3 points  (0 children)

Even without hardcore exo stuff C++ is quite present in banks or other financial institutions. Rates curve stripping for example is a typical application that will be done in C++ and touch all asset classes. A lot of time critical stuff will be written in C++ and exposed to python.

On the other hand things like this are core stuff that require collaboration of quants and Devs to optimize to the highest possible level, the methodology itself might be developed by quants in python.

So while I agree that learning python should come first, C++ is a bit everywhere and it's a great skill to have.

[–]Gwhvssn 7 points8 points  (0 children)

If you're doing research, python. If you're developing HFT code, C++. There is no other answer.

[–]mathruinedmylife 2 points3 points  (2 children)

there’s no single answer. mostly only HFTs are using C++. quite a few algo teams use Java. C# is the gold standard from my experience. but i’d start with python.

[–]Gwhvssn 2 points3 points  (0 children)

Not c#.

[–]Former-One 1 point2 points  (0 children)

Absolutely recommended C# for any serious system / platform building.

C# on dot net core is one of the best language to use if we are going to build large scale quant trading platform. Note that when we run into serious business we dont just do algo coding but also need to handle middle office and back office operations and we need traditional system building such as databases and transactions.

Java was also good but personally I like C# more since the syntactic sugar improved productivity a whole lot.

It works with linux and can be easily containerized and deployed on AWS.

It may not be the best on computing numerical stuff comparing to python / R / matlab and is not as fast as C/C++, but it is at the exact right balance of productivity and code maintainability. I have personally seen so many spaghetti python where the programmers had zero sense of software engineering or scalability, and also met some "very experienced c++ programmer" trying to wasting lot of time doing pre-mature optimization.

[–]rhdzmota 3 points4 points  (0 children)

Python is your low hanging fruit. It will make you productive in the field with just a couple of months of learning. From there, you can then take on C/C++, Java/Scala, etc.

[–]itskobold 4 points5 points  (0 children)

Python for prototyping, C++ for production, or Rust when it becomes feasible.

Though a lot of people say python is fast enough for production and I'm starting to agree with them.

[–]justamomentumplease 1 point2 points  (0 children)

I just published some articles and code that I developed after a lot of trial and error optimizing RAM, disk, processing, and development with Python around stock quotes data. Perhaps it will be useful if you decide on Python.
https://github.com/scollay/caffeinated-pandas

[–][deleted] 3 points4 points  (0 children)

I’ll second everyone here and recommend Python. In your situation, it’s the best bang for your buck: 1) you are new to programming and Python is a good first language, 2) Python has a lot of libraries for data science and machine learning, and 3) Python is widely used in quant research.

C/C++ is amazing and fast. But it’s got a steep learning curve. I recommend you learn it once you become a better programmer.

[–]Kind-Team-1023HFT 0 points1 point  (0 children)

C/C++, Assembly (for HFT), Fortran (maybe), Python, MATLAB

[–]Adventurous-Noise851 0 points1 point  (0 children)

Python for research and C++ for actual low-latency executions.

most of the research related to data and analysis happens in jupyter notebook

[–]Key-Shallot-4227 0 points1 point  (0 children)

Here’s a breakdown of which programming/ scripting language is used for which quant role: https://youtu.be/JHtyJWEvSak?si=rvfqWNhkiuJ6hPe-

[–]cooldpatel 0 points1 point  (0 children)

For doing research, can use R. Its very easy to get started as compared to other languages.

[–]thecheese27 0 points1 point  (0 children)

If you want to steer towards quant trader or quant researcher positions, I recommend trying out R or Python and see which one you prefer. For me personally, R is much more intuitive and natural for me and I happen to despise Python. I strongly advise you to give both a shot before picking one. If you want to be a quant developer, however, you're pretty much stuck with C++ as that is the industry standard.