金融计算为什么选择Matlab (Why Chose it)

金融计算为什么选择Matlab (Why Chose it)?

这是一个老生常谈的问题,使用Matlab编程也快十年了,每次有人问这个问题,我的回答是:”你用C++编写的一个矩阵逆运算的程序试试,N=10的时候或许你的程序可以运行,若当N=20或者计算一个奇异矩阵的时候,你的程序会发生error! ”

最近,忙着翻译《Numerical Methods in Finance and Economics: A MATLAB-Based Introduction》(一本非常好的金融计算的书籍),作者对上述问题阐述了自己的观点,而且非常有说服力。经过几天的思考,我对这个问题有了新的认识。

一、数值计算需要专业的计算平台

1. Matlab与C++的比较: Matlab与C++具可不性,Matlab更专注于数值计算,而C++是普世的编程语言,起初matlab都是使用C++的编写的。 换句话说,Matlab可以实现的C++都可以实现,但关键问题是个人的编程能力与算法能力。打个比方就如开车有手动与自动档一样,实现同样的算法在同样的编程技术的前提下,C++或许一定比Matlab快,这是由于语言本身决定的。

经常有人说Matlab的速度不干恭维,这或许是错的。因为实现相同的功能有不同的算法,相同的算法编程的实现技术或许不同。这样说,对大多数人来说,如果你认为Matlab函数计算慢,同样的功能使用C++实现或许更慢。

2. 数值计算需要涉及大量的编程技巧

例如:数值取整,fix(1)=1,  fix(1/3,1/3,1/3)可能等于0,由于数值计算理论是建立在实数基上的,【1,0】上的数是无穷的,但在计算机中【1,0】数是有限的。fix(1.000)=1,fix(0.999999)=0, 类似的问题有很多,例如在优化问题的下降方向中,很多时候根据理论进行修改,引入各种的计算数值技术。 我们在C++编程中,考虑到情况不是很完善,使用的数值技术不够多,有些bug还没测试出来,即使出现了问题或许也无从下手。Matlab在计算中,如果遇见某种可能会出现问题的情况,会有提示,例如优化算法,提示下降方法范数小于1e-6。

3. Matlab提供了强大的基础运算库

矩阵乘法、除法、逆运算、特征值(特征向量)等基础计算,而这些库经过了十几年与大量项目的检验,是稳定的。如果没有这些库函数,或者使用C++ GLS库, 如果没有这些库函数,你的代数计算基本无法在C++中实现。

4. Matlab提供强大的函数库

以优化算法为例,优化算法在线性回归、数据拟合、统计参数计算中经常需要调用,当然也有人使用Excel进行数据处理,如果对优化算法略有了解的,应该知道优化问题存在多极值问题、局部优化与全局优化问题。或许同一个模型,同一个分布数据,使用excel计算会得到不同的结果。为什么? 因为优化理论说明了,对于多极值问题,不同的初始点会特到不同的极值。

二、使用Matlab需要数值理论知识吗?

为降低对使用者的理论要求,很多软件都提供了GUI,点点这,点点那结果就出来,那出来的结果对吗? 我还真的不知道

如果你掌握的数值计算理论,对于某些问题的计算结果你可能会有些定性的判断,然后再于Matlab计算的结果进行对照,如果两者相符,结果大多都是对的。如果有差异,需要寻找原因。

金融计算,直到看到Matlab计算alpha的函数说明时,我才知道有七八种计算alpha的方法。金融模型对结果的稳定性与正确性更高,如果出现逻辑错误或者因为浮点计算引出的问题,Matlab会给予及时的提示,如果没有这些提示,没有更多的思考将结果用于交易执行,后果严重。

这次先写这些 !

看到这,或许你认同我的观点,接下来学习Matlab需要阅读那些书籍?

1. 基础学习推荐:精通MATLAB R2011a(附光盘1张) 张志涌

2.金融计算推荐:  金融数量分析基于Matlab编程(第二版)(电子版预售)

                                                                                                             Ariszheng   2012-7-18

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>