Serving the Quantitative Finance Community

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

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

January 13th, 2008, 5:37 pm

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.
 
User avatar
Dr.Brown
Posts: 8
Joined: December 31st, 2007, 9:57 pm

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

January 13th, 2008, 6:17 pm

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.
 
User avatar
Yura
Posts: 585
Joined: February 11th, 2006, 11:28 pm

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

January 13th, 2008, 9:10 pm

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!
 
User avatar
maximillian
Posts: 9
Joined: November 7th, 2007, 3:24 am

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

January 13th, 2008, 11:37 pm

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
 
User avatar
msperlin
Posts: 608
Joined: July 10th, 2006, 6:21 pm

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

January 14th, 2008, 12:01 am

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.
 
User avatar
twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

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

January 14th, 2008, 1:59 pm

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.
 
User avatar
hitodama
Topic Author
Posts: 3
Joined: December 17th, 2007, 9:59 pm

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

January 14th, 2008, 2:26 pm

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?
 
User avatar
Yura
Posts: 585
Joined: February 11th, 2006, 11:28 pm

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

January 14th, 2008, 2:43 pm

I recommend the book by Stanley Limppan "Essential C++". It's good and it's only 300 pages.
 
User avatar
twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

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

January 14th, 2008, 4:57 pm

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++.
 
User avatar
ArthurDent
Posts: 1166
Joined: July 2nd, 2005, 4:38 pm

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

January 14th, 2008, 5:18 pm

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.
 
User avatar
twofish
Posts: 4944
Joined: February 18th, 2005, 6:51 pm

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

January 14th, 2008, 7:09 pm

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.
 
User avatar
Cuchulainn
Posts: 64436
Joined: July 16th, 2004, 7:38 am
Location: Drosophila melanogaster
Contact:

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

January 14th, 2008, 8:27 pm

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
 
User avatar
hitodama
Topic Author
Posts: 3
Joined: December 17th, 2007, 9:59 pm

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

January 14th, 2008, 10:45 pm

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
 
User avatar
willsmith
Posts: 281
Joined: January 14th, 2008, 11:59 pm

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

January 15th, 2008, 11:54 pm

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!
 
User avatar
tagoma
Posts: 18613
Joined: February 21st, 2010, 12:58 pm

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

March 26th, 2021, 9:15 am

Why banks need C++ developers more than ever

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