Necessity of Extensive Programming Experience

I have a couple questions about the prop shops and the hedge funds with a quantitative bent.

How much programming should you have ideally, or at the at a minimum, to be competitive in the eyes of these firms (i.e. Jane Street, DRW, Citadel, etc.)? I have the option of doing a few courses in Java, or C/Unix, or C++/VBA but I probably can't do a combination. Which language would help me in trading roles?

Is it even worth focusing on those firms if you aren't so committed to programming your whole life? I.e. if I were interested in quantitative trading but wanted to understand fundamentals, should I bother with the algo/quant firms or should I just focus on regular trading positions?

Thanks.

 

Not sure what job function you're looking for, but for the FTAP program at Citadel, they typically look for a CS or Comp E degree or equivalent coursework. We are talking about data structures, a 300-level systems course, algorithms courses going up to the 400-level, and maybe a numerical methods course just for good measure. The program teaching the courses should be a top-five or maybe top-ten CS or Comp. E institution; think something along the lines of Stanford, Berkeley, CMU, MIT, Cornell, Rose-Hullman, Ga. Tech, Illinois, or UT. This would probably be the bare minimum. TAing a relevant 300+ level CS or CE course or extensive project experience would also be a plus for the FTAP program.

A simple programming course involving Java or VBA never hurts, but if you want to be putting together the trading algorithms and writing the strategies, you really need about 5-10 courses in CS/CE from a really strong program. That doesn't mean you need a CS or CE degree; it just means you need the background.

If you're going to be having conversations about implementing trading algorithms, you need to be able to discuss algorithmic complexity/Big-O runtimes like you're talking about multiplying single-digit numbers, know how to apply the Master Theorem, talk about NP-completeness, the advantages and limitations of a radix sort vs. a divide-and-conquer sort, whether to use a HashSet or a LinkedList or a Tree, the list goes on and on and on.

Recent questions I've come across in the past two months just as a quant developer:

-How do you mitigate algorithmic complexity where you have a 2-D map and need to determine which points are closest?

-We have all of these data points, but need to display an aggregate view of them- the catch, though, is that you can filter on them by setting a start point and an end point. How do we cache aggregate information about the data points to make our queries run in closer to log(n) time rather than O(n) time where n is the number of data points?

Answering both of these questions- questions which require a lot of creativity to solve- had a seven figure impact on the firm's bottom line.

This is really exciting stuff for a nerdy programmer like me who enjoys the intersection of math, finance, and computational theory, but is that something you want to do? Or would you rather just focus exclusively on the finance or maybe the math and finance, but avoid the algorithms stuff?

 

thanks for the reply. I definitely want the finance and math but I'm afraid the lack of programming background's going to fuck me over for the jobs that I find appealing. I have more of a stats and quantitative finance background and definitely like programming, but don't want it to be the focus of everything...

 
boondogle:
thanks for the reply. I definitely want the finance and math but I'm afraid the lack of programming background's going to fuck me over for the jobs that I find appealing. I have more of a stats and quantitative finance background and definitely like programming, but don't want it to be the focus of everything...
Sounds like a good reason to go get an MFE. Take a look at the prereqs for Columbia, CMU, Princeton, NYU, and Chicago and see what you would need to get in. I think a discrete math course that includes discussions on basic graph theory, proof techniques, and Big-O notation would be helpful if you don't have it already, as well as a data structures course. Numerical methods would also be helpful if you have the time.
 

I'm not sure grad school's in my future but I have the option of taking a few classes now; would taking a numerical methods class in python help? or would it be useless as a standalone?

 
yes it would help, but if you have mathematical aptitude, you should be able to pick up any programming language pretty easily.... all it is is logic and math

Most programming courses (besides the first) aren't designed to teach you how to program in a certain language, as it is assumed that once you learn how to do well in one imperative programming language (IE: C, Java, C++, VBA; not Ocaml or Scheme), you can program in anything.

The data structures and algorithms courses I'm recommending focus more on concepts rather than syntax/semantics. What is a binary search tree? How do we get a sorting algorithm down to O(n log n) time? When should I use the Newton-Raphson method for finding where two functions intersect? When should I use secant method? What's the fastest way to factor a matrix?

If you don't NEED engineering and CS courses, I recommend not taking them; a math major like CC probably had the deck stacked against him trying to compete against engineers and CS majors. :D That said, the stuff they cover here isn't stuff you can pick up in a book, and it makes the difference between having a trading strategy being functionally broken and being able to kick DRW's butt.

If you're going to be doing the kind of programming a typical MFE will be doing, a data structures course and a basic CS theory/discrete math course that covers propositional logic, order-of-complexity, and graph theory will be REALLY helpful. Learning imperative programming lets you do about 70% of what a CS or Comp E major can do, but the problem is that most of the value these days is in the last 30%. Data structures, numerical methods, and a basic CS Theory/Discrete Math course will let you cover 85% of the situations a financial programmer will run into and effectively double your value when it comes to programming.

 

Is there a distinction between what you need to know for systems/implementation roles (such as FTAP that you described), and an investment strategy/research role? Can I get away with not knowing programming/algorithms in the latter? What do places like Citadel look for in candidates for the latter role? Thanks.

 
chewingum:
Is there a distinction between what you need to know for systems/implementation roles (such as FTAP that you described), and an investment strategy/research role? Can I get away with not knowing programming/algorithms in the latter? What do places like Citadel look for in candidates for the latter role? Thanks.
My understanding was that FTAP was also a strategy-heavy role as it recruited quants and algorithmic traders.

You can get away without programming knowledge in algorithmic trading if you're a quant, but it's hard to be an algorithmic trader unless you are implementing the strategies or understanding exactly what's going on behind the scenes. And implementing the strategies requires writing fast code. Understanding it still requires a knowledge of threading, data structures, and algorithms.

 

drex, are analyst that know VBA more efficient than analyst w/o VBA knowledge? I might take a VBA class next semester if you would recommend it for someone entering IB for a 2 year analyst stint and then moving onto PE?

Thank you!

 

If u r trading distressed debt or something not so much otherwise most of your time when you start will be fixed spreadsheets and stuff so basic skills are essential

 

A lot of prop desks and hedge funds make a lot of use of MATLAB from what I understand. This might result from use of its finance and derivatives toolkits, but I am not sure. Most hardcore coders would rather use this environment than excel it seems.

 

C++ is used very often...this is because it is very quick (multiple for loops in matlab make it deaaaadly slow). Also, you may think that excel can do anything because this is what you see on a desk, but behind excel there are these funny things called dll's which is a way for excel to run a C++, Matlab or whatever program...;)...so some coding skills are not bad at all...

 

C++ is used behind the scenes in Excel as you obviously know but there are specialist teams to do this for you (at least at my bank) and in general my VBA skills have been far in excess of what I've needed to do - having said this let me emphasise that I'm an EM rates trader so no stat-arb etc going on...... it's a less quantitive field

 

my friend at BB who is a Credit trader doesn't use programming language at all in his daily work. I think it's not exactly whether or not you can write a code, rather they value the mindset and logical nature of people who can do programming. I did 2 years c++ in high school, but it requires you to break down complex problems into manageable chunks (functions), and link them all.

Excel sucks when you need to do a loop... I had to simulate water levels in system of dams, the total filesize to get final answer was about 300mb in 5 seperate files. In c++ it would have been a 50kb job.

 

Thanks for the input guys; I have some programming background as I took a two-semester course on VB and Java in high school. I might just brush up on some programming basics through self-reading/study.

 

My background is actually in real programming but I haven't found that, in of itself, particularly useful. What has been great has been the ability to pick up vba really quickly and use it to provide things that were useful to the desk

 

If you get hired, you will be good enough to pick up whaetever 'language' they throw at you. You dont need any programming language skills - though if you are an eng lit major and the most you do with your pc is browse the net and use itunes and have had to call windows helpdesk more than once, it may be a challenge.

Desks frequently use different meta-languages (many a time internally developed, at least mine does) to do a lot of the pricing / structuring. And analysts / associates are the ones who do the coding part. You dont need to know any language but it will be assumed that you are comfortable putting some logical sequence together (that is all code is!)

 
jc_nyc:
If you get hired, you will be good enough to pick up whaetever 'language' they throw at you. You dont need any programming language skills - though if you are an eng lit major and the most you do with your pc is browse the net and use itunes and have had to call windows helpdesk more than once, it may be a challenge.
Correction: In this case likely a MAC.
 

Yes, these are all true. I wish they would have told me that when I was in school, but I wish I would have taken more CS courses (other than the one mandatory one that I took when I was 18....and can't remember anything that I learned). Even trying to read books/online about VBA and Macros are challenging because most of the time, they aren't relevant to what I'm trying to achieve on-the-job.

 

Omnis earum et ut et. Aperiam quis dolore laborum eveniet. Dicta dolores perspiciatis quis modi aperiam qui. Hic quis est pariatur ducimus recusandae magni illo. Et sint eligendi quidem ut.

G Gekko
 

Molestiae blanditiis sed beatae distinctio cupiditate vero. Voluptates maxime laborum corrupti qui et veniam.

Et dolores at consequatur vero nesciunt. Placeat doloribus hic id dolores dignissimos dolorem dicta. Odio corrupti suscipit harum. Distinctio ut commodi iure quae in accusamus eos.

Nam qui quia eveniet. Eaque modi numquam quidem quo non. Enim nulla quaerat vel quis consequuntur.

Career Advancement Opportunities

April 2024 Investment Banking

  • Jefferies & Company 02 99.4%
  • Goldman Sachs 19 98.8%
  • Harris Williams & Co. New 98.3%
  • Lazard Freres 02 97.7%
  • JPMorgan Chase 03 97.1%

Overall Employee Satisfaction

April 2024 Investment Banking

  • Harris Williams & Co. 18 99.4%
  • JPMorgan Chase 10 98.8%
  • Lazard Freres 05 98.3%
  • Morgan Stanley 07 97.7%
  • William Blair 03 97.1%

Professional Growth Opportunities

April 2024 Investment Banking

  • Lazard Freres 01 99.4%
  • Jefferies & Company 02 98.8%
  • Goldman Sachs 17 98.3%
  • Moelis & Company 07 97.7%
  • JPMorgan Chase 05 97.1%

Total Avg Compensation

April 2024 Investment Banking

  • Director/MD (5) $648
  • Vice President (19) $385
  • Associates (87) $260
  • 3rd+ Year Analyst (14) $181
  • Intern/Summer Associate (33) $170
  • 2nd Year Analyst (66) $168
  • 1st Year Analyst (205) $159
  • Intern/Summer Analyst (146) $101
notes
16 IB Interviews Notes

“... there’s no excuse to not take advantage of the resources out there available to you. Best value for your $ are the...”

Leaderboard

1
redever's picture
redever
99.2
2
BankonBanking's picture
BankonBanking
99.0
3
Secyh62's picture
Secyh62
99.0
4
Betsy Massar's picture
Betsy Massar
99.0
5
GameTheory's picture
GameTheory
98.9
6
dosk17's picture
dosk17
98.9
7
kanon's picture
kanon
98.9
8
CompBanker's picture
CompBanker
98.9
9
Kenny_Powers_CFA's picture
Kenny_Powers_CFA
98.8
10
numi's picture
numi
98.8
success
From 10 rejections to 1 dream investment banking internship

“... I believe it was the single biggest reason why I ended up with an offer...”