Certification in Quantitative Analyst
NM FinTech LTD. has the vision to promote rational investment and trading. We offer the best value continuous training and education for capital market professionals.
It is very difficult to find people who can produce effective code for mathematical models. In general, mathematicians do not write good code and computer programmers do not understand the (advanced) mathematics. Yet, computer language is the only language we use to turn an idea into a product that people can use. I foresee that the truly valuable talents are those who have creative ideas and are able to implement them. They are the most-sought after in many engineering disciplines, e.g., finance.
Speaking from personal experience, I have been working exclusively in the financial industry, Algorithmic Trading in particular. This field is where mathematics and computer science meet. As an algo-trader, my job is to develop mathematical models and write computer software for automatic execution. In addition, I lead a team of mathematicians to design trading models and a team of programmers to build these systems. From these years of job experience, I find it exceedingly difficult to hire the perfect candidates to work in this algorithmic trading industry.
I have hired some very good statisticians and mathematicians from the top schools. They produce good research and design very sophisticated mathematical models. Unfortunately, they are not able to program to the professional standard their models that are ready to be used by other people. Often the programmers need to translate their prototypes in Matlab / R into C++ / C# / Java. On the other hand, it is unrealistic to expect the programmers to develop these mathematical models simply because they do not have the training. In summary, my dilemma is: mathematicians cannot differentiate between inheritance and interface; programmers do not know about hidden Markov Chain.
It occurs very surprisingly to me that given the prevalence of computer programming in the industries, such as finance and bio-chemistry, universities have not been placing enough emphasize and proper training on their students. In my opinion, in a scientific corporation programming skill is as essential as speaking English. It is a way to communicate ideas (models) in a form that other people can actually use, i.e., a product. Our school curriculums have a number of drawbacks.
First, programming courses are not mandatory for many students, even science students. For instance, statistics students can graduate without ever taking a course in computer programming. They might very well be proficient in Matlab, R, and other specialized software. However, these are not real programming languages. These have little use in an industrial production environment. The students are still not trained in terms of object-oriented concepts, debugging skills, software engineering principles, team collaboration, quick adaptation of new tools and technologies.
Secondly, the professors, instructors, or lecturers teaching the programming courses usually have little industrial programming experience. Speaking from my personal experience, I thought I was a good programmer when I graduated with a PhD in computer science and after spending many years programming for my thesis and homework. It turned out that I was very naïve and ignorant. I was proved to know nothing about industrial programming on my first job. Looking back, the professors teaching programming in universities are probably in the stage where I once was. Most have never delivered a real product (not hands-on anyway).
Therefore, as we are now in the era of a technology driven world, the truly valuable talents are those who can have creative ideas and are able to implement them. I foresee that, gradually, the schools begin to recognize that having good programming skill is as essential as having good communication skill on the job. I am looking forward to changes in the academic curriculums. More emphases are placed on computer programming training across all majors. At the least, all engineering students must be proficient in one modern programming language. Equally important, these programming courses should be taught by experienced professionals rather than academic people who are trained to write journal papers.
In conclusion, we need a new course to teach numerical programming. This is a course to educate science students (not just computer science students) how to code mathematical models. That includes a modern programming language, software engineering methodology, debugging, algorithm design and analysis, effective implementation, and design pattern.
CEO, NM FinTech LTD.
During our journey to learn about mathematical wealth management, we created a simple four step process to generate a trading strategy (see Haksun’s course lecture 1). This process requires three essential skills: (1) mathematics, (2) programming and (3) creativity. Mathematics is what translates a trading idea or intuition into well-defined meaningful symbols. Starting from the assumptions, we can derive the properties of the made-concrete trading strategy. Before betting our first $1, we can compute the expected return (or P&L distribution) and the expected holding time of a trade. Programming is what translates the mathematical symbols into lines of code for trading research and execution. An effective programming skill is like an effective communication skill. We collaborate with our research tools by “talking” to them. An effective usage of the tools increases the probability of generating effective trading strategies. At the very least, it reduces in the execution systems the number of bugs that could cause millions of dollars of losses. It is easy to hire good mathematicians; you look for them in New York City.
We differentiate ourselves from the traditional master’s degrees in financial mathematics or financial engineering. Firstly, these programs take too long a time (e.g., 3 months for a semester) to touch only the surface of the subjects. For instance, the standard topics are: options pricing, stochastic calculus and data analysis. However, you do not really need to do a degree program to learn them. Reading the right books is more efficient and effective. I (namely, Haksun here) literally picked up the knowledge from my bedtime reading: Financial Calculus: An Introduction to Derivative Pricing, Baxter and Rennie; Introduction to Stochastic Calculus With Applications, Klebaner; Statistical Analysis of Financial Data in S-Plus, Carmona. (I know they are not the standard textbooks used in universities.) The point is that the knowledge is easy and does not require a teacher. On the other hand, some topics are very useful in mathematical trading and yet very hard to self-learn them. If you would like to challenge yourself, try to study cointegration (the theory not just the R package “urca”) by reading Likelihood-Based Inference in Cointegrated Vector Autoregressive Models, Johansen, or try to solve an optimal asset allocation problem with jumps by reading Applied Stochastic Control of Jump Diffusions, Oksendal, Sulem. Our courses are designed to make these more useful yet rather inaccessible mathematics concepts easy to understand and thus accessible to you when designing your trading strategy. More importantly, the focus of our mathematics courses is on teaching mathematical thinking, namely translating a trading intuition into solid equations, rather than on formulas or mechanical computational rules.
Secondly, most graduates from these university programs cannot code professionally even though they may have gone through a year-long programming training. For example, if these students think that they can code in C++, think again after you read Scott Meyers’ books. From our interviewing experience, most junior programmers have not read the three books, hence not being able to code. Learning a (natural) language is not about learning words and grammars. Similarly, learning a programming language (Java/C#/C++/etc.) is not about learning the constructs and syntax. A professional programmer writes not only functional code that machines can read but elegant code that humans can read too. Writing elegant code is an art like painting or composing. The problem with bad spaghetti code is that there is no way to tell whether the code works or not maybe other than on a few toy examples. The consequence in trading could mean losses of millions of dollars.
Last but not least, the traditional university syllabuses focus on options pricing. Our personal opinion is that exotic derivative business is an evening industry since the housing bubble bursted in 2008. The money has shifted from exotic to flow or vanilla options. However, the flow business is a sales business. It does not take a lot of mathematics. How difficult is the Black-Scholes formula? OK. You may fit some volatility surface. But the money comes from customers willing to trade with you; again, it is a sales business. The desk probably makes more money by hiring a 22 year old cheerleader from USC rather than a 40 year old math PhD from MIT. The future of quantitative finance is uncertain. All banking professionals are searching for a new direction or the next gold mine. We believe, however, that there is always demand for wealth management as there are always wealthy people who are reluctant to put billions of dollars under their (big) mattess. Our courses do not teach any off-the-shelf profitable trading strategies (no one will) nor do we teach any get-rich-quick schemes (only scammers would). Our courses are designed to survey some of the sophisticated mathematical trading ideas from the academic world. From these published papers, we learn how to think mathematically, become equipped with the essential mathematics knowledge at fingertips to use and understand them, and get well versed in programming. In other words, our education objective is to train all-rounded would-be super-stars in the mathematical wealth management business.