做量化模型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++了。

posted @ 2014-12-31 10:52  俊先  阅读(6760)  评论(0编辑  收藏  举报