2.有Python,Java,Matlab,R,Q還有壹些內部語言(比如高盛自己的語言),但我不想敷衍。如果我回答,我就開始說我心中最重要的五種語言。這不僅對於壹個Quant來說是必要的,對於壹個豐滿的程序員來說也是必要的。在藝術中,藝術永遠比藝術重要;在量化相關知識中,直覺總是比純技術更重要。
兩年前在普林斯頓,我和壹個學計算機語言的博士吃飯聊天。主要研究方向為新型計算機語言及相關邏輯。大神和他壹樣,飯後80%的時間都處於空無壹物的狀態,基本不關註我,但我得到了自己深刻的想法:壹種計算機語言是對應哲學的反映。
所以在我看來,有五種語言構建了壹個編程能力很強的羽翼豐滿的Quant。分別是:效率語言(C,C++,Java等。)、膠水語言(Python、Ruby等。)、科學語言(Matlab、R、S等。)、阿爾法演算語言(Lisp、Clojure等。),以及查詢語言(。這是基於我對分類的粗淺理解,與計算機科學的標準化分類(如面向對象語言、函數式語言)完全不兼容。不同意的人可以壹笑置之。
1,效率語言(C,C++,Java等。):很多老Quant都是C++專家,尤其是80年代湧入華爾街的麻省理工高能物理學博士。在那個年代,可供選擇的語言並不多。不是Fortan就是C/C++。所以在那個時候,基本上,這些語言既是基礎設施,又是數值計算(比如蒙特卡羅)。但是現在膠水語言和科學語言多了,由於單機性能更強大,效率不再是唯壹的需求,所以C++和Java廣泛應用於金融系統級開發和對效率要求高的實時定價。從壹個Quant的角度來看,這類語言最大的特點就是速度快,編程復雜度高,維護困難,而且原生語言壹般不支持向量運算。
2.膠水語言(Python,Ruby等。):我必須承認,這些語言是新壹代Quant的福音。我在國內工作的時候,見證並參與了壹個用Python重寫原C++框架的項目,現在摩根大通的利率產品定價軟件也在從Java向Python轉移。要達到同樣的代碼,Python和Ruby比效率語言要快很多,在機器速度越來越快的今天,差距也不是不可接受的。這些語言最大的特點是速度相對較快,編程復雜度較高,維護相對簡單。同時,大量的包(如Numpy+Scipy)可以輕松實現向量運算。
3.科學語言(Matlab,R,S等。):壹般來說,科學語言最大的特點是支持向量運算,同時各種附加的數學和統計包極其豐富,但運算速度無法和前兩類相比。在壹個具體的投資/交易策略和模型投入實際使用之前,妳需要快速實施和回溯測試妳的想法。這個時候,科學語言有絕對優勢。驗證思想的有效性後,用效率語言或膠水語言開發成系統級組件。妳可以理解為科學語言是用來造概念車的,而前兩種語言是用來量產的。從具體的專業角度來說,造概念車的人壹般都是純Quant,很多都是實現量產的Quant開發者。當然也有兩者兼而有之的高手。
4.阿爾法演算語言(Lisp,Clojure等。):我第壹次對這些語言感興趣是在12年冬天接觸矽谷的壹家科技公司(prism,人工智能新聞App)的時候,發現他們在用Clojure,也向我強烈推薦Clojure。Clojure是壹種基於Java封裝的語言,可以由Java虛擬機執行。但歸根結底,Clojure是壹種類似Lisp的語言。之前很長壹段時間沈迷於過程編程和面向對象的概念。第壹次不習慣Lisp,後來開始感嘆這種語言的美好。個人感覺這種語言目前在Quant社區很少使用,但不排除以後流行的可能。
5.查詢語言(SQL、Q等。):SQL就不用說了。金融公司經常使用Oracle等關系型數據庫,SQL是基礎。而且我在之前的面試中也遇到過SQL的問題。q是摩根士丹利用來處理金融中海量數據的壹種非關系型查詢語言,特點是速度極快,有了SQL的基礎可以很快掌握。
綜合來說:如果妳是純Quant,整天抱著交易策略和模型睡覺,那麽2和3是必須的;如果妳是開發者或者Quant開發者,那麽1,2,5是必須的;如果妳確定編程不會成為妳做Quant的障礙,那麽所有1-5都必須掌握或者至少理解它的思路。
無論妳是Quant還是編碼員,都不能拘泥於語言。語言只是其背後設計哲學的體現。這和量化金融從業者不能拘泥於產品是壹樣的。數量金融學的基礎始終是供求關系的基本經濟理論、貨幣的時間價值和現金流相關概率的基本統計思想。如果妳執著於藝術而不是藝術,這條路會越走越窄。