Quant 对 python 的需求高吗?对于 Quant 来说除了 C++ 还有其他比较流行的编程语言吗?

标签: quant python 需求 | 发表时间:2013-12-08 19:37 | 作者:袁浩瀚
出处:http://www.zhihu.com
很抱歉这个问题我三天前有看到,当时欲答又止,因为我发现我可以两行答完这个问题:
1、高
2、还有:Python, Java, Matlab, R, Q和某些公司内部自有语言(如高盛的自有语言)
但是我不希望敷衍了事,如果回答就展开了说,说说我心中最重要的五类语言。这不仅仅是对于一个Quant必须的,而是一个丰满的程序员所必备的。在艺术中,艺永远比术重要;在Quant相关知识中,intuition永远比纯technique更加重要。

两年前在Princeton,我和一位研究计算机语言的PhD两人吃饭聊天。他的主要研究方向就是新的计算机语言,及相关的逻辑学。大神如他一顿饭下来80%的时间处于放空状态,基本没在关注我,但我得到了我自以为深刻的理念:一种计算机语言是一种对应哲学的体现。

因此,在我看来,有五类语言构建了一个丰满的编程能力强的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)和数值计算(比如Monte Carlo)的双重目的。但是现在各种胶水类语言、科学类语言多了起来,而且由于单机性能越发强悍,效率再也不是唯一的诉求了,因此目前C++、Java大量应用于金融系统级的开发,和对于效率要求极高的实时定价等领域。从一个Quant的角度来看,这类语言最大的特点是快,编程复杂度高,维护难,同时原生语言普遍不支持向量运算。

2、胶水类语言(Python、Ruby等):我必须承认,这些语言是新世代Quant的福音。在国内工作的时候我目睹并参与了一个将原有的C++框架全部用Python重写的项目,而现在JP Morgan这边利率类产品的定价软件也在从Java像Python转移。实现同样的代码,Python、Ruby的实现速度比效率类语言快很多,而且在机器速度越来越快的今天,差距已经不是不可接受。这些语言最大的特点是比较快,编程复杂度高,维护相对简单,同时大量的包(比如Numpy+Scipy)可以轻松实现向量运算。

3、科学类语言(Matlab、R、S等):一般而言,科学类语言最大的特点是支持向量运算,同时各种附加数学、统计包极其丰富,但运算速度无法与前两类相比。在一个具体的投资/交易策略、模型投入实际使用前,你需要快速的去实现(Implement)和验证(Back-testing)你的想法。这个时候,科学类语言就有绝对的优势。验证思路有效后,再用效率类语言或胶水类语言开发成系统级组件。你可以理解为科学类语言是用来造概念车的,而前两类语言是用来量产的。而在具体的职业角度,造概念车的这帮人一般是Pure Quant,而实现量产的很多是Quant Developer。当然也有两者合一的集大成者。

4、Alpha演算类语言(Lisp、Clojure等):我第一次对这类语言感兴趣,是12年冬天接触硅谷一家科技公司时(Prismatic,人工智能新闻App),发现他们在用Clojure,也极力向我推荐Clojure。Clojure是基于Java封装的语言,可以用Java虚拟机执行。但归根结底,Clojure是Lisp这类语言。之前我长期沉迷于过程编程与面对对象等概念之中,第一次接触Lisp很不习惯,但后面开始感叹于这类语言之美。我个人感觉目前Quant界用这种语言偏少,但是不排除以后流行的可能。

5、查询类语言(SQL、Q等):SQL就不必说了,金融公司很多时候都是使用Oracle等关系型数据库,SQL是基础。而我之前几次面试也遇到了SQL的问题。Q是Morgan Stanley为了应对金融中的海量数据而采用的一种非关系型查询语言,特点是极快,有SQL的基础可以很快掌握。

全面的说:如果你是做Pure Quant,整天与交易策略和模型睡觉,那么2、3是必须的;如果你是开发为主,或者是Quant Developer,那么1、2、5是必须的;如果你立志让编程不成为你做Quant的障碍,那么1-5全都是必须掌握或至少了解其思想的。

不管是作为Quant还是Coder,都不可拘泥于语言。语言只是其背后设计哲学的体现。这就等同一个数量金融从业者不可拘泥于产品一样。数量金融的根基永远是供给需求、金钱时间价值这些基本的经济学理论以及现金流的相关概率这些基本的统计学思想。如果拘泥于术而非艺,那路就会越走越窄。

— 完 —
本文作者: 袁浩瀚

【知乎日报——重磅更新】新增热门内容排行榜,精彩点评外置,你行,你上啊。
新版下载:
http://daily.zhihu.com/download

此问题还有 3 个回答,查看全部。
延伸阅读:
除了麦肯锡,还有哪些国际知名的管理咨询公司?
世界上除了KPCB和高盛银行,还有哪些VC或投行投资生物工程领域?

相关 [quant python 需求] 推荐:

Quant 对 python 的需求高吗?对于 Quant 来说除了 C++ 还有其他比较流行的编程语言吗?

- - 知乎每日精选
很抱歉这个问题我三天前有看到,当时欲答又止,因为我发现我可以两行答完这个问题: 1、高. 2、还有:Python, Java, Matlab, R, Q和某些公司内部自有语言(如高盛的自有语言). 但是我不希望敷衍了事,如果回答就展开了说,说说我心中最重要的五类语言. 这不仅仅是对于一个Quant必须的,而是一个丰满的程序员所必备的.

Quant 如何运算百万行的数据?

- - 知乎每日精选
其实这是一个数据库部署和算法优化的问题,只是您的提问方式把它封装成了一个看似Quant的问题. 我这里把你的问题梳理一下,然后变成一个纯计算机问题,并提出我自己的解决方案. 同时我相信在我梳理后,知乎上更多的数据处理大牛可以来拓展思路. 我自己曾经接触过的最大的一个数据是1986年1月1号到2011年12月31号的美国三大市场(NYSE,NASDAQ及AMEX)中所有股票的每日收盘数据,总共有48,796,680条记录,裸数据大小在2.5GB左右.

dropbox讲python

- chuang - Initiative
dropbox定制优化CPython虚拟机,自己搞了个malloc调度算法. 那个 !!!111cos(0). 期待这次PyCon China 2011.

Python调试

- - 企业架构 - ITeye博客
原文地址: http://blog.csdn.net/xuyuefei1988/article/details/19399137. 1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:. IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:.

Python WSGI 初探

- - 坚实的幻想
在构建 Web 应用时,通常会有 Web Server 和 Application Server 两种角色. 其中 Web Server 主要负责接受来自用户的请求,解析 HTTP 协议,并将请求转发给 Application Server,Application Server 主要负责处理用户的请求,并将处理的结果返回给 Web Server,最终 Web Server 将结果返回给用户.

Python实现逻辑回归(Logistic Regression in Python)

- - 神刀安全网
Logistic Regression in Python ,作了中文翻译,并相应补充了一些内容. 本文并不研究逻辑回归具体算法实现,而是使用了一些算法库,旨在帮助需要用Python来做逻辑回归的训练和预测的读者快速上手. 逻辑回归是一项可用于预测二分类结果(binary outcome)的统计技术,广泛应用于金融、医学、犯罪学和其他社会科学中.

python 下载文件

- Eric - python相关的python 教程和python 下载你可以在老王python里寻觅
之前给大家分享的python 多线程抓取网页,我觉的大家看了以后,应该会对python 抓取网页有个很好的认识,不过这个只能用python 来抓取到网页的源代码,如果你想用做python 下载文件的话,上面的可能就不适合你了,最近我在用python 做文件下载的时候就遇到这个问题了,不过最终得以解决,为了让大家以后碰过这个问题有更好的解决办法,我把代码发出来:.

python代码调试

- - 阿里古古
【转自: http://blog.csdn.net/luckeryin/article/details/4477233】. 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序. 例如,有模拟税收计算的程序:. debug_demo函数计算4500的入账所需的税收. 在需要插入断点的地方,加入红色部分代码:如果_DEBUG值为True,则在该处开始调试(加入_DEBUG的原因是为了方便打开/关闭调试).

python编程规范

- - 互联网 - ITeye博客
@FileName: @Author:[email protected] @Create date: @description:用一行文字概述模块或脚本,用句号结尾. 不影响编码的效率,不与大众习惯冲突.. 使代码的逻辑更清晰,更易于理解..   *所有的 Python 脚本文件都应在文件头标上如下标识或其兼容格式的标识.

Python 编程速成

- - SegmentFault 最新的文章
本文首发微信公众号:前端先锋. 欢迎关注,每天都给你推送新鲜的前端技术文章. Python是一种非常流行的脚本语言,而且功能非常强大,几乎可以做任何事情,比如爬虫、网络工具、科学计算、树莓派、Web开发、游戏等各方面都可以派上用场. 同时无论在哪种平台上,都可以用 Python 进行系统编程. 机器学习可以用一些 Python 库来实现,比如人工智能常用的 TensorFlow.