做量化模型Matlab、R、Python、F#和C++到底選擇哪一個?


  MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。來源於百度百科:

http://baike.baidu.com/link?url=o6xt87cfVry59gnVn6u20nYK41yygWP6WvcHHgAqUw1iSi-vZbg6Tc99BqNXfjiq30W7Z-jdGYX93gm08p5TPq

 

       Matlab有非常高的知名度,尤其在國內使用的人很多,很多大學都開設了這門課,很多人寫論文都使用Matlab。由於Matlab歷史比較早,並不是純面向對象語言(盡管后來也支持面向對象編程),無法跟Java、C#這類面向對象語言相比,但Matlab有非常廣闊的資源,學習資料比較多,容易上手。

       由於Matlab是解釋執行的,所以性能低下,對於性能要求很高的高頻策略模型不適合。

 

       R是統計領域廣泛使用的誕生於1980年左右的S語言的一個分支。可以認為R是S語言的一種實現。而S語言是由AT&T貝爾實驗室開發的一種用來進行數據探索、統計分析和作圖的解釋型語言。最初S語言的實現版本主要是S-PLUS。S-PLUS是一個商業軟件,它基於S語言,並由MathSoft公司的統計科學部進一步完善。后來Auckland大學的Robert Gentleman和Ross Ihaka及其他志願人員開發了一個R系統。由“R開發核心團隊”負責開發。 R是基於S語言的一個GNU項目,所以也可以當作S語言的一種實現,通常用S語言編寫的代碼都可以不作修改的在R環境下運行。 R的語法是來自Scheme。R的使用與S-PLUS有很多類似之處,這兩種語言有一定的兼容性。S-PLUS的使用手冊,只要稍加修改就可作為R的使用手冊。所以有人說:R,是S-PLUS的一個“克隆”。 來源於百度百科:

http://baike.baidu.com/link?url=lrR6SDQh5WDb6Hqmd-3xDMTpPBW5SHz6gJ_FSKiagLKRkZkimcuVz1kxV1sLX3E0PonoPtwc1nZY3vaSPSM29q

 

       R在學術界使用廣泛,一般的時間序列分析書的程序代碼都是R實現的。因此,R有廣泛的用戶基礎,網上資源非常多。還有一點非常重要,R是免費開源的,這使得R應用非常多。很多海歸Quant他們就用R構建策略模型。

http://www.itongji.cn/analysis/R/

 

       R也是解釋執行的,效率低下,所以高頻策略不適合。

 

  Python (是一種面向對象的解釋性的計算機程序設計語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。

Python 語言的特點:

簡單、易學、免費、開源、豐富的庫。

       Python是解釋執行的,效率低,所以高頻策略不適合。

 

  F# 微軟發展成為微軟.NET語言提供運行環境的程序設計語言。Visual f#是多元化編程語言,它支持函數式、命令式和面向對象的混合編程風格。Visual F# 可用於開發應用程序或用 F# 碼為其他 .NET 應用程序做必要的擴充。 F# 是 .NET 編程語言家族中第一個基於 Ocaml 並十分類似於它的函數語言。來源於百度百科:

http://baike.baidu.com/link?url=ZsLnLGQBV8lQYK-9-NTAYVs6CWpeXZWKEI7yBwBKcd-8x011bdUjkzUtdKh2qxBvx3r9mc2Sc_H99w1pleNC5K

 

  F#是微軟專門為科學計算和數據分析開發的語言,非常適合開發數學算法,並與.NET高度集成,可以使用.NET的廣泛資源。

       F#與Matlab、R、Python相比,性能比這幾種語言高,但沒有C++高,因為它是不編譯成本地代碼的,是一種中間語言,需要安裝.NET Framework。

       F#的不足是缺乏資源庫,目前網上資源還比較少。但一般的高頻策略都能適用(超高頻除外)

 

       C++這種語言不用說了,最大的優勢是性能,對於超高頻的策略,只能用C++編寫。

但缺點也比較明顯,就是學習難度較大,學習曲線比較陡,需要下很多功夫才行。

 

       綜上所述,Matlab、R、Python這幾種語言,適合做模型研究和測試,在研究和測試階段可以采用上面這三種語言。他們的資源相對較多,可以直接使用。但到執行策略時,就不能使用這三種語言了,只能使用F#或C++了,對於超高頻並對性能要求非常高的策略,就只能使用C++了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM