I've recently received many emails from individuals wishing to change careers from engineering, academia and IT. Quantitative finance has become a particularly attractive area recently due to the intellectual challenge and high remuneration. A question that constantly arises in these emails is "what do I need to study to convince an interviewer to give me a job?". This is the first in a three-part series that will discuss how to form a self-study plan to gain a job in the quantitative finance industry. This post will discuss how to self-study to become a quantitative developer. The other two will concentrate on quantitative analysts and quantitative traders.
Any career in quantitative finance requires a degree of generalisation rather than extensive specialisation. Quantitative developers are no different. They must fit into a team of traders, financial engineers and IT support in order to help investment banks price and sell new structured investment products or help funds develop trading infrastructure and portfolio management systems.
The most common route into quantitative development is via an academic background in scientific computing. This is because the core skills necessary for a "quant dev" are advanced programming skills and numerical algorithm implementation. These skills are developed as a matter of course within a grad school research environment for the physical sciences or engineering. If this is your background then your task will be to get to grips with the specific products and numerical algorithms used within quantitative finance, as your general implementation and programming skills are likely to be sufficiently developed.
However, if your background is not in scientific computing, there are still plenty of opportunities to become a quantitative developer leveraging a background in programming. At the very least though you will need to be familiar with implementing algorithms, the practice of which I will discuss below.
First and foremost a quantitative developer IS a software developer. Thus the role will almost exclusively be 100% programming based. You will find yourself optimising trading prototypes or developing trading infrastructure from scratch. If you're targeting bank roles, then you will likely need to be using C++, Java or C# in a Microsoft/Windows environment. If you are targeting hedge funds then you will likely be translating MatLab or R into C++ and/or Python. Funds tend to use Java and C# less, since they're often in a UNIX environment where C++ and Python make more sense. If you have a background in either of these programming environments, it makes sense to develop your strengths and stick with software you know well. Thus if you know Java, for instance, it would be wise to target investment banking roles. I've written an article on programming languages for quant developer roles if you want more detail.
Assuming you are a competent programmer and are happy changing to the software most widely used in the financial industry, then I would suggest learning C++ and Python extremely well, as that gives you the most cross-sectional capability across different sectors of the industry. Here is my suggested study plan to become a good C++ programmer:
Similarly for Python:
After following the above plan you should have a good chance at any C++ or Python interview. However, in order to solidify your developer skills it is necessary to be aware of some of the recent innovations in software engineering, which only tend to be figured out "on the job", but can certainly be studied and practiced at home in your spare time.
Being a good interview candidate for a quant developer position requires that you become both a good programmer AND a good software developer. Many can learn the former from textbooks and practice. However the latter can only be learnt from working on larger software projects, generally with other developers. However, this does not mean it cannot be incorporated into a home study program! For instance, it is now easy to contribute to open source software projects via the internet. One of the largest quantitative finance projects is the
To become a good software developer it is necessary to understand how to craft large-scale software projects. For modern software development this requires using version control, continuous integration and other agile practices. Here is a study plan to help you get to grips with these concepts:
Although becoming an excellent programmer and an excellent software developer are the prerequisites to gaining an interview position, you will also be asked problems relating to data storage and analysis. One of the key components in a quant dev's day to day life is interacting with databases. Thus a certain level of maturity with database handling is to be expected. If you have never utilised a data storage system, then the best way to start is by beginning to understand Relational Database Management Systems (RDBMS) and their language - Structured Query Language (SQL). Common RDBMS' include Microsoft SQL Server, Oracle and MySQL. Other types of data store systems include the so-called NoSQL data stores, including 10Gen's MongoDB and Cassandra.
The best way to begin learning about RDBMS is to install an open source version (as you can download them for free!) and follow the reading list below. It is beyond the scope of this article to teach you how to install an RDBMS, but you can try MySQL, as this is a very common database within hedge funds. SQL Server and Oracle are more likely to be prevalent within banking. Once you have installed a database such as MySQL, use the following guides to help you understand storage and access of data:
Since a quantitative developer works in the financial markets, it is useful to have a relatively good understanding of the products that banks produce or the instruments that funds will be trading. Thus it will be necessary to familiarise yourself (broadly) with the equities, forex, fixed income, commodities and related derivatives markets. In particular you want to be continually thinking about how this data is represented, stored and accessed as a big part of a quant dev's job is to provide storage and access to financial data. Once in the job you will almost certainly concentrate on one particular area in depth, so make sure your initial research is quite broad.
Of more relevance are the algorithms used in quantitative finance to carry out both instrument pricing and algorithmic trading. The investment bank derivatives pricing techniques will almost certainly concentrate on Monte Carlo Methods and Finite Difference Methods, both of which rely on knowledge of probability, statistics, numerical analysis and partial differential equations. These are all topics which a good student will be familiar with in grad school, but for those considering a career change, you will need to gain a good understanding of these methods if you wish to become an options pricing quant developer in a bank.
For hedge funds, you will likely be implementing trading infrastructure - either low or high frequency. This will involve taking an algorithm already coded up in MatLab, R or Python (or even C++) and then optimising it in a faster language, such as C++, as well as hooking up this algorithm to a prime brokerage application programming interface (API) and executing trades. The skills required here are quite disparate. You will need to be able to pull together data from various sources, put it into the correct context, iterate over it rapidly and then generate on-demand reports either in fixed-format (PDF), over the web or as an API itself. These skills are hard to learn from books directly and require a few years of software development experience in the technology industry.
Although the above list looks like an extensive amount of material to study, this will only be the case for somebody completely new to programming. It is unlikely that a quantitative developer position would be suitable for such an individual and I assuming that your own background will be in programming or the physical sciences. Make sure to read only the sections you deem relevant to your own situation, as otherwise you could easily spend a few years of your spare time learning the above material!
Once you believe you are ready for interview then you will need to begin the process of contacting quantitative recruiters. There are specialist firms that deal with investment banks and hedge funds. If you require specific names, then feel free to email me at firstname.lastname@example.org and I will happily point you in the right direction.
Any good recruiter will discuss your background to a reasonable degree of detail as they are putting their reputation at stake when they recommend you for an interview. Recruiters aren't generally highly familiar with the technicalities of quantitative technology and nor do they need to be. However, this does mean they have to rely more on "buzzword matching" for their own CV/resume filtering. Make sure if you are strong with C++ that you state "C++ skills - strong" and reference the STL, Boost and any C++ projects you have worked on, for instance. Do not be modest about your skills, but also do not overstate them. If you write anything on your CV/resume, it is fair game to be grilled about it in a technical interview!
Since the job market (in 2013) is not the best (particularly at entry-level) right now, you might find it will take a while to get the job you are looking for. The trick is to keep trying as with each interview you attend, you'll gain more knowledge about what the recruiters and interviewers are looking for and so you'll be able to tailor your study towards this.comments powered by Disqus
You'll get instant access to a free 10-part email course packed with hints and tips to help you get started in quantitative trading!
Every week I'll send you a wrap of all activity on QuantStart so you'll never miss a post again.
Real, actionable quant trading tips with no nonsense.