• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

uses of numerical methods/analysis

Joined
8/26/11
Messages
175
Points
28
Having done some coursework in numerical analysis, I am considering taking a grad-level class in the CS dept (my previous coursework was in the math dept) to bone up on my computational credentials.

Is it worth it for an undergrad to have a decently strong background in numerical methods? Are the quant devs hired out of undergrad really going to be doing scientific computation in NumPy, for example? Or should I just focus on refining my C++?

Thanks in advance.
 
Is it worth it for an undergrad to have a decently strong background in numerical methods? Are the quant devs hired out of undergrad really going to be doing scientific computation in NumPy, for example? Or should I just focus on refining my C++?

What do you mean by "refining your C++?" What have you done with it, what can you do with it? If your question isn't precisely worded, how can anyone answer it?
 
The issue here isn't so much my C++ competency (haven't done anything finance related, but have gone through a good part of Stroustrup's book) but whether I'd get to do any numerical analysis-related work coming out of undergrad, or if it's mostly for physics PhDs.
 
The issue here isn't so much my C++ competency (haven't done anything finance related, but have gone through a good part of Stroustrup's book) but whether I'd get to do any numerical analysis-related work coming out of undergrad, or if it's mostly for physics PhDs.

The answer is you probably would if you could. General coders are plentiful, but only a small subset can code scientifically (i.e., can marry coding to numerical analysis). I don't think it's much of an exaggeration to say that a quant is primarily a scientific coder. So numerical analysis will help you and needs to be a part of your toolkit -- even if you're not hired for those skills immediately. Personally I'd look at books like Numerical Recipes by Press et al (3rd ed, Cambridge), where the code is given in C++. There's a similar book on scientific computing in Python published by Springer.
 
General coders are plentiful, but only a small subset can code scientifically (i.e., can marry coding to numerical analysis). I don't think it's much of an exaggeration to say that a quant is primarily a scientific coder. So numerical analysis will help you and needs to be a part of your toolkit -- even if you're not hired for those skills immediately. Personally I'd look at books like Numerical Recipes by Press et al (3rd ed, Cambridge), where the code is given in C++. There's a similar book on scientific computing in Python published by Springer.

So if I'm well-versed in scientific computing but have subpar programming skills, am I still at a disadvantage vis-a-vis veteran programmers/CS majors who don't have the same math background? Basically, I'm asking whether there are positions where my responsibility is to hack up numerical methods in python and not worry too much about code quality.
 
So if I'm well-versed in scientific computing but have subpar programming skills, am I still at a disadvantage vis-a-vis veteran programmers/CS majors who don't have the same math background? Basically, I'm asking whether there are positions where my responsibility is to hack up numerical methods in python and not worry too much about code quality.

The veteran programmer/CS major can't implement even bad and inefficient code for numerical methods: he doesn't understand numerical methods. He and you are applying for different kinds of jobs. The programming skills will also differ -- you as a prospective quant will be interested in those aspects of the language that have to do with implementing numerical methods whereas he will be interested in many other aspects of the language (e.g., regular expressions, off the top of my head). So pick and choose, I guess: do you want to be 1) a programmer primarily or 2) a quant who understands those parts of the language pertaining to numerical and quant methods very well, but has limited time and attention capacity for other aspects?
 
Agree with bigbadwolf. One thing about the Press book, though, is that there's a clause in the intro to the book that says you have to pay to use the code. I love the Press book but unfortunately the way I use it now is to bone up on the coded method before I have to go somewhere else to find a statement of the generalized algorithm that is not subject to such a clause.
 
So pick and choose, I guess: do you want to be 1) a programmer primarily or 2) a quant who understands those parts of the language pertaining to numerical and quant methods very well, but has limited time and attention capacity for other aspects?

2), for sure. My only worry is that the job market for "numerical analyst"-type quants is saturated by PhDs who have very broad knowledge of numerical methods. Outside of the appropriate coursework, how do I make myself stand out?
 
2), for sure. My only worry is that the job market for "numerical analyst"-type quants is saturated by PhDs who have very broad knowledge of numerical methods. Outside of the appropriate coursework, how do I make myself stand out?

You can't in the short term. An elephant has to be eaten one spoon at a time. Any quick answer I gave would be worthless. One thing I've noticed in every area of study is that everyone is in such mad haste to reach the peak that they pass over the foundations without mastering them properly. I've seen it in chess, in math, in physics, in coding. So I suppose one thing to say would be "less haste, more speed." Pay careful and respectful attention to even the ostensibly simple and basic things -- and keep in mind that a lot of people will be impatiently moving past them, without having acquired the necessary skill and dexterity. Not very comforting but that's all I can think of.
 
You can't in the short term. An elephant has to be eaten one spoon at a time. Any quick answer I gave would be worthless. One thing I've noticed in every area of study is that everyone is in such mad haste to reach the peak that they pass over the foundations without mastering them properly. I've seen it in chess, in math, in physics, in coding. So I suppose one thing to say would be "less haste, more speed." Pay careful and respectful attention to even the ostensibly simple and basic things -- and keep in mind that a lot of people will be impatiently moving past them, without having acquired the necessary skill and dexterity. Not very comforting but that's all I can think of.

Not very comforting indeed, haha. But good life/career advice, for sure.
I suppose I'll have to write a senior thesis on a topic related to numerical methods in quant finance and see whether that gets anyone's attention.
 
If it's comforting, you don't always compete against PhDs. There are both positions where only PhDs are considered and positions where the hiring manager doesn't really want a PhD. By the time you're the same age as someone with a PhD on the job market you should have more job experience; so at that point, you could have found ways to make yourself competitive through your professional experience.

There are PhDs who have a harder time entering the non-academic job market than non-PhDs and vice versa. Try to focus on what 'others' know or are learning only to the extent that it guides your own learning rather than thinking about it like an arms race.
 
Any job where you use math and computers would benefit from (or require) numerical analysis.

For example working in derivatives pricing, quantitative portfolio allocation, risk management, mathematical or statistical software development and many financial software development applications.

It is common that on the job you use a base language for coding, so you don't have embedded functions to do the numerical stuff for you (or you may be using a newer method that hasn't been implement in R, Matlab, or you may need to tweak things for what your firm is doing or you may be using a proprietary algorithm or etc.). Even if you use a library, you really need to understand what you're calling with a library when coding in base language.

If you're doing quant programming and aren't doing straight up development (managing interfaces, APIs, etc), scientific computing is probably the primary way you are adding value to your employer on a day to day basis.
 
It is common that on the job you use a base language for coding, so you don't have embedded functions to do the numerical stuff for you (or you may be using a newer method that hasn't been implement in R, Matlab, or you may need to tweak things for what your firm is doing or you may be using a proprietary algorithm or etc.). Even if you use a library, you really need to understand what you're calling with a library when coding in base language.

Thank you for all the information, Jose. In general, which language does this "base language" turn out to be? Do most banks have you use Matlab or R, or maybe Python?
 
I really don't know b/c I've never worked for a bank :) . So hopefully I'm not leading you astray ; I work in the HF area.

What I consider a base language is C, C++, C#, Java, Fortran and some older things (e.g. Pascal). What I consider a scripting language are things like Perl. What I consider an interpreted language is R, Matlab. A lot of these categories get mixed because the languages expand their scope. I haven't used Python, but from what I've heard I think it is something like what I would consider a scripting language and an interpreted language.

I don't know if my usage of terms is standard (probably it is not), but that's how I make sense of the alphabet soup of various programming languages in my own head. There are also languages primarily devoted to web development such as PHP, Javascript, etc (this list is very long). I do not know much about these web type languages.
 
Two other things to mention.

Visual Basic is also heavily used from my experience. Most people do not find Visual Basic particularly hard to learn though. I don't know how I would categorize Visual Basic ; Wikipedia calls it an event-driven programming language if that helps.

Also, one other category is functional programming languages. I don't know to much about this area and I believe functional programming is more like a paradigm than an inherent structure, but the languages I've heard come up are Scheme, Haskell and the Microsoft version is F#. From what I understand, the syntax you use in this functional type is quite unusual and involves a lot of recursion and omits some of the more common programming structures.

Maybe VBA and functional programming are some of the hotter skills these days if that's what you were asking earlier.
 
Another extra note is that you will often use query languages when you interface or query databases. The most common language is SQL and there are different flavors of SQL (MySQL, Oracle, SQL Server).

Very good tutorials for SQL are on the web and the basic usage is fairly straightforward however there are some more advanced nuances to database management.
 
Back
Top