分享

Quant 和程序员到底有什么差别? |

 pgl147258 2014-09-03

【董可人的回答(57票)】:

这是一个自嘲的说法。我有一些 Quant 朋友会自称为码农,因为日常大部分工作的确就是在写代码。事实上对于 Quant,有一个和码农对应的叫法是矿工。在美国的朋友大概都听说过在东海岸就去花街当矿工,在西海岸就去硅谷做码农的说法,也说明两者的确有一些相似性。

如果说区别呢,Quant 的工作主要还是和数字打交道,写程序的目的是为了用计算机去解决数字计算的问题,不论是Q宗定价还是P宗统计。相比之下,他们不会去关心 Web 开发有多少种框架, PHP 是不是最好的编程语言,MySQL 和 PostgreSQL 哪个性能更好这种一般意义上的程序员更可能关注的问题,很多时候也不需要深入理解编译器的工作原理,操作系统的 kernel space 和 user space 有什么不同,CPU 里面有几级缓存等纯计算机专业的知识。

如果这个描述还不够形象的话,建议看看这几个问题下的讨论,感受一下真正的程序员的世界。都是我随便找的,主要是帮助非计算机科班的朋友理解下码农们平时都在为什么而战,这些东西又是离 Quant 的工作多么遥远:

怎么样才算是精通 C++?

C++ 的什么是 Java 不能取代的?

Java 和 C# 最大的不同是什么?

CPU 的分支預測器是怎樣工作的?

jmp 和 call 会打乱 CPU 流水线,那是不是应该尽量少用函数调用?

对于工科背景的朋友,可以看看这几个问题,感受一下 Quant 主要在做什么。当然区区几个问题无法覆盖全部,不过你可以和上面那几个对比一下,应该能感觉出区别来:

如何系统地学习随机过程?

随机过程、机器学习和蒙特卡洛在金融应用中都有哪些关系?

为什么欧式股票期权的价值与股票的期望收益率无关?

如何系统地自学金融工程,有哪些优质的书籍推荐?都有哪些学习方法心得?

至于题目中提到的金融工程,这是一门非常具体的学科,一般是培训Q宗 Quant 的,但 Quant 并不都是学这个出身。如果除此外没有接受过计算机专业的训练(不论科班还是自学),那么此专业毕业的学生是不太可能去找软件或互联网公司的工作的,技能上差别很大。

评论中有人问到青春饭的问题,说说我的理解。

Quant 的工作始终是为金融业服务,相比于普通的软件开发,有门槛高,专业方向明确的特点。像是互联网那种做个小网站或是开发 iPhone App 这种一个人买台电脑,在网上看看免费文档,再花几百块租个服务器就能从设计到开发到运营全包的风格,做 Quant 工作是不太可能想像的。

Quant 的业务,比如说做衍生品定价,只能在投行里才有平台让你做这种工作,否则你自己设计一个衍生品出来,卖给谁?或者说交易策略研发,那就算你做纯个人的 Quant Trader,也需要拿出几万块钱来去股市开户练手,可能什么还没学到这点钱就打水漂了,足以打消大部分人的热情。高频交易更是需要 colocation,交易资金等高端要求,不是普通人消费得起的,只能在专业公司里做。

这些因素决定了进入 Quant 行业的门槛很高。但一旦你入行了,会发现世界一下子变小了,和你竞争的都是那些和你一样费了九牛二虎之力爬进来的人,不会说某一天突然发现一些黄毛小子摆弄了一些你没玩过的设备,做出了超出你理解范围的事,然后把你淘汰掉(不理解的话,可以回顾一下 Google 是怎么革微软的命,Facebook 又是怎么革 Google 的命)。

所以在矿工这么个小圈子里,不爱折腾的大可以慢慢学慢慢做。你会发现你的上级领导就是那个有十几二十年从业经验,对行业的理解,各方面技能都完爆你的大叔,而不太可能是一个有着天才头脑和想像力的年轻人。从职业发展的角度上说是一条比较稳定的路线。高技能前辈的存在,也让你对前进的方向看的更清楚,对专业技能的积累有更深刻的认识。我自己从 IT 业转过来,就明显感觉到合作或接触的人平均年龄和资历都比以前高了很多;入行时间久了也渐渐搞明白难度在哪里,不会担心哪个年轻人能仅靠天赋或运气就后来居上,这是很有安全感的。

当然凡事各有利弊,门槛高发展稳定的同时也意味着机会相对变少。的确也有人弄出一些天才策略而一夜暴富,但相比互联网行业五花八门的创业奇迹,这种情况的比例我感觉是比较少的,大多数人也就是天天干着这么一份绞杀脑细胞的工作换取一份稳定的收入。特别是像我这种从 IT 行业转过来的,回头看看,小伙伴们可能都在玩什么天使A轮B轮几百几千万的融资了,身边的 Trader 大叔还在为了今天交易赔了几百磅而郁闷,对比还挺强烈的。

所以对于想要入行的同学,我一向的建议是把你自己的兴趣放在第一位,如果对数字(学)对交易感兴趣,那么入这行没错;如果是为了挣大钱征服市场,名片上的职位高端大气上档次,现实大概可能一定会给你看看他骨感的那一面。

【梅腾天的回答(15票)】:

初期其实区别不大,都是写简单代码,基本都是单线程问题,老板怎么说怎么写,书上怎么说怎么做。

成长期开始关注不同的东西。

程序员更关注系统的效率,并行算法、多线程算法、系统架构设计,比如高吞吐架构、低延迟架构等等。还有很多时候涉及多模块协作,系统稳定性也是其关注的重点。

矿工则开始关注更多的数学模型、实验方法和市场规律,对产品的本质和行业的运作模式有更深的了解。开始喜欢与从前讨厌的交易员和销售们交流,也开始重视以前不懂事忽略的IT大拿。

后期的状态则有显著不同。

高级程序员通常精通一个领域的系统架构设计、什么技术是该用的、什么技术就是添乱的,哪些可以买那些需要自己做,可靠的技术供应商是哪些等等。他们密切与矿工、交易员、销售合作,思考的老产品系统如何优化、成本如何降低,新产品需要什么样的技术支持,如何在有限的技术资源下达成这个技术支持。

高级矿工到后来会精通一类、一大类产品的定价原则和商业模型,他们和交易员一起商量怎么更好的对老产品地定价和测算风险,也和销售一起设计新的产品,思考对新的产品如何设计模型和定价策略等等。

【卢旺杉的回答(2票)】:

多数时候Quant和程序员的区别很大。

首先需要明确程序员的定义。我们说的程序员并不是指的写程序的人,而通常指的是主要工作为开发软件的人。很多工作都会涉及到写程序,甚至处理一下表格也要编下excel,但这都不算程序员。

如果是普通交易机构,银行等Quant,更多时候他们会写一些程序去处理数据。他们的目的是处理数据而不是开发软件,写程序只是处理数据所需的手段。他们通常不需要特别深刻的计算机知识,而更多的需要建模能力和统计能力。

在高频交易公司中,软件技术的重要性相比普通交易机构及银行要高很多。除了通常的交易员(Trader),和Quant,甚至Quant Trader之外,基础设施开发者(Infrastructure Developer)占了很大的比重,这一部分人是标准的程序员,他们精通低延迟高性能相关的知识,有较完整的软件开发方法,开发出的软件是交易系统,而较少涉及到策略,软件会直接放到Colocation(似乎没有相应的中文词)的服务器上跑。另一部分是Quant Developer,这类程序员主要任务是用程序实现研究出来的策略。由于高频交易对低延迟的高要求,这类程序也一般由精通低延迟的开发者来写,而通常不会由纯Quant兼任,以使得总体的延迟接近最低。这种程序员可能是Quant和程序员界限最模糊的职业了。

原文地址:知乎

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多