前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始学量化(二):python/matlab/r/sas/vba选哪个

从零开始学量化(二):python/matlab/r/sas/vba选哪个

作者头像
量化小白
发布2019-04-24 15:27:04
5.7K0
发布2019-04-24 15:27:04
举报
文章被收录于专栏:量化小白上分记

上一篇总结了一些入门的知识内容,本文结合个人经验,总结编程软件方面的内容,对各种软件在量化上的应用做一个对比,供参考。首先我的观点是,没有最好的软件,只有最适用的领域,先明确自己想做的是什么,再选择最合适的软件。这不是一篇广告文,也不是百度复制粘贴的结果。

我个人来说,最开始是大二做数学建模开始学matlab,不过现在来看其实建模用python也挺好,不明白为什么当时所有的人都会推荐matlab,可能已经是一种传统了吧。之后大三上统计课学习了R,上计量课学习了stata,之后大四研究生实习又学了python,vba。整体就是这样,接下来分软件说说自己的体会。

MATLAB

MATLAB全称matrix laboratory,特性也跟名字一样,对矩阵的处理功能非常强大,对不能装到矩阵里的元素比较吃力,当然也可以是我菜。

先说优点,量化或者数据分析来说,正如前面说的,matlab对矩阵的支持非常强大,二维以及更高维的矩阵,虽然python,r里面也有矩阵这样的数据类型,但感觉没有matlab的好用,比如python里的矩阵,刚开始学经常会被矩阵里的中括号搞的很晕,二维或者以上的矩阵,每个元素都会带一个[],matlab看多了用这个会有点不习惯,比如下面这些。

相比较来说,matlab的矩阵就非常简洁了,至于支持矩阵运算和向量化的函数,这个各个软件基本都差不多。

缺点来说,matlab对字符串的支持不是很方便,尤其是做量化很多时间都要考虑到日期,股票代码等等文本数据,矩阵里只能输入数值形式的,字符串只能放到cell,struct,或者fints里面,但这些的运算操作就没有矩阵那么方便了。一般都会用cell2mat,fts2mat之类的函数先转成矩阵再处理。

此外,老版本的matlab没有带标签的数据格式,类似python,r里dataframe这种,用矩阵的话,需要自己记住每一列代表什么含义,这种情况下自己写还好,但看别人的代码会非常痛苦。 新版本的里面有table格式可以解决这个问题,但碰到的大部分用matlab的人都还是习惯用原来的那些数据类型。

还有,matlab中各种机器学习算法没有python,r那么全,如果是做这方面的话肯定不会选matlab。

最后,matlab不是免费的,虽然个人可以用破解的,但企业用破解的还是有风险,而且太大了,装个python才几百M,matlab几G。

python

python应该是目前在量化/数据领域最广泛应用的软件了,之前实习也基本是用python,不论是数值还是文本数据,都能很好处理,而且也有各种算法模块可以直接调用,省去了自己编写的麻烦,语言也很简洁。

所以如果是工作中用的话,最建议学的还是python,只要会用python里的numpy,pandas,scipy,matplotlib,sklearn,一般的问题都能处理了。

但python也有他不适合的地方,python在量化上比较适合用在数据处理和回测上,但如果要做一些其他的就会存在一些问题,后面说sas的时候会举一个例子。

R

R经常会被用来跟python做对比,我自己用下来的感觉是,量化/数据上能用python做到的,r都有类似的模块可以做到,非常同质。之前刷kaggle也是用R刷的,各种机器学习算法也都有,没什么影响。

会有一些很细节的地方,可能r里面有但是python里面没有,比如copula函数相关的,python里面只有一两个模块,而且功能非常简单,但r里面有若干个模块可以调用,而且有很详细的说明文档,所以如果做这块不想自己写的话,用r会好一些。

不过去实习下来感觉用R的非常少,学校里老师上课写论文倒是用R多一些,所以可能R更学院派一些。而且r跟其他语言交互一定没有python方便,这也使得r的性价比低了不少。

SAS

SAS也是大三上统计课的时候学过,但这个我学的很粗浅了,非常不熟练,但印象非常深刻,因为实习时候碰到的一个具体问题。

SAS也是各种算法模块都有,这一点跟上跟python,r不会差多少,但sas的代码写法跟其他软件不太一样,用多了python,r去写那个还是感觉怪怪的。sas可以对一个命令逐行去运行,不需要自己加循环,可以少写一点代码。SAS有一些函数的默认跟其他软件不太一致,比如merge函数,其他软件一般是默认内连接,只保留匹配到的,但sas默认是外连接的。

SAS有一个非常好的特性是提取数据库里的数据,create table生成的数据是存在硬盘里的,而python,r等等其他软件提到的数据都是存在内存里的,这样就没法用python和r提太多量的数据出来,而用sas甚至可以直接把全量数据提出来用,这样的特性在一些时候会非常有优势,比如在指数编制时候,python,r就有些废了,成分股跟全量股票匹配再跟分红配股股权分置等等这些做匹配的话,用python没法一步到位,内存会爆掉,只能一期一期循环,但是用sas就很方便了,直接create table然后用sql语句匹配就可以了。

而且因为数据库中是可以通过between语句进行时间点和时间范围的匹配的,SAScreate table之后也可以,比如A表里每行是具体的年月日,B表里每行是起止时间段,这两个表是可以根据起止时间段匹配的,但是python的pandas包以及R里类似的包里没有这种操作,如果要实现点跟范围的匹配,只能循环。这也是其他软件不及sas的一点。总结起来SAS优点在于大数据和各种需要跟数据库交互的操作

SAS缺点也很明显,非常大,十多G,很占空间,启动慢,而且还是收费的,破解很麻烦,所以选择这个做量化回测的应该很少了,做风控数据还有指数编制的挺多。

VBA

VBA是比较特殊的一门语言,内嵌在OFFICE中,是VB的简化版,不仅仅是针对EXCEL了,WORD,PPT里都可以用,有时候也叫宏,基本是一样的,只不过VBA是码的,宏是录的。

VBA最为人诟病的地方是他的编译器实在是太垃圾了,而且还没有其他插件可以支持,只能用官方的,长成下面这个样子,excel/word里按alt+F11可以打开。

看上去跟常见的编译截面都差不多,有文件窗口、变量窗口、编译窗口,历史记录也是有的,但真的去写一两次就知道有多坑了,debug非常不方便,报错提示你可能根本不知道他在说什么,不会像其他软件那样提示的很具体。

所以我一般能录就录,能不写就不写,录的逻辑是,你可以在excel把你想通过代码实现的功能操作一遍,编译器里会自动生成代码,直接运行的话效果跟操作时一模一样的,再稍微改一改就可以用了。但这种方法比较有局限性,他仅限于你的操作时能在当前的excel里能内完成的,比如画个图,调个格式,做个数透什么的,但如果你要把一个文件夹下几千个excel并到一起执行一些操作,这就只能忍受垃圾编译器慢慢写了。

VBA最强大的地方在于跟OFFICE的交互,进而实现批量和自动化,这个是前面几种语言比不了的,比如你可以用python/r做统计分析把数据输出到excel里,然后再用vba作图/算各种统计量最后出一份报告或者做一份模板,整个流程最终可以实现自动化。

可以通过vba把excel的一张表视为数据库中的表,用select语句进行操作,如果数据量很大的话,上百万,直接操作分分钟卡死,用vba会很快。

个人理解,excel中写vba尽量减少激活各个sheet单元格,跳来跳去,有什么东西可以直接往里写,这样会快一些。word里难度在于定位,excel因为是矩阵,有行列标好一些,word一种可以先把整个文档都画上无色的表格,然后表格内进行定位会容易一些,还有一种是控制光标的移动,设定移动单位,慢慢调。

STATA

STATA和EVIEWS是两个功能非常类似的软件,计量上用的比较多,我当时选择了stata,没有学EVIEWS,整体来说,都是计量软件,STATA对面板数据支持比较多,EVIEWS对时间序列支持更好,STATA需要码代码,EVIEWS可以码代码,也可以用鼠标点点点。

量化/数据上偶尔也会用到,比如做一做协整之类的检验,回归等等,但必要性不是特别强,pyhon也可以完成。

SQL

如果你说SQL不算编程语言,我也赞成。

SQL是取数据必须用到的语言,所以这个必须看一看,基本上会SELECT,WITH语句就可以了。建库,写入等等的操作,实习生基本上是不会有的,所以除非你打算用自己的电脑建个库,也不用太关注,用到的地方很少。

总结

综上,观点很明确,如果你一定要学一门语言,个人感觉学python性价比最高,一方面基本上你所有需要的操作用python都能搞定,另一方面,python跟r很类似,python的numpy跟matlab逻辑差不多,会这一个以后需要学别的也能很快上手。

如果你一定要学两门语言,或者说虽然不做量化/数据,但是我还是想学一门,我建议学VBA,会让你的OFFICE非常溜。搞个下拉菜单,事件什么的,更会让别人对你刮目相看。

当然以上的并不全面,如果你是做高频方面的,可能还需要学C++,如果是做数据可视化的,多半还需要Tableau。但不管怎么样,有空的时候还是先学一点比较好,临时抱佛脚这种事情,绝对不适合零编程基础的人。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化小白躺平记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档