量化投资是个相对而言有些特殊性的行业,不太像其他行业,它比较难以产品化,也就是说,交易思路可能变化很快,如果总是依赖于别人帮你实现的话,沟通成本会非常高,效率会非常低下,有个基础平台,比如在现在大的投行,强大的IT硬件资源、软件平台、数据、各类中间件等都会让你的工作变得很容易,基本上只要专注于两件事情就好了,一是数据分析和挖掘,找到合适的交易模型;二是把交易模型在平台的SDK基础上实现出来,能通过行情驱动进行交易就OK了。
在这个基础上,需要掌握的编程水平其实要求并不是太高,主要是把自己需要的数据准备好,适当加工,在算法方面能够实现并适当优化就可以了,其他的基本上都可以通过调用现成的服务来完成,具体的细节和实现不用深入考虑,有问题还有相关团队可以随时支持。
但是我们是自己从头一个人或者一个小团队做起,需要的掌握的东西可就多了,从数据接收开始,需要了解网络通讯方面的编程知识、多线程概念、缓存,数据的加载,以及如何实现和优化一些数据的计算公式,有些策略可能还需要用到一些算法交易,像VWAP,TWAP之类对数据的预处理、速度方面都有一定的要求,因为程序实现变得复杂,多线程之类的问题跟网络纠缠在一起会导致调试工作变得很麻烦,需要比较高的程序调试技巧。
对于量化投资的指导思想,我个人比较推崇统计套利。推崇巴菲特的本金安全是第一位的。这种指导思想下,权衡、取舍的东西是很多的。但是,目的是明确的,那就是要稳妥的实现个人财富的保值增值目的。那么,什么样的人适合学金融工程?(这是个人自学计算机科学与技术专业和金融工程专业本科到研究生的课程时,经常会问自己的问题)这个问题是一个非常值得探讨的问题。我自己在做数据分析师后,也选择自学金融工程,也是不止一次的扪心自问自己适合做量化投资吗?自己怎样才能做的好?先说结论:金工需要四方面的硬能力,按制约性从高到低排列为:1.编程,2.建模,3.数学,4.金融。但更重要的是,你要有独立思考、独立解决问题的软实力。你若是能做到这些,那么恭喜你,你就是天生的金工从业者了。对于金融机构来讲,相较于S&T, IBD而言,金工可能不是最重要的岗位,但可谓是对从业者的skills set要求最全面的岗位。这个“全面”,指的不是让你像传统trader一样成为一个样样通的杂家,而是需要你在四五个领域都扎得很深。具体如下:
一个好的金工人员,首先要编程好。所谓编程好是什么意思呢?就是说你永远不能让程序限制你的思维。比如说你想回测一个论文中的交易法则,或者说你在交易中有一个萌生的念头,当论文读懂、数据在手的时候,你必须把这个策略用计算机语言重现出来,而且还要尽可能的快,因此强硬的过程性语言功底是必须的。MATLAB, C, R最好都精通。进一步讲,你想要搭建一个策略平台,或者在别人的策略平台进行策略的研究和回测,强硬的面向对象的编程功底是必须的,C++和Python至少要精通一个。此外还有market maker需要SQL, 有fund需要SAS......不一而足。制约绝大部分人走上金工道路的是编程。一般来说一个优秀的quant的编程水平,要和一个计算机系本科生水平差不多才行。对于计算机语言来说,C++绝对是个人编程水平的试金石,长期以来,它同时充当着基础计算架构和数值计算的双重目的。但是,对于我来说,选择Python实现统计计算和金融计算成为了更加高效的时间投入产出。
第二要建模好。编程指的是对语言的熟悉,建模指的是对数值方法、蒙特卡罗模拟、傅里叶变换等工具的理解和掌握。为什么说很多quant是理工科Phd出身,这就是因为他们平时所接触的内容,可以直接迁移到金融建模中,高屋建瓴。
第三要数学好。不要求你能写paper,但给你一个paper你至少要能看懂。 你对概率论、数理统计、微积分、线性代数的熟悉度要高。此外,你要学习随机过程和随机微积分, 因为大部分策略的论文都涉及ito process,布朗运动等内容。
最后是对金融的理解。这里强调它对于我的重要性。我认为,决定一个从业者能否走上正路的恰恰是对金融的理解。不仅要懂交易规则,还要懂一些市场微观结构,更重要的是你要懂市场背后博弈的逻辑。