开源语言在金融行业有着天生的优势,也有劣势,取决于你干什么。我个人经验来看,如果是影响广泛business-critical的业务,很多还是会以SAS为主。

拿我们组的工作举例:我们是做算法投资的,不是高大上的对冲,也不是什么投行自营,就是传统的基金公司(DB那家)。这类传统资产管理公司的特点就是资金量大,追求稳定。

平时工作内容分成两部分:模型/算法开发(prototype)和商用(production deployment)。Model development(或者我们叫prototype)一般用R和python解决,优点自不用说,开发速度快,灵活,可用的package多,有新的想法了可以随时改动,有疑难杂症了google一下基本都有讨论。

当最终的模型和产生的投资信号过了投资委员会后,就要转到正式商用,也叫production deployment,这个时候所有用R或者Python写的东西要全部转化为SAS语言,同时有其他胶水语言辅助,如perl...

所以对我们来说开不开源是一半一半,我猜想估计其他一些类似机构也是这样。总的来说,有以下几个原因导致我们在production的时候还是要用SAS:历史遗留问题:我们的流程基本是沿用DB当年的监管资本算法优化的软件架构,现在转为用于投资,再开发的成本低,行内的一些合规流程也都走过了比较成熟

怎么写SAS语言:这块有可能是一个比较特殊的理由。我不知道其他金融机构怎么做的,我们是基于组里开发的一个编译器,主要是基于generative programming的概念(不知道怎么翻,自动编程?产生式编程?)也就是你把算法的逻辑写在Excel里,像一个决策树一样的格式,编译器会查错,然后自动生成SAS的源代码。因为这个,对于我们来说从开源prototype的code转移到SAS这块的成本很低,而且(从算法逻辑角度来讲)好维护,如果有信号不对,我们可以很容易的直接查看逻辑树,而不是看代码本身,稍微修改,代码就又有了。这里要说一下,我们都不是专业IT科班出身,一个搞物理的,一个数学,一个经济,我们做的应该算business programming,主要是为了写算法和策略,而不是IT层面,这方面我们不是专家,能用就行。

可控制环境(controlled-env):这个主要是从可追溯性和监管审计等角度来讲(traceability & auditability)。基于开源软件难免不用到各种package,而这些package也是没有个统一性的,有的人喜欢A,有的人非用B,虽然最后都能得到理想的结果;每个package又有着不同的社群开发维护,难免不出个bug(稳定性),尤其对于金融机构来说,不排除有人植入恶意代码。从银行或者投资机构角度来说,要把这个freestyle的摊子给变成尽量清晰透明可控的一个环境,真的太难了 - "不要低估部分金融从业人员的程序水平,但更不要高估金融机构IT部门的整体水平..." - 懂得人自然明白我在说什么。。。

先写到这儿吧。美资大行或资管那边我不清楚,如果有熟悉的,很愿意交流一下。