金融专业,学matlab和R哪个好?

  • A+
所属分类:Python R语言 工具箱

金融专业,学matlab和R哪个好?

金融数据应该用R的场景更多,但是matlab也绝对值得学,很简单很容易上手但是真的非常非常强大,andrew在他的机器学习课上讲过一个笑话:

“我有一个朋友,他的一个学生赚了很多钱回去拜访他,学生很激动地感谢他,他看到那位学生很成功就问他你怎么这么成功啊,是我的课上教给你的哪个机器学习算法很有用吗?学生回答说no, it is matlab”。

如果你的志向是非Jane street不去,那么就Haskell, erlang走吧…

一个比较看起来政治正确且有逼格的回答是,工具都是次要的,主要的是你的策略和方法。但是实际运用中,一个好工具的重要性不逊于一个好想法。道理是,你在实际开发策略的过程中,你的思维是跳跃性,是片段的。更多时候是一种,如果我这么做,会怎么样?我觉得,这两个数据之间应该会存在一种关系,事实上,是这样吗?

观察,假设,求证,进一步观察,进一步假设,进一步求证。量化工具帮助你提高求证的效率,而求证往往是整个策略开发中最废时间的,你的求证效率直接影响了你对策略开发的深度,即你能对你的想法问出几个深入的后续问题。须知,很多策略的赚钱与亏钱之间,可能根本逻辑没有变化,仅仅是参数的调整而已。

工具的重要性说完后,就是你觉得在量化交易中用的最多的数学工具是什么?如果你跟我一样觉得是统计的话,请选择R。

我曾经也纠结过这个问题:R, Matlab, SAS, Python到底学哪一个?

举个简单的例子,做线性回归,这四种语言都可以一行代码解决,但是语法各不相同,这其中真的有高下之分吗?没有的。在面试和工作的过程当中,真正让你头疼的会是你到底理解不理解线性回归,而不是这四种语言的语法有哪些区别。我来说几个我在面试过程中遇到的线性回归的题目:

1. 有一个两列的矩阵Y和X,先用Y回归X,再用X回归Y,把两个回归结果的斜率项相乘,结果大于1还是小于1?

2. 有一个data frame要做线性回归,回归之前我不小心把每一行都复制了一遍,请问回归出来的结果Beta项会变吗?R方会变吗?t和F值会变吗?p值会变吗?

3. 用一列X回归Y,得到R方,这个值和X与Y的相关系数r的平方在什么条件下相等?什么条件下不相等?

请问是这些问题难到还是“怎样用r做线性回归”?

这些还只是最简单的线性回归,当你学到比较复杂的算法的时候,你更会体会到“实现一个算法,理解算法比理解语法重要得多”。

当然,算法实现的好不好很多时候取决于你使用了怎样的数据结构,所以在这种时候如果你很好地理解了一种语言的语法,对于简化和加速代码是很有用的。举两个很简单的例子,用python做data analysis,如果你使用python本身的list去hard code,光是读一个2G以上的文件就得等半个小时,但是如果你用pandas包去读的话10分钟撑死了,因为pandas的底层是用c写的,所以会出现这种“调用了一个包反而加快了运算速度”的现象。再比如用r做同样的工作,如果你用read.csv()去硬读的话也要花半个小时,但是如果你先把数据的第一行读进来,然后检查每个变量的data type,然后使用这个信息再把整个data table读进来,这样就可以节省2/3的时间。问题是怎么检查一个变量的data type?你又要怎么把这个信息传递给下一个读取数据的函数?这就需要你真正理解R的语法和数据结构。

如果你和我一样都想学的话,推荐一下这几个免费的资源,我只列举和data analysis有关的课程:

1. R

https://www.coursera.org/specializations/jhu-data-science

JHU在Coursera上开的课,我觉得第2、3门比较好,算是讲的比较深入,作业也很难,其他的7门太简单了,不过可以给你普及一下基本的语法。

2. Python

https://www.udacity.com/courses/ud036

Programming Foundations with Python,这门是讲最基本的python语法的, 有基础的话一天就学完了

https://www.udacity.com/course/viewer#!/c-ud170/l-5442503234

intro to data analysis,主要讲pandas和numpy

https://www.udacity.com/course/machine-learning-for-trading--ud501

ML for trading, 这门课的第一部分详细介绍了Pandas和numpy

3. Matlab

https://www.coursera.org/course/matlab

这门课是Vanderbilt开的,我觉得虽然叫Introduction但是其实已经把matlab讲的很透了。

4. SAS

我没有找到免费的资源,但是我在国内买的这本书我觉得挺好,上学期data mining的作业基本语法全靠它。

48fcdc04f99c52814d5bfebf8aad15a5_b

我上学的时候的学科是精算,经常使用marlab和R。我上学授课期间是有的课程都教授的R, 而且从统计方面来看, R确实非常的实用。所有的老师都非常精通的使用R。其强大的功能也实在让我跪地折服。但到我写毕业设计的时候,我发现对我的毕业项目R就在很多方面不能帮我了。不是说R不够强大。而是说在很多方面的情况R不会去涉猎。

而Matlab就不同了,我所有在建模型方面的想法都可以使用Matlab做出来,但在一些反而特别需要统计回归方面的是就会显得有些冗杂和缓慢(当然导师一直说我的代码非常的没有效率,我觉得高手肯定可以解决这个问题:))

对于金融的学生,R在统计在计量方面已经足够好了,如想进一步想了解web等等python也该学学,无论是R的rcpp还是python都能与C混编。MATLAB我个人不喜欢,不过不否认也是个好工具。绝大部分做quant的职位要求C和C++,因为可以在底层优化计算效率,这在高频交易中非常重要。同时大部分要求至少一门脚本语言,比如Python. 如果搞data mining基本上Python 和R中会挑一个.

最后我想吐槽一下:

一个统计专用的,一个是万金油。Matlab好一些,范围广但是不深,适合一些简单的分析,画图也好看。R主要是数据,统计类的,其他的做不了,虽然有ggplot但是画图是真的丑。其实金融+数据明显VBA简单粗暴实用,可以学习一下。

其实你会发现在现实生活的金融分析领域内,学哪种语言都不是由自己说了算的。

也许你学了Matlab,但你发现你研究生的导师竟然是统计背景出身,用的是R。

也许你学了R,结果发现工作中大家用的是Matlab,为了方便对接,你又要重新学Matlab。

刚刚学语言的时候免不了担心学哪种语言好,但其实后来发现,重要的不是哪种语言,而是用编程语言解决的问题的能力。学一种语言也真不是什么困难的事。但是没有动力的单纯学语言也不是件容易的事,有的时候也感觉茫茫大海,无从下手。不过不同语言往往有自己的优势,重要的是根据具体问题,去寻找,去发现,去学习,让自己熟练。

最近matlab和R都在用,遇到的最多的需求是数据可视化,俗称画图,在画图方面如果是空间数据尤其是二三维的matlab画的好看,如果是时间序列或者高维或者一些乱七八糟的factor比较多用R比较省事。数据量不大用Stata,量大用matlab,R胜在开源。其实会一个在学其他的都会容易一些的。R,简洁好用是一款开源软件,一般公司可能不会花钱买matlab的license。综合而言,对于数据分析,R真的是一个非常棒的软件。但Matlab却可以做很多其他的事情。

本文来自知乎网站,金融专业,学matlab和R哪个好?

南霁月
基于大数据的用户特征分析
R语言实战(中文完整版)
Excel数据可视化分析方法大全
中国大数据生态图谱&大数据交易市场专题研究报告

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: