请选择 进入手机版 | 继续访问电脑版
楼主: andydong1209
1077 1

[结构型衍生品] 金融工程与并行计算:第三章 多资产模拟与R的使用 Part 1 [推广有奖]

  • 0关注
  • 4粉丝

讲师

73%

还不是VIP/贵宾

-

威望
0
论坛币
1253 个
通用积分
11.1509
学术水平
9 点
热心指数
9 点
信用等级
4 点
经验
8287 点
帖子
277
精华
0
在线时间
228 小时
注册时间
2014-6-12
最后登录
2023-11-25

andydong1209 学生认证  发表于 2018-7-10 23:56:56 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

本章旨在说明,如何进行具相关性的多资产随机过程的模拟。这其中需要一些线性代数的计算,为了简化数学的说明,我们打算利用R的内建函数来执行线性代数的计算。其实,这当然不是必要的,很多C#的链接库都有提供这些功能。以我们打算在后面介绍的QuantLibC#链接库而言,它几乎提供所有金融工程中所需的数学函数。但是,使用R也有附带的好处,他也可以成为我们验证计算的工具。此为,R所提供的绘图功能,也是一项额外的好处。




第一节 资产与相关性

一些复杂的金融商品,其偿付条件可能牵涉到的资产价格不只一个,因此,我们仿真之标的变量,可能不只一个,而且变量之间有相关性。令两资产分别为

Eq_3_1_1.jpg

.....................................................................................................(3.1.1)

若两变数报酬率之相关性为 Eq_3_1_1_1.jpg

,则我们可以先产生两个独立常态分配随机数, Eq_3_1_1_2.jpg
Eq_3_1_1_3.jpg

Eq_3_1_1_4.jpg

我们可以使用下面的线性组合产生 Eq_3_1_1_5.jpg

Eq_3_1_1_6.jpg

Eq_3_1_2.jpg

........................................................................................(3.1.2)

矩阵表示为,

Eq_3_1_3.jpg

................................................................................(3.1.3)

我们可以发现,此系数矩阵为一下三角矩阵, Eq_3_1_3_1.jpg

Eq_3_1_4.jpg

...............................................................................................(3.1.4)

如果我们转置此矩阵,得到 Eq_3_1_4_1.jpg

,将两者相乘,得到这两资产的相关性矩阵, Eq_3_1_4_2.jpg

Eq_3_1_4_3.jpg


当资产数目为n时,我们可以先求得n资产的相关性矩阵,,然后将相关性矩阵透过线性代数的Cholesky分解,找出

Eq_3_1_5.jpg

................................................................(3.1.5)

再由与n个独立的常态分配随机数, Eq_3_1_5_1.jpg

,便可产生n个相关性矩阵为的常态分配随机数 Eq_3_1_5_2.jpg

Eq_3_1_6.jpg

.................................................................................................(3.1.6)




第三节 R的Cholesky函数


在多资产的模拟中,我们需要将相关性矩阵进行Cholesky分解。形成下三角与上三角矩阵的乘积。以一个2╳2的相相关性矩阵为例。M可分解成L与U的乘积。


Eq_3_3_1.jpg

...........................................................(3.3.1)

#006

#007 > M <- matrix(c(1.0, 0.8, 0.8,1.0), nrow = 2, ncol = 2, byrow = TRUE)
#008 > U <- chol(M)
#009 > U
#010     [,1] [,2]
#011 [1,]   1  0.8
#012 [2,]   0  0.6
#013 > L <- t(U)
#014 > L
#015     [,1] [,2]
#016 [1,] 1.0  0.0
#017 [2,] 0.8  0.6
#018 > A = L %*% U
#019 > A
#020     [,1] [,2]
#021 [1,] 1.0  0.8
#022 [2,] 0.8  1.0
#023 >程序行表3.1


程序行表3.1示范了R语言的Cholesky分解函数,#007使用matrix()函数建立M矩阵;先以c()函数建立一维向量,内含四个分量,当作传入数据;然后,说明M矩阵为两列,两行的矩阵,并以列优先的方式,读取c()函数建立的一维向量。#008使用chol()函数执行Cholesky分解,将上三角矩阵传出给U矩阵。#013使用t()函数进行U矩阵的转置,将下三角矩阵传出给L矩阵。#018以L %*% U进行矩阵相乘,结果传给A。如果想知道每个变量的内容,只要在提示符号后输入变量的名称,按Enter就可看到结果。如#009输入U按Enter,便可看到2╳2的上三角矩阵。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


fin-qq 发表于 2018-7-14 16:06:51 |显示全部楼层 |坛友微信交流群
感谢分享
Mankind is great because of dreams.

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 06:14