我觉得不会, 欢迎打脸!
早在2012年时候,就轻微了解了下Julia语言。 当时有人非常看好这个语言,因为解决了R等解释性语言速度慢的痛点, 还劝我早点研究Julia,这样等几年后Julia火起来之后,我已经是这个语言的小专家了。 7年之后, Julia并没有想象的那么火, 不过令人欣慰的是, 它没有消失,还在蓬勃发展中, 起码Google搜索Julia的时候从一个女人变成了一个语言。
在我的日常工作中, 目前量化投资领域的主要流行语言,主要有R, MATLAB, Python和C++。 C++这种底层语言我们暂且不说, 就说前3者和Julia的比较。
Matlab是为了矩阵计算和科学计算而生,原生数据结构是matrix, 这也导致了他在数据分析领域的薄弱。后来推出了datatable数据结构,但是太多的函数都是针对matrix格式的变量, 用起来其实不是很方便。
R就是为了数据分析和统计建模而生的,原生数据结构除了vector matrix还有data.frame, 可惜和Matlab一样,用户多为研究工作者而不是专业程序员。 其实,R在数据分析和统计建模方面, 比Python要方便直观的多。 R另外一个被人诟病的毛病就是比较慢。
反而Python最初的设计初衷并非是数据科学,原生数据结构都没有数据分析必备的dataframe。 但是后来被大家找到新的玩法。 Numpy解锁了科学计算, pandas开启了面板数据分析, matplotlib开启了数据可视化。
而Julia设计的初衷就是去取代Matlab去进行数值计算和科学计算。随着数据科学、机器学习的崛起, 开始在这方面去寻找突破口,恐怕2012年的时候没想到对手会是Python。
其实我一直认为R是比Python更适合做数据分析和统计建模的语言,因为它的设计初衷也的确如此。 R有数据分析的便利性(原生态的data.frame结构和数学计算表达形式), 画图精美且简单, 统计分析包异常丰富, 另外一个不可忽略的点就是Hadley Wickman对R的卓越贡献 (ggplot2, dplyr, lubricate等包的作者, Rstudio首席科学家)。这一点上,Python即使包再丰富, 在数据处理的便利性上也很难超越R。 所以目前有了Python和R并存的状态。
Python出来的时候,也没人知道他会在量化金融有如此广泛的用户,甚至没想到会成为机器学习的主流语言。可是因为有了numpy,scipy, Pandas等包, Python打开了科学计算和数据分析领域的大门。 但是这还不足够, 因为R和Matlab等语言天生就是干的料。 面对竞争对手, Python需要一些爆点才能吸引众多用户来丰富社区:
1. 面向的是专业程序员而并非研究员, 他们写出的代码更健壮,也更愿意贡献给开源社区,这有了大量的用户基础和庞大的社区。
2. 以sk-learn为首的丰富的机器学习库,以及顺应了最近几年机器学习的潮流
3. 至于deep learning领域Python几乎无可匹敌, 几乎所有的深度学习库都使用了Python(虽然底层不是 Python)
以上几点让Python在数据科学领域大火, 吸引了众多用户, 用户多了社区自然就丰富了, 又更进一步的丰富了Python数据分析和科学计算的能力
Julia仅仅说自己速度快是不够的, 就好比一个怪物猎人游戏可以左右一个掌机的销量一样, 也许有一个神库的出现,可以带Julia走向巅峰。我想,这种情况最可能是因为Julia在矩阵运算和优化方面的卓越表现, 让一些人发现可以直接用Julia来写深度学习和机器学习的底层计算,而不需要C++就能可以拥有不俗的速度,并可以轻易移植到CUDA上运行。 然后Julia慢慢的成为了深度学习和机器学习的扛把子语言。也许是Julia出了一个portfolio优化组合的库,速度和易用性秒杀cvxopt, 在投资组合领域占有一席之地。 如果Julia一旦火起来, quant们自然会去用她。
量化投资工作者(包括研究员和开发者)面对的任务,可以任务有如下几类:
1. 数据库访问、数据分析、探索、建模、数据可视化:
量化研究员一般会打开Jupyter, 画画图、做做数据变换,查看下结果,边写边运行边看结果边思考的交互式编程。 这部分R, Python,Matlab和Julia都能做。Julia速度快的原因它的代码是会被编译的, 但是是只需要一个启动时间, 对于交互式编程来说体验不是很好。当然现在可以有了关闭编译的选项,那么Julia的速度加成也就没有了。
2 计算脚本,函数库开发等
比如开发几个工具库给自己的同事用, 写几个script在命令行下运行去做个参数优化, 模型训练等。 这部分是Julia有点释放的最好的地方。所谓 用Julia写出像Python一样简单的代码却能够运行出C一样的速度,也就是在说这件事。
3. 应用程序开发:
主要是指实盘交易, 回测系统
公司只要有精力,基本都用Java C++等底层语言开发。 Python常常去直接调用运行底层语言开发的库或者分析C++输出的结果。 退而求其次, 对速度没要求的小团队用Python开发肯定是更快捷,这个速度不仅仅指交易速度还有回测速度。 国内交易所的接口一般都是C++的, Python的胶水特性做个wrapper很容易(参见VNPY的做法)。
4. 前端:
只在win下用C#就很方便的写应该应用, Python也能开发前端(参见VNPY), 现在很流行用JavaScript开发基于web的前端页面。 前端开发也需要语言对OOP的良好支持。
5. 日常脚本:
处理你的日常事务, 其实各种语言都可以,比如linux下bash就很常用
这要求和操作系统联系紧密, 字符串处理简便快捷, 支持正则表达式, 能方便的操作文件和文件夹就可以。 Python就是一个很优秀的脚本语言。
6. 网络爬虫:
Python有大量的实例代码和库, JavaScript作为网页编程语言也特别适合做爬虫。
可见, Python是个全能型选手, 除了1,2, 其他4个方面都没看出来Julia比Python更强的潜力。也就是说, 即使威胁,Julia未来5-10年首先威胁的是R和Matlab的地位而不是Python。
我觉得Julia要成量化投资的流行语言,起码要有以下三步要走
1. 完善当前的工具链: 推出更靠谱的IDE, 更丰富的“标准”库,更好的debug工具。 Julia 2018年才推出1.0版本, 这恐怕还要再发展一段时间。
2. 完善社区: 遇到bug能不能很快上网搜到答案, 配套教材多不多。 现在有Julia Computing公司加成,也有MIT的学校教学支持, 否则Julia这些年真的没有太多人推动。
3. 逐步取代:这是最难的, 这需要1, 2都发展的日趋成熟, 并且Python暴露出的缺点过于明显。 用户才会要放弃已有的成熟的Python工具,去拥抱Julia, 否则切换语言的意愿不会那么强。 Python当年在数据科学中崛起时, R和Matlab还不算站稳脚跟,何况前面也提到过, Python是更受专业码农接受的语言。 而Julia面临的时代,要比当初更加困难。
所以我觉得, 在量化领域, 要问Julia在未来5-10年会不会保持现在的趋势,越来越火受到quant的青睐?我觉得也许会。 但是要是问Julia会不会在5-10年取代Python成为量化投资热门语言? 我觉得大概率不会。