对Quant而言Python的需求高吗,除C++外还有哪些流行的编程语言?
在国外,R+Python更受欢迎,R用于快速实现和验证您的策略。Python的优点是速度更快,而且可以更方便地移植到C++中。家庭状况则更为复杂。第一,Matlab的使用比R多,国外有版权问题,国内很少这方面的问题,学校里又以教授Matlab为主,所以导致毕业后使用Matlab的人比较多。
对于财务工程学的用户,这一比例应为4:1至5:1。第二,Python也有一些用户,但在业界并不多见,更别提C++和JAVA了。在业界,SAS是一个比较特殊的异类,使用人很多。与Matlab相比,数量应该与R相似。
使用SAS的原因主要是由于它与SQL的交互非常有效,但SAS的编程方式却相当奇怪。SQLs仍然需要了解一点,尽管未来的趋势可能是大家越来越多地采用API的方式来提取数据,但如果要追求稳定和速度,落地数据库的方法还是无法逃脱。因此,进行财务工程的最佳选择是使用SQL,当然只需使用select和复杂的join。SQLserver和Oracle是SQL的主要用途。MySQL的视觉效果很好。
5种类型的语言构成了丰富的编程能力很强的Quant的全部内容,包括:效率类语言(C,C++,Java等),粘性类语言(Python,Ruby等),科学类语言(Matlab,R,S等),Alpha演算类语言(Lisp,Clojure等),查询类语言(SQL,Q等)。它基于对分类的浅显理解,与计算机科学的规范分类(如面向对象语言,函数类语言)完全不兼容。
1、效率类语言(C,C++,Java等):老派的Quant大多是C++高手,尤其是那些80年代涌向华尔街的MIT的高能物理博士们。那时候,没有多少语言可选择。不管是Fortan还是C/C++。因此,从根本上说,这两种语言既是基础设施(infrastructure),又是数值计算(如MonteCarlo)。但如今,各种胶水类语言、科学类语言层出不穷,并且由于单机性能的日益强大,效率不再是唯一的诉求,因此,当前C++、Java在金融系统级开发中的大量应用,以及对效率要求极高的实时定价等领域,都是如此。在Quant看来,此类语言的最大特点是速度快、编程复杂、维护困难,同时本地语言一般不支持向量操作。
2、胶水类语言(Python,Ruby等):我必须承认,这些语言对新一代的Quant来说是一种福音。当我在国内工作时,我亲眼目睹并参与了一个用Python完全重写原来的C++框架的项目,现在JPMorgan一方的利率类产品定价软件也正在从Java中像Python一样迁移。Ruby的实现也是如此,它比效率类语言要快很多,而如今机器运行速度越来越快,这种差距已不再是不可接受的。这两种语言的最大特点是速度快、编程复杂、维护相对简单,同时大量的包(例如Numpy+Scipy)可以很容易地完成向量操作。
3、科学类语言(Matlab、R、S等):科学类语言的最大特点是对向量运算的支持,同时各种数学、统计数据包也极为丰富,但是运算速度不能与前两类相比。要想真正实现自己的想法,首先要确定具体的投资/交易策略,然后才能制定出真正可行的模式(Implement)并加以验证。此时,科学类语言具有绝对优势。在验证了思想的有效性之后,再用效率类语言或粘性类语言开发成系统级组件。我们可以把它理解为科学界的语言用于制造概念汽车,前两种语言用于量产。从具体的职业角度来看,制造概念车的这批人通常都是PureQuant,而实现量产的大部分都是QuantDeveloper。这两个方面的集合体是存在的。
4、Alpha演算性语言(Lisp、Clojure等):当我12年冬天与硅谷的一家科技公司(Prismatic,AI新闻App)接触时,我第一次对这种语言感兴趣,并发现他们正在使用Clojure,并也极力推荐我使用它。Clojure是一种基于Java封装的可在Java虚拟机上执行的语言。但是最终,Clojure是一种类似Lisp的语言。以前我长期沉溺于过程编程和面向对象这样的概念,第一次接触Lisp是很不习惯的,但是后来才开始感叹这种语言的美丽。本人觉得目前Quant社区使用这种语言比较少,但并不排除将来流行的可能性。
5、查询类语言(SQL,Q,等等):SQL是不需要说明的,金融公司通常会使用Oracle之类的关系数据库,SQL是基础。而且我在之前的几次面试中也遇到过SQL。MorganStanley用Q来处理金融领域的大量数据,它是一种非关系型查询语言,它的特点是非常快,有SQL基础就能快速掌握。
通盘考虑:如果你是做PureQuant,整天与交易策略和模型睡觉,那么2,3是必须的;如果你是开发型的,或者是QuantDeveloper,那么1,2,5是必须的;如果你希望编程不会成为你做Quant的障碍,那么1,5都是必须要掌握或者至少要理解它的想法。无论作为Quant还是Coder,语言都不能被束缚。文字只是设计理念背后的体现。这样做相当于让一大批金融从业人员对产品视而不见。定量融资的基础总是一些基本的统计思想,如供给需求、货币时间价值等基本经济理论,以及现金流相关概率。若被术业所困,路将越走越窄。