2. There are Python, Java, Matlab, R, Q and some internal languages (such as Goldman Sachs' own language), but I don't want to be perfunctory. If I answer, I will begin to speak the five most important languages in my heart. This is not only necessary for a Quant, but also necessary for a plump programmer. In art, art is always more important than art; Intuition is always more important than pure technology in quantifying related knowledge.
Two years ago in Princeton, I had dinner and chatted with a doctor who studied computer languages. The main research direction is new computer language and related logic. Great God, like him, spent 80% of his time in an empty state after dinner, paying little attention to me, but I got my own profound idea: a computer language is a reflection of corresponding philosophy.
So in my opinion, five languages have built a full-fledged Quant with strong programming ability. They are: efficiency languages (C, C++, Java, etc. ), glue language (Python, Ruby, etc. ), scientific language (Matlab, R, S, etc. ), alpha calculus language (Lisp, Clojure, etc. ), and query language (. This is based on my superficial understanding of classification, which is completely incompatible with the standardized classification of computer science (such as object-oriented language and functional language). People who disagree can laugh it off.
1, efficiency language (C, C++, Java, etc. ): Many old Quant are C++ experts, especially MIT's Ph.D. in high-energy physics who poured into Wall Street in 1980s. At that time, there were not many languages to choose from. Either Fortan or C/C++. So at that time, basically, these languages were both infrastructure and numerical calculation (such as Monte Carlo). But now there are more glue languages and scientific languages. Because the single machine performance is more powerful and efficiency is no longer the only requirement, C++ and Java are widely used in financial system-level development and real-time pricing with high efficiency. From a Quant's point of view, the biggest characteristics of this kind of language are high speed, high programming complexity and difficult maintenance, and the native language generally does not support vector operation.
2. Glue language (Python, Ruby, etc. ): I must admit that these languages are the gospel of a new generation of Quant. When I was working in China, I witnessed and participated in a project to rewrite the original C++ framework with Python. Now JPMorgan Chase's interest rate product pricing software is also shifting from Java to Python. To achieve the same code, Python and Ruby are much faster than efficiency languages, and the gap is not unacceptable today when the machine speed is getting faster and faster. The biggest characteristics of these languages are relatively fast speed, high programming complexity and relatively simple maintenance. At the same time, a large number of packages (such as Numpy+Scipy) can easily implement vector operations.
3. Scientific languages (Matlab, R, S, etc. ): Generally speaking, the biggest feature of scientific language is that it supports vector operation, and at the same time, various additional mathematical and statistical packages are extremely rich, but the operation speed cannot be compared with the first two categories. Before a specific investment/trading strategy and model is put into practical use, you need to quickly implement and backtest your ideas. At this time, scientific language has an absolute advantage. After verifying the effectiveness of the idea, it is developed into a system-level component with efficiency language or glue language. You can understand that scientific language is used to build concept cars, while the first two languages are used for mass production. From a specific professional point of view, people who build concept cars are generally pure Quant, and many of them are Quant developers who realize mass production. Of course, there are also masters who have both.
4. Alpha calculus language (Lisp, Clojure, etc. ): I first became interested in these languages in the winter of 12, when I came into contact with a technology company in Silicon Valley (prism, artificial intelligence news App), I found that they were using Clojure, and I strongly recommended Clojure to me. Clojure is a language based on Java encapsulation, which can be executed by Java virtual machine. But in the final analysis, Clojure is a language similar to Lisp. I was addicted to process programming and object-oriented concepts for a long time before. I was not used to Lisp for the first time, and then I began to lament the beauty of this language. Personally, I feel that this language is rarely used in the Quant community at present, but it does not rule out the possibility of becoming popular in the future.
5. Query language (SQL, Q, etc. ): SQL is needless to say. Financial companies often use relational databases such as Oracle, and SQL is the foundation. Moreover, I also encountered SQL problems in previous interviews. Q is a non-relational query language used by Morgan Stanley to process massive data in finance, which is characterized by extremely fast speed and can be mastered quickly with the foundation of SQL.
To sum up: if you are a pure Quant and sleep with trading strategies and models all day, then 2 and 3 are necessary; If you are a developer or a Quant developer, then 1, 2,5 is necessary; If you are sure that programming will not be an obstacle for you to do Quant, then all 1-5 must master or at least understand its thinking.
Whether you are a Quant or a coder, you can't stick to the language. Language is only the embodiment of the design philosophy behind it. This is the same as quantitative finance practitioners can't stick to products. The basis of quantitative finance is always the basic economic theory of supply and demand, the basic statistical thought of time value of money and cash flow correlation probability. If you stick to art instead of art, the road will get narrower and narrower.