作者:董可人
链接:https://zhuanlan.zhihu.com/p/25814461
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我从2015年5月回国加入凯纳担任 CTO,转眼间已经快满两年。两年前,我虽然有一些在海外工作积累下的行业经验,但是对于国内的量化环境还是一无所知的小白。两年后,得益于在凯纳这家国内本土一线量化私募的工作,我实际处理了很多在国内做量化所必需要面对的现实问题,同时也得以接触很多国内的同行,对于主流的量化团队的工作模式有了一些了解,终于算是接了地气。这一篇文章我就来讲一下从一个 CTO 的视角上,这两年里我的一些感受。国内的优点不多说了,行业发展快机会多空间大,是难得的沃土,我非常庆幸两年前做了回国的决定,对于这两年的进展也很满意和开心。下面主要讲问题。
首先,毫不意外的,国内的量化团队普遍来说IT水平是比较差的。这里没有贬义,就算是西方那么多国家,要论IT研发能力,互联网系的科技公司都比金融业高到不知哪里去了,相比之下国内的情况虽然漏洞百出,但是还不算太糟,至少大家都能做到自给自足。这里面一方面是金融业吸收新技术相对比较保守,整体科技升级的步子不可能迈得太大,另一方面科技人才要转行也有很多现实的挑战,比如薪酬体系不明确,学习有曲线门槛比较高等之类。现实来看,量化这么一个虽说是科技驱动的行业,其实际的IT水平还存在很大的发展空间。
举例来说,我所接触的大多数量化团队都是这么一个配置,策略人员主要使用 matlab 或者 python/pandas 之类的数学类软件开发策略信号,然后有少则一两个多则三五个程序员负责开发信号执行系统。基本上每个采取了这种配置的团队,表面上看起来都是其乐融融。你如果要看工作演示,那个主程一般就会掏出一个编译好的软件(可能是 windows 上的带图形界面的,也可能是 linux 上的纯命令行的程序),演示怎么启动、操作、停止这个软件,everything is just working。但是仔细看,实际上这个配置下面的开发模式是非常脆弱的。一般来说,这少数的几个程序员会使用 svn 或者 拿着 git 当 svn 使来做版本控制,集成测试很可能是没有用的(主要靠实盘),更不用说 peer review 等高级点的保障软件质量的手段。甚至软件交付也缺乏标准化流程,很可能是u盘拷一个新鲜编译的 exe 就上线了,交易机器多了甚至都搞不清哪台机器运行的是哪个版本。
另外一个常见的问题是,大家的存储普遍做的很差。研究用的数据,常见的万得、恒生聚源等都以 SQL 数据库的形式提供,策略师一般需要自己进行清洗处理成便于导入 matlab 之类软件的格式,这个过程很容易变成一笔烂账,尤其是和生产系统关联在一起以后,怎么维护清洗代码,怎么保证每天的导出可以在无人看守的情况下正常稳定执行,都是并不简单的工程问题。比方说供应商的数据推送延迟了、导数据的机器内存泄漏了或者硬盘满了、甚至办公室大楼半夜断电了,都对数据质量有直接影响。实盘交易的存储,就更是问题多多,有的干脆没存,出现问题全靠实盘调试;有的会用 MySQL,然而行情数据往关系型数据库里硬怼无论如何都是一场噩梦;稍微聪明点的会上一些内存型数据库比如 mongo 或者 redis,这些东西的稳定性和性能又够喝一壶。在这种环境下,你要想对成交记录做点细致分析,基本上只能靠拍脑袋,因为连准确可靠的数据都没有。有时候我真的佩服在这种环境下野蛮生长的量化团队,除了运气以外能依靠的只有不计成本的试错了。
真正的危险还在于,负责研发策略的 quant 们,因为自身有一定的编程能力,很容易产生一种轻视工程技术的心理,如果除了会写 matlab 以外还能写几行 c++,那简直要自信心爆棚。我理解凸显自己全知全能是一个聪明人的人性,但很遗憾的是系统开发是一项需要百分百投入的工作,一个人绝不可能既是策略专家,又是系统专家。我在工作中接手过很多策略同事的代码,有些质量问题至今还让人头疼不已。这两年里如果说我得到了什么深刻的经验,那就是在团队中划分清楚策略和IT的边界是一道必需解开的难题,既要保证策略师有足够的空间进行创造性研究工作,又要避免他们对生产系统产生破坏性的影响,这件事处理的好坏对于团队发展有决定性的影响。
不过,要命的是,在这个行业里,大多数人实际上不会觉得现有的模式有什么问题,因为的确在表面上看起来,每天系统都在交易,简直歌舞升平。但是你如果把播放时间加快,就会发现,这样的团队一般在规模上很难扩大,因为根本就不具备扩容的实力。最后高层会不得不通过其他方面的办法实现资管规模扩大,比如金融方面的产品设计(收益率注水),或者是人力上的简单复制(每增加一种产品就单独招一批新的开发人员)。而对于开发者来说,在这个局面下,一方面你的工作对整体业绩的贡献相当有限,导致回报不可能有较大的提升,另一方面长期在这种作坊式的工作模式下卖力,对于个人的职业生涯恐怕就算不是毁灭性影响,也是温水煮青蛙式的慢性自杀,因为干的事情无非是机械性的适配一个又一个的柜台接口,对各种现存的不兼容的系统补丁摞补丁,你怎么能在工程能力上有显著提高呢?
所以我们可以看到一个很吊诡的现状,量化团队表面上虽然都会强调IT的重要性,但实际上开发到一定阶段就触顶到天花板,开发模式缺乏能增加更多商业价值的底层架构,当然在行业的业绩增长中难以分到更重要的一杯羹;然后因为IT开发在行业中实际上的不重要性(因为做的烂,老板们干脆想别的办法避开这个薄弱环节),平均而言回报也难以和BAT系的互联网科技公司抗衡,直接造成了行业内的招人难;最后因为缺乏高素质人才的进入,很多典型IT问题无法解决,又难以根本上提升IT的贡献度,陷入一个死循环困境。
以上是我对现存的一些业内问题的理解和看法。问题说了不少,如何应对和解决似乎没怎么讲,因为聪明的我当然不会在一篇文章里写完所有的话,请大家期待后续的文章。顺便透露一点,我们也在考虑把我们的一些工作成果以开源的形式提供出来,让大家看看我们对于这些问题究竟交出一份怎样的答卷,欢迎关注。
说了这么多,关子也卖过了,如果激起了你的一点点好奇心,想看看我所在的到底是一个怎样的团队,我们是如何与众不同的解决上面说的这些问题,那就请你看一条招聘广告:
凯纳资本是由众多具有海外背景和国内证券期货领域资深投资人组成,公司成员毕业于清华、复旦、上交、曼彻斯特大学、伦敦商学院等海内外知名学府。公司目前资管规模接近20亿,并且还在保持快速增长。公司在北京、上海、广州均有办公室,其中在上海和广州都设有策略研发团队。凯纳IT部位于上海,为公司内部数个策略团队提供IT支持,工作包括开发及运维策略回测平台、交易执行系统等,现有系统支持股票、期货等多品种,多周期策略,经过大资金实盘检验,在高频领域也印证过自身实力,现在到了我们接纳新人的时候。
我们承诺你会得到一线量化系统的开发经验,以及一流的技术研发环境,你将体验使用最前沿的技术解决量化交易中的种种难解之题,见证一个快速发展的量化公司的成长历程。我们保证你在这里工作的每一天都将进行有挑战的工作和肉眼可见的成长速度,不会浪费你的时间在无意义的项目上。这样,除去有市场竞争力的薪酬,你付出的努力和收获的成长也会保障你的增值。
同时,我们期望你是一个积极主动,能够快速成长、快速推动所负责项目前进,有活力的新星。你应该拒绝接收低效的工作方式,无法忍受停滞不前的工作状态,厌恶没有条理和复杂的工作环境,以及有良好的沟通能力和自控能力。我们期待与这样的你共舞。
职位:程序员
地点:上海
职位要求:
1、重点大学计算机或者相关专业
2、至少熟练使用一门语言(c/c++[11+]/python/java/javascript 均可),掌握常用数据结构及算法。(熟悉函数式编程技术如 scala/erlang/haskell 或其他语言中的functional功能可加分)
3、熟悉前端技术(html/css/angularjs 等)可加分。
4、熟悉网络原理(tcp/ip),操作系统(文件系统、kernel原理等),计算机体系结构等可加分。
5、熟悉 git/phabricator/jenkins/docker/tcpdump/dtrace/stap 等开发工具可加分。
6、不要求金融背景,相关知识可在工作中进行学习。
工作内容包括但不限于: 参与搭建低延迟交易执行系统的开发,包括底层架构、策略引擎、存储系统等。
有意者请发送简历到 [email protected]