I disagree, having worked on Wall Street for a couple of years. Finance prefers that you learn these sorts of things on the job. It's much better received to have majored in math or computer science than business, at least for an undergrad.
It's also very unlikely that Soros is going to have an undergraduate building new quant models in his first year. If he's lucky, he might get to write the code to test someone else's models. There really isn't an undergraduate course that sets you up to be a quant, and most quant jobs are unattainable without a PhD.
An MFE degree (Master's in Financial Engineering) can give you the basic skills expected of a junior-level quant trader, but tends to underplay a critical component: programming. (Most quant jobs are programming jobs; unfortunately, the lingua franca is C++, and at most financial firms, the quants are strong mathematicians but third-rate coders.)
"at most financial firms, the quants are strong mathematicians but third-rate coders."
Truer words have never been written. Various friends of mine who are former mathematicians / physicists now working as quants do rock at stochastic calculus, but suck at C++. Maybe a solution would be to separate the coding tasks from the modeling tasks. A friend of mine recently took a quant position at a hedge fund, and while he gets to do a lot of modeling and data analysis, the actual implementation is carried out by a 1st rate coder with whom he works in tandem. That sounds very smart to me...
What's your take on why this is? It is very perplexing to me: my intuition says that strong math almost implies suitability and predisposition for strong programming. Why is this not the case?
I am not supplying a guess now, because this comes as a total surprise.
People who are really good at math often find programming boring and mundane. I used to work with some guys who had physics PhDs from MIT and they all referred to their programming jobs as "whoring." I've read a few articles about Stephen Wolfram where he makes the admission that he can't stand programming.
I'm not very good at math but I'd prefer working through a trigonometry textbook to working on another ruby on rails website.
I'm pretty good at math (broke 50 on the Putnam) and I don't find programming to be boring. On the other hand, knowing that I've had problems with jobsite boredom in my past, I'm pretty sure that I'd hate the majority of programming jobs out there. Lisp and Haskell, which make programming beautiful in the mathematical sense, make a lot more sense to me than Java, and tasks like chasing down dependencies and hacking makefiles I find painful.
The type of programming and the language matter a lot. Most PhDs despise programing because of the problems they encounter in the professional sphere: most numeric programming focuses on details (numeric behavior of algorithms, efficiency in speed and memory use) that most researchers would find boring. A cutting-edge algebraist doesn't want to spend his time cutting clock cycles off of a vanilla matrix multiplication, nor does an academic analyst ("analysis" being a specific field of math, as in real/complex analysis) want to spend his time fretting over the (often jarring and unpredictable) discrepancies between floats and real numbers. There are people who love those kinds of problems, but they're rarely research mathematicians.
I find cutting clock cycles quite gratifying. Admittedly there is less math in that than having a bottom-up understanding of what's going on. But you could also reframe it like any other optimization problem, given some number of inputs of a certain type. You can also prove your solution correct. It is a math problem all over.
Is it safe to say that those that despise programming, also despise certain branches of math?
I should add a little story. I once asked one of my friends who is very gifted in math why he prefers CS instead of pure math. His answer was something like: CS is the only field where mathematical truths can be immediately applied to reality (within the machine). It's a good balance between limitless mental masturbation and unpredictability of nature.
Is it safe to say that those that despise programming, also despise certain branches of math?
Yes. At the graduate level, the various branches of math are quite different, especially between pure vs. applied. A logician would probably not enjoy a course that involved a lot of PDEs, for example.
That's quite probable. Honestly, I can't understand why purists tend to dislike PDEs. I mean... Terry Tao does PDEs and he's a Fields medalist! Is it because PDEs are usually associated with Physics, and hence, are not "pure enough"?
Strong math background implies an ability for solving problems analytically. Programming requires this, but also requires a fair amount of implementation work which may not be related to the core analysis problem.
Speaking strictly for myself (physics grad), it's easy for me to get caught up in some sort of interesting data analysis, but programming can be a bore because it involves so much extra stuff. I firmly believe that this is the reason software like Matlab survives: not because its analysis functions are faster or better, but because it tends to push everything but the math and visualization out of the way.
Ah, actually, I have a guess; it is quite simple. Please don't read it until you thought of one first.
Writing code requires knowledge of code conventions, syntax, and as importantly, the libraries. This is a declarative/episodic memory task, less so of working memory, symbolic manipulation, and abstract reasoning task. The latter traits are dominatingly important in math/physics. In coding there is a mix of the two, with the former taking precedence after the program logic has been deduced.
Which brings about the next question. The mathematician part cannot be learned merely through patience, but becoming expert at a language can be. Now, why is it that your brilliant math/physicist friends cannot become such experts? Do they lack the patience? Or, does coding simply not "click" with them? Is there a causal relationship? Now my intuition says there is none, and so we are back to square one: it is perplexing that they are not good programmers, unless there is some personality reason behind it.
People who view programming as implementation-oriented grunt work (this describes a surprisingly high percentage of those who are smart enough that they "should" be able to program) have no interest in becoming good at it. Sucking at programming means that it never becomes anything more than grunt work for them, and before they become decent at it, they have enough authority to delegate their coding.
It doesn't help that they're trapped in C++ and an environment that rewards guts-'n'-glory over finely crafted code.
It's also very unlikely that Soros is going to have an undergraduate building new quant models in his first year. If he's lucky, he might get to write the code to test someone else's models. There really isn't an undergraduate course that sets you up to be a quant, and most quant jobs are unattainable without a PhD.
An MFE degree (Master's in Financial Engineering) can give you the basic skills expected of a junior-level quant trader, but tends to underplay a critical component: programming. (Most quant jobs are programming jobs; unfortunately, the lingua franca is C++, and at most financial firms, the quants are strong mathematicians but third-rate coders.)