多数时候Quant和程序员的区别很大。
首先需要明确程序员的定义。我们说的程序员并不是指的写程序的人,而通常指的是主要工作为开发软件的人。很多工作都会涉及到写程序,甚至处理一下表格也要编下excel,但这都不算程序员。
如果是普通交易机构,银行等Quant,更多时候他们会写一些程序去处理数据。他们的目的是处理数据而不是开发软件,写程序只是处理数据所需的手段。他们通常不需要特别深刻的计算机知识,而更多的需要建模能力和统计能力。
在高频交易公司中,软件技术的重要性相比普通交易机构及银行要高很多。除了通常的交易员(Trader),和Quant,甚至Quant Trader之外,基础设施开发者(Infrastructure Developer)占了很大的比重,这一部分人是标准的程序员,他们精通低延迟高性能相关的知识,有较完整的软件开发方法,开发出的软件是交易系统,而较少涉及到策略,软件会直接放到Colocation(似乎没有相应的中文词)的服务器上跑。另一部分是Quant Developer,这类程序员主要任务是用程序实现研究出来的策略。由于高频交易对低延迟的高要求,这类程序也一般由精通低延迟的开发者来写,而通常不会由纯Quant兼任,以使得总体的延迟接近最低。这种程序员可能是Quant和程序员界限最模糊的职业了。
为什么金融工程师叫 quant???
写这篇文章主要是因为现在很多本科生对金融工程都很有兴趣,但具体怎么一回事却不甚了解,有的甚至把他与金融和经济混淆一谈。所以这篇文章也算是给所有对这个行业有兴趣的朋友一个参考吧。
1.quant是做什么的?
quant的工作就是设计并实现金融的数学模型(主要采用计算机编程),包括衍生物定价,风险估价或预测市场行为等。所以quant更多可看为工程师,按中国的习惯性分类方法就是理工类人才,而不是文科人才,这个和金融有一定的区别(当然金融也有很多理工的内容)。
2.有哪几种quant?
a. desk quant
desk quant 开发直接被交易员使用的价格模型. 优势是接近交易中所遇到的money和机会. 劣势是压力很大.
b. Model validating quant
model validating quant 独立开发价格模型,不过是为了确定desk quant开发的模型的正确性. 优势是更轻松,压力比较小. 劣势是这种小组会比较没有作为而且远离money.
c. Research quant
Research quant 尝试发明新的价格公式和模型,有时还会执行blue-sky research(不太清楚是什么). 优势是比较有趣(对喜欢这些人来说),而且你学到很多东西. 劣势是有时会比较难证明有你这个人存在(跟科学家一样,没有什么大的成果就没人注意你)
d. quant developer
其实就是名字被美化的程序员,但收入很不错而且很容易找到工作. 这种工作变化很大. 它可能是一直在写代码,或者调试其他人的大型系统.
e. Statistical arbitrage quant
Statistical arbitrage quant 在数据中寻找自动交易系统的模式(就是套利系统). 这种技术比起衍生物定价的技术有很大的不同, 它主要用在对冲基金里. 而且这种位置的回报是极不稳定的.
d. capital quant
capital quant 建立银行的信用和资本模型. 相比衍生物定价相关的工作,它没有那么吸引人,但是随着巴塞尔II银行协议的到来,它变的越来越重要. 你会得到不错的收入(但不会很多),更少的压力和更少的工作时间.
人们投资金融行业就是为了赚钱, 如果你想获得更多的收入,你就要更靠近那些钱的"生产"的地方. 这会产生一种接近钱的看不起那些离得比较远的人的现象. 作为一个基本原则, 靠近钱比远离钱要来得容易.
3.quant工作的领域
a.FX
FX就是外汇交易的简写. 合同趋向于短期,大量的金额和简单的规定.所以重点在于很快速度的建立模型.
b.Equities
Equities的意思是股票和指数的期权. 技术偏向于偏微分方程(PDE). 它并不是一个特别大的市场.
c.Fixed income
Fixed income的意思是基于利息的衍生物. 这从市值上来说可能是最大的市场. 他用到的数学会更加复杂因为从根本上来说他是多维的. 技术上的技巧会用的很多. 他的收入比较高.
d.Credit derivatives
Credit derivatives是建立在那些公司债务还清上的衍生产品.他发展的非常快并有大量需求,所以也有很高的收入. 尽管如此,他表明了一些当前经济的泡沫因素.
e.Commodities
Commodities因为最近几年生活用品价格的普遍涨价,也成为一个发展迅速的领域.
f.Hybrids
Hybrids是多于一个市场的衍生物市场,典型情况是利息率加上一些其它东西.它主要的优势在于可以学到多种领域的知识.这也是当前非常流行的领域.
4.quant一般在哪些公司工作
a.商业银行 (HSBC, RBS)
商业银行对你要求少,也给的少. 工作会比较稳定.
b.投行 (高盛,Lehman Brothers)
投行需要大量的工作时间但工资很高. 不是很稳定的工作.
总的来说, 美国的银行收入比欧洲银行高,但工作时间更长
c.对冲基金 (Citadel Group)
对冲基金需要大量的工作时间和内容,他们也处在高速发展同时不稳定的情况中. 你可能会得到大量的回报,也可能几个月后就被开除.
d.会计公司
大型会计公司会有自己的顾问quant团队. 有些还会送他们的员工去Oxford读Master. 主要的劣势在于你远离具体的行为和决策,而且厉害的人更愿意去银行,所以你比较难找到人请教.
e.软件公司
外包quant模型变得越来越流行. 所以你去软件公司也是一个选择. 劣势和会计公司比较类似.
5.成为一个quant需要看哪些书?
现在有非常多的关于quant的书.基础书籍包括
- Hull - Options future and other derivatives. 这本书被称为bible. 缺点是这本书的内容主要面向MBA而不是quantitative专家
- Baxter and Rennie – 主要介绍一些手法和诀窍,但主要面向原理而不是实际操作.
- Wilmott (Derivatives) – 对PDE介绍的非常不错,但其他方面一般
推荐其他几本原作者的书(广告啊...但的确很好,大牛来的)
- The concepts and practice of mathematical finance
这本书的目标在于覆盖一个优秀quant应该知道的知识领域. 其中包括强列推荐你在应聘工作之前看的一些编程项目.
- C++ design patterns and derivatives pricing
这本书是为了告诉大家如何使用C++来做quant的工作.
随机微积分虽然在第一眼看上去不是很重要,但的确非常有用的. 我建议大家先看一些基本理论的书,类似Chung’s books. 一些这方面我推荐的书:
- Williams, Probability with martingales. 一本很容易让人了解account of discrete time martingale theory的书.
- Rogers and Williams, particularly Volume 1.
- Chung and Williams
6. 成为quant,我需要知道一些什么?
根据你想工作的地方不同,你需要学习的知识变化很大. 在写着篇文章的时间(1996),我会建议将我的书全部学会就可以了.很多人错误的把学习这些知识看作仅仅看书而已.你要做的是真正的学习,就像你在准备参加一个基于这些书内容的考试. 如果你对能在这个考试里拿A都没有信心的话,就不要去面试任何的工作.
面试官更在乎你对基本知识的了解是否透彻,而不是你懂得多少东西. 展示你对这个领域的兴趣也很重要. 你需要经常阅读Economist, FT 和Wall Street Journal. 面试会问到一些基本微积分或分析的问题,例如Log x的积分是什么. 问到类似Black-Scholes公式怎么得出的问题也是很正常的. 他们也会问到你的论文相关的问题.
面试同样也是让你选择公司的一个机会. 他们喜欢什么样的人,他们关心的是什么之类的答案可以从他们的问题中得出. 如果问了很多关于C++语法的问题,那么要小心选择除非那是你想做的工作. 一般来说, 一个PhD对得到quant的offer是必需的.
有一个金融数学的Master学位会让你在银行风险或交易支持方面却不是直接quant方面的工作. 银行业变得越来越需要数学知识,所以那些东西在银行的很多领域都有帮助.
在美国, 读了一个PhD之后再读一个Master变得越来越普遍. 在UK这依然比较少见.
8. 编程
所有类型的quant都在编程方面花费大量时间(多于一半).尽管如此,开发新的模型本身也是很有趣的一件事. 标准的实现方法是用C++. 一个想成为quant的人需要学习C++. 有些其他地方使用Matlab所以也是一个很有用的技能,但没C++那么重要. VBA也用的很多,但你可以在工作中掌握它.
10. 收入
一个quant能赚多少? 一个没有经验的quant每年大概会挣到35000-50000磅. 我所见过最低的是25000,最高的是60000加奖金. 如果你的工资超出这个范围,你要问自己why? 收入会迅速的增长. 奖金也是总收入中一个很大的组成部分. 不要太在乎开始的工资是多少,而是看重这个工作的发展机会和学习的机会.
11. 工作时间
一个quant工作的时间变化很大. 在RBS我们8:30上班,6pm下班. 压力也是变化很大的, 一些美国银行希望你工作时间更长. 在伦敦有5-6个星期的假期. 而在美国2-3个是正常的.
Quant 应该学习哪些 Python 知识
Quant 应该学习哪些 Python 知识
Python是非常适合做quant类工作的语言,本身就是科学计算方面的统治级语言,现在加入了IPython,pandas等重量级神器,为Quant类工作量身定做,而且仍在飞速发展中,以后会越来越重要。 关于其他语言,首先介绍一下我自己最喜欢的一个比较小众的组合,Mathematica+Java/Scala。
Mathematica的优点在于:本身提供函数式的编程语言,表达能力非常强大,比如Map/Reduce是标配,很多时候不需要去做烦人的for循环或下标控制,排版经常可以直接照数学公式原样输入,即直观又不容易写错;代码和输出混排的排版方式使得建模时的演算和推理过程非常流畅,甚至还可以直接生成动画,对于找直观理解非常有帮助(这几点分别被IPython和R偷师了一部分)。
Mathematica的缺点在于对金融类的时间序列数据没有很好的内建支持,使得存储和计算都会比较低效,因此需要用内嵌Java的方式来补足,对于数据格式或性能敏感的操作都可以用Java/Scala实现。这个组合在我心目中无出其右,不论是快速建模,还是建模转生产,都远远领先于其他选择。
但Mathematica的商用授权很贵,如果公司本身不认可的话很难得到支持,这是最致命的缺陷。另外随着Python系的逐渐成熟,领先优势在逐渐缩小,长远看Python的势头更好一些。 其他答案里也列举了不少其他语言,我自己既做Quant的工作,也做软件开发的工作,这里想从一个软件工程师的角度,说说我的理解。平时工作中会和一些偏Quant背景的人合作,很容易发现建模能力好的人往往在计算机方面基础比较薄弱(因为以前的训练重点不在这里)。
Quant 应该学习哪些 Python 知识
数据分析的python软件包不能算是严格的Python知识吧?严格来说,熟练使用那些软件包更多的还是依赖于金融市场,数理统计方面的知识,因为软件包的API通常都是这些领域知识的术语。
作为一个quant, 这个问题(一个这时候的quant应该学习哪些Python知识)的必要性在于,Python在这个领域真的是很火,一句不过分的话说“华尔街以前运行在Excel上,今后会运行在Python上” (当然技术上来讲,这并非事实,要说这个可能性的基础,从编程语言上来讲,还得是C/C++,这里的说法更多是体现在Python语言作为一种最接近用户层面的语言的流行度而来的, 同时即便从这个意义上来讲,现在流行的还有R, Matlab, Q(在一些知名银行很流行)等)。
什么性格的人适合 Quant 这个职位?Quant 一天的生活是怎样的
quant的工作就是设计并实现金融的数学模型(主要采用计算机编程),包括衍生品定价,风险估价或预测市场行为等。所以quant更多可看为工程师,按中国的习惯性分类方法就是理工类人才
工作地点
编辑
a.商业银行,对你要求少,也给的少. 工作会比较稳定.
b.投行,投行需要大量的工作时间但工资很高. 不是很稳定的工作.
c.对冲基金 。对冲基金需要大量的工作时间和内容,他们也处在高速发展同时不稳定的情况中. 你可能会得到大量的回报,也可能几个月后就被开除.
d.会计公司,大型会计公司会有自己的顾问quant团队. 有些还会送他们的员工去Oxford读Master. 主要的劣势在于你远离具体的行为和决策,而且厉害的人更愿意去银行,所以你比较难找到人请教.
e.软件公司,外包quant模型变得越来越流行. 所以你去软件公司也是一个选择. 劣势和会计公司比较类似.
Quant 应该学习哪些 Python 知识
Python是非常适合做quant类工作的语言,本身就是科学计算方面的统治级语言,现在加入了IPython,pandas等重量级神器,为Quant类工作量身定做,而且仍在飞速发展中,以后会越来越重要。
Quant 应该学习哪些 Python 知识
可以这样来关注Python:
Python是一门什么编程语言,它的显著优势和劣势分别是什么
Python编程环境的快速搭建(包括包管理(现在pip正在被标准化),编辑器,以及调试工具)
Python最被广泛认同的编码规范和最佳实践是什么 (e.g., ('a' + 'b') VS. ''.join(['a', 'b'], 这一点被很多初学者所忽略(“为什么不呢?反正我的代码运行正确了。”),但是如果学习者最初花多一点时间来回答这个问题(“虽然有多种选择,但是哪种选择在这个时候最合适”),或者说建立起来这样一种思考方式,你将很快的超越自己,成为别人眼中的专家。)
Python内建的主要的数据类型(int, long, str, tuple, list, dict, heapq, deque - 内建的标准库中并不包含像C++里面那样丰富的数据结构,Search Tree, Binary Search Tree, AVL/Splay/Red Black Tree, Graph等, 不过这些非线性的数据结构都可以在PyPI中找到),以及它们的常用API(这也正是Python的闪光点之一,即最初的编程效率的来源)。
Python的常用标准库(Python拥有非常易用和功能完备的标准库,使得Python在安装之后就能应付大量问题,如字符处理,文件系统,HTTP, 常见数据文件处理等。语言的维护者早期应该是希望赋予Python以明朗的模块组织结构,对于某类具体问题都存在一个明确的甚至是唯一的模块,但是随着这些年Python的流行,第三方包的大量增加,这种初衷现在面临不少挑战。直观的结果是,在Python 2.X的版本里,你会找到像urllib2这样命名的模块。现在的Python 3所作出的众多努力中就包括对这些模块组织上的歧义进行整理。总的来说,用户仍然还是可以迅速的回答“我该使用哪个模块”这个通常需要不少经验的问题。)
Python的面向对象范式怎么使用(如何在此理解上可靠的实现封装,重用,继承,覆盖)
Python在处理网络编程上的常见方案,常用标准包及第三方包(这本身是一个丰富的话题,同时也几乎不可避免,熟练掌握这个话题需要多年的经验,深层次的理解更需要系统的计算机科学知识,但是你可以从其中某一个具体的方案开始。Python内建标准包提供几乎所有层次的网络编程术语,你可以工作在从IP到应用的所有层面。)
Python在处理CPU密集型运算时候采用的流行解决方案,以及它们的工作原理大致是什么(这个理解可以帮助你以不变应万变的从众多第三方方案中选择合适的候选者。流行的方案一般是通过Python <-> C/C++/Fortran互操作,可能会使用一些元编程语言(比如Cython)来进行language translation/generation,也有可能直接从C/C++/Fortran编写的软件中来生成二进制编程界面或者应用编程界面(取决于生成的过程是利用二进制文件(.lib, .so)还是源文件),甚至更新的尝试会利用到一个多阶段的源代码处理管道,从Python源代码,中间C/C++代码,再到LLVM将Python代码(目前比较成功的方案似乎支持到Python的一个理想子集)实时生成对应的机器码。理解这一原理将帮助你克服Python在CPU密集运算时所遇到的瓶颈,同时我认为如果你将为你所在的部门构建一个基于Python的数据分析平台(几个华尔街的投行有在做这件事情),理解这个是至关重要的。)
转载请注明出处51数据库 » quant软件 quant和程序员到底有什么差别