本章旨在说明,如何进行具相关性的多资产随机过程的模拟。这其中需要一些线性代数的计算,为了简化数学的说明,我们打算利用R的内建函数来执行线性代数的计算。其实,这当然不是必要的,很多C#的链接库都有提供这些功能。以我们打算在后面介绍的QuantLibC#链接库而言,它几乎提供所有金融工程中所需的数学函数。但是,使用R也有附带的好处,他也可以成为我们验证计算的工具。此为,R所提供的绘图功能,也是一项额外的好处。
第一节 资产与相关性
一些复杂的金融商品,其偿付条件可能牵涉到的资产价格不只一个,因此,我们仿真之标的变量,可能不只一个,而且变量之间有相关性。令两资产分别为
.....................................................................................................(3.1.1)
若两变数报酬率之相关性为,则我们可以先产生两个独立常态分配随机数,
与
。
我们可以使用下面的线性组合产生与
,
..............................................................................................(3.1.2)
矩阵表示为,
................................................................................(3.1.3)
我们可以发现,此系数矩阵为一下三角矩阵,,
...............................................................................................(3.1.4)
如果我们转置此矩阵,得到,将两者相乘,得到这两资产的相关性矩阵,
。
当资产数目为n时,我们可以先求得n资产的相关性矩阵,,然后将相关性矩阵透过线性代数的Cholesky分解,找出
。
................................................................(3.1.5)
再由与n个独立的常态分配随机数,,便可产生n个相关性矩阵为的常态分配随机数
。
.................................................................................................(3.1.6)
第二节 R的使用环境
R语言,一种自由软件程序语言与操作环境,主要用于统计分析、绘图、资料探勘。R本来是由来自纽西兰奥克兰大学的RossIhaka和Robert Gentleman开发(也因此称为R),现在由「R开发核心团队」负责开发。R是基于S语言的一个GNU计划项目,所以也可以当作S语言的一种实作,通常用S语言编写的代码都可以不作修改的在R环境下执行。R的语法是来自Scheme。
R内建多种统计学及数字分析功能。R的功能也可以透过安装套件(Packages,用户撰写的功能)增强。因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计)功能。
R的另一强项是绘图功能,制图具有印刷的素质,也可加入数学符号。虽然R主要用于统计分析或者开发统计相关的软件,但也有人用作矩阵计算。其分析速度可媲美专用于矩阵计算的自由软件GNUOctave和商业软件MATLAB。读者可以自行到台大网站,http://cran.csie.ntu.edu.tw/,下载安装程序。
安装完成后,桌面上出现下图左侧的R程序图案,执行之,出现R的对话执行窗口。右侧的图案是另一个免费的程序,RStudio,它是一个整合式R语言开发环境。
R的控制台(R Console)画面相当简洁,在提示符号'>'后,直接打入指令,便可执行。如果要结束,打入q(),按Enter键便可结束之。
R Studio的网址为,http://www.rstudio.com/,读者可下载免费版本使用。
安装完成后,执行画面如下。可以看到有较多的辅助窗口。左侧为指令执行窗口,在此输入指令即可。