C++ 短期内在华尔街的买方和卖方还是唯一选择吗?

论坛 期权论坛 期权     
JIE CHEN   2018-10-13 00:23   16551   8
基于语言特性和系统维护等原因,买方(对冲,trading firm)还是会把C++当做唯一选择?即便有python,java的选择?back office是不是就不一定了?
分享到 :
0 人收藏

8 个回复

倒序浏览
2#
包不同  4级常客 | 2018-10-13 00:23:08
早就不是了。我知道的公司里大量使用C++之外的语言的:

卖方:

高盛:Slang/SecDB。Slang全称是Securities Language(你也猜到了,SecDB就是Securities Database),是高盛的 Proprietary Language,从九十年代初开发至今,是一个庞大的系统,主要用C++写成,代码行数上亿,质量就不予置评了。大多数的交易组(刨去几个电子做市组,对延迟要求太严格)的证券定价和策略执行都是使用 Slang。当然,有一些组也开始了去 Slang 化的努力,跟积重难返的技术债有关,这里就不多说了。

摩根斯坦利:Scala。当然,大摩供着 C++ 之父,肯定不会浪费这块宝贝,不过就我所知他们的衍生品定价很多都是用 Scala 做的。

摩根大通:Java。另外高盛 Slang 的前开发头头 Alexander Davidovich 去了小摩,据说在开发进化版 Slang,也不知道真假。

买方:

Teza Technologies:Java。城堡高频组前老大 Misha 出走创办的高频公司,现在已经是业界顶尖,他们的执行代码是 Java。

Headlands Technologies:Java。Headlands 跟 Teza 系出同门,几位合伙人之前也都是城堡的高管。作为纯正的高频公司,他们的 JVM 也优化得出神入化,性能不输C++。另外他们有很好的策略研发系统,是用Python 写的。唯一可惜的一点是他们没有 Teza 赚钱。。。

HBK Investments(德州/纽约的一家 $10B 左右的对冲基金,统计套利团队很不错):C#(是的你没看错)。

这个表单还很长,不过各举三家就大概能表达我的意思了。对于卖方的大公司来说,方便合作开发是最重要的,无论是 Java 也好,专为证券交易设计的自有语言也好,都很好达成了这个目标;而对于买方初创不久的小团队来说,选择团队技术领袖最擅长的语言才是最划算的。

注意,以上如未特殊说明,都指的是公司的定价和交易系统所使用语言。研究和测试策略这种任务的话,就是 R Python Haskell OCaML Julia Go Matlab 往上一气招呼,Quant 们喜欢用啥就用啥,没什么限制(上面提到的 Headlands 这种花大力气搭了研究基础设施的除外)。
3#
RednaxelaFX  5级知名 | 2018-10-13 00:23:09
有不少trading firm用Java。其中不少跑在鄙司的Zing JVM上以便满足low latency的要求——其它答案里面说用Java的那些许多都是鄙司的(咳咳

Zing JVM有两大利器:pauseless GC和fast-at-market-open:
前者可以在1TB的Java heap上维持< 10ms的暂停时间;计划年底推出支持2TB Java heap的版本。其算法C4是真正不需要暂停的,不过我们当前的实现还是有些短暂的小暂停,所以请把实现读做pause-less——少暂停 ;-)
后者的名字是ReadyNow!。目标是让用户代码可以正确预热JVM,在market-open时就达到全速,而不像在一般JVM上跑的话可能会在market-open后头几个transaction还跑在比较慢的状态。

对Zing JVM在trading相关领域感兴趣的,可以参考一下这个演讲:QCon London 2015: Low latency Java in the real world - LMAX Exchange and the Zing JVM

利益相关:Azul Systems员工。请参考 Azul Systems 是家什么样的公司? - Java
4#
Travis Fu  2级吧友 | 2018-10-13 00:23:10
我来回答一个吧,仅仅根据我自己的经历还有周围朋友的经历回答,涵盖不到还望补充,海涵
所有信息来源限于纽约office, 不排除同家公司不同office用的语言不同,但可能性不大
其实楼主的问题很笼统,最标准的回答是“分desk”

1. Goldman Sachs, 其实高盛比较统一,大部分desk 都用slang, 这是高盛自己搞出来的语言,没听说别家在用,据说是防止人跳槽偷代码....

2. UBS equity trading, 一个朋友做execution, 策略上主要用python, 数据库用KDB/R

3. JPM 做treasury bond market making. 出乎我意料竟然用JAVA,我还以为他们会用C++的,但是听说他们性能已经优化得很好了

4. Morgan Stanley FX market making. 好像就是用用VBA + KDB,不过这是做strategy的,IT那边主要还是用JAVA

5. BOA/Merrill 主要用JAVA, pricing package 还有market making 那边大部分是用C++ 写的,但是公司近几年在大力推广Python

6. 一票大小hedge fund 其实很随意的,只要出活就行,从VBA 到 JAVA,python, C++ 什么都有,当然做高频的框架还是C++比较多,当然这年头高频的利润实在是大不如前

7. 我供职的buy-side research公司, 就是做做investment research, 用matlab(这个比较奇葩,毕竟大部分公司不愿意付那么贵的licence fee), 和R, 当然最近在我的大力游说下,组里开始用python 做strategy了,当然IT那边还是用的JAVA

站在公司的角度来看,华尔街这么高的人员流动性带来的直接问题就是新来的人能不能快速上手以前员工留下的Project, 从这点来说JAVA一直是一个比较稳妥的选择,最近几年Python也有流行的趋势,但是我觉得Python不可能完全代替JAVA。至于C++,因为上手难一些,而且其实这些年非用C++的地方可能也就是HFT了。

如果仅仅就就业难度上来说JAVA应该是最好在美国找工作的,但是多数是一些IT support 的工作,可能会跟原来的预期有差距。如果专心搞HFT,C++还是必须的。至于Python神器,学学总是没坏处的。

其实早些年我也会一直纠结这些问题,但是后来才发现其实兵无常势,其实确定一个自己喜欢的方向,然后再根据这个方向去学习需要的工具才是正解
5#
郑曾波  3级会员 | 2018-10-13 00:23:11
我看到上面几个答案提到JPM补充几句。

JPM的系统比较杂,不同desk区别较大。首先它有个统一的公共类库,是C++写的,所以公司招quant(非algo trading)必然要看你C++。除此外,JPM正在建设一个类似GS的SLANG的系统,用的语言是python。某些组会用JAVA,还有用Smalltalk的。

我个人感觉,如果要进投行,C++还是需要的,因为类库经常是C++写的,还有大量的老代码。
6#
何明科  6级职业 | 2018-10-13 00:23:14
如果我说好多做策略的人在用VBA或者Matlab,大家会不会觉得超Low?

谢谢 @Jianchi Chen 的提醒。补充一下:拿VBA做的主要是研究策略,执行策略基本是不可能的。
7#
亲爱的龙哥  4级常客 | 2018-10-13 00:23:15
Credit Suisee, Suisse ,妈的怎么拼? @Jianchi Chen  有用F#做策略的,类似的还有
F#现在和未来的前景或者应用领域会怎样? - 编程语言
F# 可以用来做什么? - .NET
8#
任逍遥  4级常客 | 2018-10-13 00:23:16
原来在Bank of America Merrill Lynch的时候,整个公司都在做一个基于Python的平台。当然很多核心的算法还是C++写的。
9#
van derek  3级会员 | 2018-10-13 00:23:19
现在很多做高频的都是用Verilog的,运行在FPGA上。
当你讨论C++和Python的时候你就已经输了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP