Serving the Quantitative Finance Community

• 1
• 2

hitodama
Topic Author
Posts: 3
Joined: December 17th, 2007, 9:59 pm

### thinking about quant work in the future, how should I approach programming

I'm currently a first year graduate student in a mathematics Ph.D program in the US (I'm planning to specialize in mathematical physics). I understand that the job market can be tough in academia so I want to start accumulating a more diverse skill set, especially skills that come in useful in quantitative finance. The one area that I think I'm weakest would be programming, I have played around with programming and I'm pretty computer literate but I haven't implemented any particularly complex algorithms or worked on any large programming projects.I want to know what the best approach for me to start getting a more robust programming education would be. Right now the language I'm probably the strongest in is Haskell along with some familiarity with LISP. I really enjoy functional programming but reading the forums it seems that C++ is the language required for the vast majority of jobs. I'm deciding whether I should drop Haskell and start learning C++ from the beginning or if I should keep learning Haskell and maybe start looking at Ocaml and F# as well. I'm at least four years away from beingdone with graduate school so this is a long-term plan.

Dr.Brown
Posts: 8
Joined: December 31st, 2007, 9:57 pm

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: hitodamaI'm currently a first year graduate student in a mathematics Ph.D program in the US (I'm planning to specialize in mathematical physics). I understand that the job market can be tough in academia so I want to start accumulating a more diverse skill set, especially skills that come in useful in quantitative finance. The one area that I think I'm weakest would be programming, I have played around with programming and I'm pretty computer literate but I haven't implemented any particularly complex algorithms or worked on any large programming projects.I want to know what the best approach for me to start getting a more robust programming education would be. Right now the language I'm probably the strongest in is Haskell along with some familiarity with LISP. I really enjoy functional programming but reading the forums it seems that C++ is the language required for the vast majority of jobs. I'm deciding whether I should drop Haskell and start learning C++ from the beginning or if I should keep learning Haskell and maybe start looking at Ocaml and F# as well. I'm at least four years away from beingdone with graduate school so this is a long-term plan.Best thing you can do is look at the current job listings, find the kind of jobs you will want to have, then see what kind of computer skills they are looking for. The current industry standard for quant finance jobs is c++, and doesn't look like that is going to change anytime soon.

Yura
Posts: 585
Joined: February 11th, 2006, 11:28 pm

### thinking about quant work in the future, how should I approach programming

There is theory and there is reality. You should study models in theory and then try to implement them in reality. After you've done that several times you realize what reality is and that now you can put something of the table. You have less questions about what you need to study and what you don't, you can figure that out yourself. So, I recommend that way. I also recommend studying Quanlib at least a little bit. It will give you an idea about how professionals put big quant things together. In reality, I mean on the job, everything is already implemented and put together (at least this is an impression at first), so it's very important to know how to be a part of a big system.I also highly recomment studying MATLAB. I even recommend starting with MATLAB, because even though headhunters ask for it less, it is still very popular and extreamly useful. MATLAB is awesome! I love MATLAB!Cheers!

maximillian
Posts: 9
Joined: November 7th, 2007, 3:24 am

I would say make the investment in learning C++. You should have some knowledge of object oriented programming and C++ seems to be the standard for quant work. I learned from a book by Deitel and Deitel and it is very good for beginners to programming and also covers advanced topics. MATLAB would also be great. You can buy a student version for about $100 and has good documentation for starters. Used heavily in academia and industry.If you don't want to buy it Python is a good (and free) substitute.m msperlin Posts: 608 Joined: July 10th, 2006, 6:21 pm ### thinking about quant work in the future, how should I approach programming QuoteOriginally posted by: maximillianMATLAB would also be great. You can buy a student version for about$100 and has good documentation for starters. Used heavily in academia and industry.If you don't want to buy it Python is a good (and free) substitute.mPython (with numpy) is good, but octave is much closer to Matlab then python. I think that, for simple routines, you can actually copy and paste lines from one to another without any modification in the code.

twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: davidrisingBest thing you can do is look at the current job listings, find the kind of jobs you will want to have, then see what kind of computer skills they are looking for. The current industry standard for quant finance jobs is c++, and doesn't look like that is going to change anytime soon.The current industry standard for quant finance jobs is c++ plus some other technology to get around the limitations of C++. There is at least one investment bank that is heavily into Haskell, and so I wouldn't learn C++ instead of Haskell but rather C++ in addition to Haskell. Also experience in interfacing C++ with "alien technology" is a useful skill.The big piece of advice is to work on "real code". Download some open source project with hundreds of thousands of lines of code, and try to make sense of it, and make some sort of improvement to it.

hitodama
Topic Author
Posts: 3
Joined: December 17th, 2007, 9:59 pm

### thinking about quant work in the future, how should I approach programming

Thanks for all the replies to my initial question, it seems that C++ knowledge is fairly essential. What would be the best way to start learning C++ giventhat I have no C or OOP experience? It seems that the bulk of learning is going to be from applying and observing code in real world projects but before that I need some basic knowledge about C++, are there any particular books or other resources that you guys would recommend for getting started?Another question which is targeted at twofish, do you know which particular areas of finance this investment bank is applying haskell to?

Yura
Posts: 585
Joined: February 11th, 2006, 11:28 pm

### thinking about quant work in the future, how should I approach programming

I recommend the book by Stanley Limppan "Essential C++". It's good and it's only 300 pages.

twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: hitodamaIt seems that the bulk of learning is going to be from applying and observing code in real world projects but before that I need some basic knowledge about C++, are there any particular books or other resources that you guys would recommend for getting started?http://www.ibiblio.org/pub/docs/books/eckel/has some good stuff, and it's free.QuoteAnother question which is targeted at twofish, do you know which particular areas of finance this investment bank is applying haskell to?One general problem in financial is specifying complex payoffs, and since payoffs are a complicated function, it makes since to use a functional language to do this. One thing that lisp, haskell, and ML are good at doing that C++ is particularly bad at doing is specifying complex functions. For example, in any functional language, it's quite easy to create a functional called "Americanize" which takes some bizarre payoff you've already created and turns it into an American version of that option. You can't really do that easily with C++.

ArthurDent
Posts: 1166
Joined: July 2nd, 2005, 4:38 pm

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: twofishOne general problem in financial is specifying complex payoffs, and since payoffs are a complicated function, it makes since to use a functional language to do this. One thing that lisp, haskell, and ML are good at doing that C++ is particularly bad at doing is specifying complex functions. For example, in any functional language, it's quite easy to create a functional called "Americanize" which takes some bizarre payoff you've already created and turns it into an American version of that option. You can't really do that easily with C++.Aren't C++ templates, visitor pattern etc intended for this kind of scenario you describe - "Write a functional operator that can take functions with the appropriate signature and create a new function"? Agreed they are not easy (Cuchulainn would probably disagree ) but the mechanism exists, no? Obviously a functional language would help, but how much work is it to integrate C++ with Haskell/Ocaml? And what happens to efficiency?
Last edited by ArthurDent on January 13th, 2008, 11:00 pm, edited 1 time in total.

twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: ArthurDentAren't C++ templates, visitor pattern etc intended for this kind of scenario you describe - "Write a functional operator that can take functions with the appropriate signature and create a new function"?The trouble is that for that to work you have to have had everything fit a very inflexible framework, and it's nothing that you can add to on the fly.QuoteObviously a functional language would help, but how much work is it to integrate C++ with Haskell/Ocaml? And what happens to efficiency?Lot of work, but that's what programmers are for. Writing really efficient code to do this is also what makes the problems not easy.

Cuchulainn
Posts: 64687
Joined: July 16th, 2004, 7:38 am
Location: Drosophila melanogaster
Contact:

### thinking about quant work in the future, how should I approach programming

QuoteOriginally posted by: ArthurDentQuoteOriginally posted by: twofishOne general problem in financial is specifying complex payoffs, and since payoffs are a complicated function, it makes since to use a functional language to do this. One thing that lisp, haskell, and ML are good at doing that C++ is particularly bad at doing is specifying complex functions. For example, in any functional language, it's quite easy to create a functional called "Americanize" which takes some bizarre payoff you've already created and turns it into an American version of that option. You can't really do that easily with C++.Aren't C++ templates, visitor pattern etc intended for this kind of scenario you describe - "Write a functional operator that can take functions with the appropriate signature and create a new function"? Agreed they are not easy (Cuchulainn would probably disagree ) but the mechanism exists, no? Obviously a functional language would help, but how much work is it to integrate C++ with Haskell/Ocaml? And what happens to efficiency?Functional programming is applied Category Theory (this used to be a quiche mathematics subject in university)STL has some functionality to handle functions, composition of functions but I find it a bit cumbersome. Depends on what you by 'complex functions' but F# might an idea, it look maybe interestin, who knows? I have written some template functions (vector, vector-valued) for euclidean space that I can use for DEs but no more. It means I only need one class. What is needed is how map spaces using FO techniques, then you could do it in a few lines of code. I suppose lisp can do this already. There's a lot of stuff in C++ apps that is more functional than 'pure' OO.boost has some stuff but I have not used it.FC++boost lambdaThe devil you know I suppose; if it's anything like STL it should be good and this shortens the learning curve. Has anyone used these? Quotein any functional language, it's quite easy to create a functional called "Americanize" which takes some bizarre payoff you've already created and turns it into an American version of that option. You can't really do that easily with C++.can you explain a bit more? Are you referring to 'views' of an option?Everything is possible in C++ with the correct design being done beforehand. Downside is it might take much longer than in Haskell.
Last edited by Cuchulainn on January 13th, 2008, 11:00 pm, edited 1 time in total.
"Compatibility means deliberately repeating other people's mistakes."
David Wheeler

http://www.datasimfinancial.com
http://www.datasim.nl

hitodama
Topic Author
Posts: 3
Joined: December 17th, 2007, 9:59 pm

### thinking about quant work in the future, how should I approach programming

QuoteQuotein any functional language, it's quite easy to create a functional called "Americanize" which takes some bizarre payoff you've already created and turns it into an American version of that option. You can't really do that easily with C++.can you explain a bit more? Are you referring to 'views' of an option?Everything is possible in C++ with the correct design being done beforehand. Downside is it might take much longer than in Haskell.I think he may be talking about something along of the lines of what is described in this paper

willsmith
Posts: 281
Joined: January 14th, 2008, 11:59 pm

### thinking about quant work in the future, how should I approach programming

My career thus far has been 70% programming, 20% finance and 10% project management. I'm hoping to ramp up the finance. I only have a first degree (Computer Science).From looking at the quant job adverts, clearly C++ (or possibly Java) is pretty much a prerequisite if you want anything but the most pure-maths of roles. But why not try some VBA as well? You get good at prototyping stuff and it's much more satisfying to see your stuff turned into graphs and charts than just dumping out a list of numbers. I'd say with a maths PhD, VBA, C++, quant knowledge you'd be hard to turn down!

tagoma
Posts: 18680
Joined: February 21st, 2010, 12:58 pm

### Re: thinking about quant work in the future, how should I approach programming

Why banks need C++ developers more than ever

is this article relevant/reflecting of an actual job trend, please?