关于数据分析师出路的思考
本文在Creative Commons许可下发布
个人认为数据分析师只是一个初级的职位。往上走应该是数量关系专家。而且数量关系专家方向应该是基于个人的风险偏好的,高均值低方差就选DS,低均值高方差就选Quant。
可是必须多说一句,你做DS可以在业余时间做点中低频量化策略赚外快,做Quant就很难找机会赚外快了...
我从市场的角度来说说,数据科学家(data scientist)需求量远远大于quant。
最简单的办法,打开linkedin,分别搜索data scientist和quantitative analyst/researcher/etc...,只能说到这里。
接下来,说说我心中最重要的五类计算机语言。
在我看来,有五类语言构建了一个丰满的编程能力强的Quant的一切,它们分别是:效率类语言(C、C++、Java等)、胶水类语言(Python、Ruby等)、科学类语言(Matlab、R等)、Alpha演算类语言(Lisp、Scheme等)、查询类语言(SQL、Q等)。这是基于我理解浅薄的分类,完全与计算机科学的规范化分类(如面对对象语言、函数类语言)不相容。持不同意见者大可付之一笑。
1、效率类语言(C、C++、Java等):在80年代涌入华尔街的那帮高能物理博士们是最早的Quant。在那个年代,可以选择的语言不多。要么就Fortan,要么就C/C++了。所以在当时基本上这些语言同时充当着基础架构和数值计算(比如Monte Carlo)的双重目的。但是现在各种胶水类语言、科学类语言多了起来,而且由于单机性能越发强悍,效率再也不是唯一的诉求了,因此目前C++、Java大量应用于金融系统级的开发,和对于效率要求极高的实时定价等领域。这类语言最大的特点是计算速度快,编程复杂度高,维护难,同时原生语言普遍不支持向量运算。
2、胶水类语言(Python、Ruby等):这些语言是新世代Quant的福音。网络上传说现在JP Morgan这边利率类产品的定价软件也在从Java像Python转移。实现同样的代码,Python、Ruby的实现速度比效率类语言快很多,而且在机器速度越来越快的今天,差距已经不是不可接受。这些语言最大的特点是比较快,编程复杂度高,维护相对简单,同时大量的包(比如Numpy+Scipy)可以轻松实现向量运算。
3、科学类语言(Matlab、R等):通常,科学类语言最大的特点是支持向量运算,同时各种附加数学、统计包极其丰富,但运算速度无法与前两类相比。在一个具体的投资/交易策略、模型投入实际使用前,你需要快速的去实现和验证你的想法。这个时候,科学类语言就有绝对的优势。验证思路有效后,再用效率类语言或胶水类语言开发成系统级组件。你可以理解为科学类语言是用来造概念车的,而前两类语言是用来量产的。而在具体的职业角度,造概念车的这帮人一般是Pure Quant,而实现量产的很多是Quant Developer。当然也有两者合一的集大成者。
4、Alpha演算类语言(Lisp、Scheme等):我第一次对这类语言感兴趣,是在钻研R过程中拜读了SICP。我个人感觉目前很少听说用这种计算机语言,但是不排除以后流行的可能。因为他就是我们通常说的函数式语言。
5、查询类语言(SQL、Q等):SQL就不必说了,金融公司很多时候都是使用Oracle等关系型数据库,SQL是基础。Q据说是Morgan Stanley为了应对金融中的海量数据而采用的一种非关系型查询语言,特点是极快,有SQL的基础可以很快掌握。
个人认为:如果你是整天与交易策略和模型睡觉,那么2、3是必须的;如果你是开发为主,就说通常说的Quant Developer,那么1、2、5是必须的;如果你立志让编程不成为你做量化投资的障碍,那么1-5全都是必须掌握或至少了解其思想的。
不管是作为Quant还是Coder,都不可拘泥于语言。语言只是其背后设计哲学的体现。这就等同一个量化投资从业者不可拘泥于产品一样。数量金融的根基永远是供给需求、金钱时间价值这些基本的经济学理论以及现金流的相关概率这些基本的统计学思想。如果拘泥于术而非艺,那路就会越走越窄。所以出现了2种需求,可能还有其他需求。1、追求高收益率,低风险,2、摆脱监管。
首先讲讲第一种需求,对于高收益率的渴望是很多投资人的一个目标。但是收益率取决于未来的价格,未来具有不确定性,如何在交易场交易的各种金融资产中准确把握和预测金融资产的价格和走势就变得很重要了。金融资产有股票,外汇等原生金融资产也有期权和期货等衍生出来的产品。如何预测不确定资产呢,一般来说有这么几种方法,分析历史数据的统计规律性,得出一些规律,比如统计学,计量经济学,随机过程,随机分析等数学方法,这些数学方法有区别,但是共同点就是基于历史数据,和均值的伟大概念,做一些数学处理,这种处理舍掉了一些专业人士认为不重要的东西,保留了一些东西使其简约化。理论界基于这种研究方法诞生了一些所谓金融数学,金融计量经济学等学科。在美国那种比较有效的市场,在没有黑天鹅事件的情况下,这种预测方法可能还是比较准,但是在极端情况和不发达的市场,这种基于理论假设的定价方法不会很行的通。一般,均值方差模型,CAPM理论,MM理论,EMH假设,B-S定价公式都是基于有效市场的一连串完美假设做出来。这些理论完全掌握也需要运筹学中的优化理论,随机过程,偏微分方程等三门数学书籍,才能真正从推导弄明白。如何控制风险呢,一般来说对于实体经济可以买保险,但是对于金融资产投资的胜负,一般来说没有常规的保险。因为保险产品开发也是基于保险的基本原则的。但是此时一些优秀的投行对于信用风险却动了脑筋,开发了一系列的信用衍生产品来转移信用风险,此时金融衍生品居然有了新的用武之地-风险转移,丰富了风险管理的功能。
第二、摆脱监管的要求,也诞生了一些金融衍生工具,比如一些合约或者一些组织的建立。地方ZF融资平台算不算一种金融工具,留给大家去议论吧。
所以对于金融工程核心或者精髓我认为是满足客户的需求,一般客户的需求有追求高收益,低风险,规避管制,或者某种特殊不可告人的目的,金融工程师去设计这样的金融工具让客户满意。什么随机过程,期权定价,偏微分方程或者金融计量技术都只是技术性层次问题,无非是一种数理技术对于现实情况的简化和模拟,当然你也可以按照其他数理技术处理。效果怎样,不好说。
现在是计算时代,数据时代。面对的金融数据很广阔,如何更好地满足客户的需求,需要会分析数据,处理数据,这势必需要SQL数据库和数据结构,统计,计量分析等理念,去数据挖掘有用的金融经济信息。当然分析数据表面也是不够的,还需要整体宏观经济分析能力以及财务分析处理,多者结合才可能分析的准确,因为国内市场不是很完善,需要综合很多很多信息。分析完了,就要实际投资,投资什么,怎么样投资,遵循什么原则,就是集中关心的问题。
大的基金机构一般是组合投资,分散风险。组合投资就需要计算机编程建模能力,通过计算机编程建模去下达命令和争夺时间下单。一个好的计算设备会很有优势,西蒙斯团队充分证明了这一点。公墓基金受到的管制和关注比较多,很多情况放不开。一些私募阳光基金团队,利用大规模计算设备,通过量化策略开发测试等手段进攻投资界,使用的量化投资的原则还是技术分析等套路,只是借用机器可以更加客观,时间更快。当然有一些老经验的投资人对于量化投资嗤之以鼻,他们继续通过财务报表分析或者其他手段投资。能够说的就只有这些了,综上,我就是觉得这个是数据分析师往上走到数量关系专家的一条道路而已,最后怎么样,也是一个生存者偏差的问题,最后,唯心一点,自己把自己能够做的都做了,结局就看命了。