Quant如何运算百万行的数据
1、一,使用内存数据库(如KDB),百万条数据导入内存数据库也不过100MB左右的内存占用,毫无压力。在此基础上使用系统支持的语言(比如KDB中的Q)进行算法开发。这是quant界比较常见的一种方案,应该有成熟社区,容易找到帮助,如果你所在的机构正好有这方面的技术积累,就更方便了。缺点在于,数学计算比较受限于系统,如果你用到一些系统没提供的算法,开发成本比较大。KDB的语言本身需要陡峭的学习曲线,甚至很多方面可能非常晦涩,比如一个 ! 就可以根据上下文不同表示多种不同的操作符,从取模到生成列表,对于新手来说入门可能有些困难。
2、二,python神器:ipython+pandas。ipython提供一整套的类似matlab的计算环境,包含了丰富的数学函数和画图工具,示例可参见http://nbviewer.ipython.org。pandas则是专门针对金融类计算设计开发的计算库(Python Data Analysis Library),底层使用HDF5格式(一种高效的数据存储格式,对于金融时间序列来说远远优于CSV),上层提供很多强大的内建函数(统计类的mean,stddev,类SQL的group by,order by等等),而且本身工作在python环境里,可以直接使用python做编程方面的工作。更值得一提的是HDF5也是matlab支持的存储格式,所以有必要的时候可以无缝迁移到matlab(如果正好有某个算法是matlab提供而python没有的)。需要强调的是python在科学计算方面有巨大的优势,是统治级的语言,像并行计算,GPU之类都有很好的支持,不用担心要自己搭框架。
3、三,其他备选的还有如下一些:The Julia Language 一个比较新的计算语言,介绍里强调了高性能,具体用起来怎么样不清楚所以不评价。Java/Scala,java本身代表巨大的社区支持(丰富的第三方库,文档,优秀的开发环境),scala则提供强大的开发能力,以及像Apache Spark™这样的大数据处理利器 。java系在各种数学软件比如Matlab,Mathematica,R都可以直接内嵌,所以可以结合java在数据处理上的性能优势和数学软件的数学功能来一起使用。上述任何一条方案都有非常不错的发展空间,相对而言题主的问题本身非常简单,肯定都可以胜任。具体选择哪个方案最好还是自己把相关资料通读一遍,有一个初步认识以后再结合自身情况选择。