量化研究: Julia还是Matlab?

我个人是从事量化研究和投资工作,日常主要需要写策略代码,原来在策略研究阶段,主要是用MATLAB来做,但是,这个速度太慢了,我受不了,后来,一直就想换一门语言工具,后来看到了Julia,感觉很不错,所以快快阅读了其相关的文档,大约15天后,我就把我的策略研究平台转到Julia上了!

如果有时间,我会对Julia和Matlab的速度进行更为详细的比较,这里只说说大体的比较。

从我策略代码的运行速度上看,Julia要比Matlab快10倍以上!我跑一个策略从2010年4月至2014年中的IF1分钟线CTA策略,matlab一般是30秒-5分钟或更多都可能,但julia写策略大部分在0.05秒到3秒之间。

需要说明一下,速度的比较基准是,matlab的数据操作对象是dataset(),不是double[],如果是double[],速度估计没有差这么多,这个没有实证数据。julia的数据主要是用Array{kbarData,1},和Dict()格式,其中kbarData是我自定义的数据类型。另外,matlab的优势在向量和矩阵运算,在这方面,因为我策略逻辑中,很多地方不能用到向量计算,所以matlab速度也会吃亏。

但,这并不是说,在某些函数上,julia每个都要快,这个并不是事实!在不少的地方,matlab还有做得不错的!包括save和load,当然,库本身的优势那是无可比拟的,特别是在神经网络等上面。另外,在向量或矩阵运算上,matlab至今可能是无人能敌,优化的功力非其它语言能比。只能说,Julia适用性好,综合能力强,在一些点上,和matlab仍有距离。

二者反映出的主要的问题在于:(个人认为)

  (1),matlab没有List,dictionary 等数据结构,这个是致命伤. 本身在索引查询上就有效率低下的问题,dataset类型本身就比较慢,这速度太吃亏了。而julia主要是对Array{},Dict{}进行push!。matlab起初本身的设计不是语言专家来设计的,而更多的是考虑一些行业用法的需要。所以,这个设计上的大伤,很难改。这点有点象R呀。

(2)matlab的函数封装时,过于考虑适用性,比如,不仅要支持标量,还得支持向量,和矩阵等,这个可能也会影响部分性能。而matlab在用时,往往为用其内置函数,如果不是向量运算,其实效率并不高。

(3)编译器模式。Julia选择的是LLVM-based just-in-time (JIT) compiler,据说,这种编译器可以带来更好计算性能。

(4)面对对象特性。Julia相Matlab相比,虽然都是函数式语言,但Julia有更好的面对对象的元素,而matlab在这块则很差,则类等设计的简直无语!。

(5)静态特性。Matlab是纯动态语言,而Julia兼于动态和静态之间,在这方面,有利于减少函数的参数的前置检查,减少转换。所以更容易提高速度。

    总之,julia的创始人吸取了matlab,R,python,perl等许多语言的优点,最核心是要速度。所以Julia总体性能上快于matlab那是很正常的事情。否则,谁用?

    当然,Julia的问题是过于年轻,国内用的人极少,资料极少,国外的网站资料还要经常翻墙才能看到,郁闷,另外,社区和中文资料极少,库有一些,够用。比MATLAB差了好远。

    仅管如此,我还是看好julia,因为它为快而生,当然它本身还在优化和发展!这正是我需要的,它更适合做量化策略研究,时间就是效率,时间就是收益!另外,是开源的,也是未来的发展方向!

总结,因为快,所以推荐julia做量化策略。



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值