没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第一章:Monte Carlo 方法概述
讲课人:Xaero Chang | 课程主页: http://macro2.org/notes/intro2mc
本章主要概述 Monte Carlo 的一些基础知识,另外包括一个最简单的用 Monte Carlo
方法计算数值积分的例子。
一、Monte Carlo 历史渊源
Monte Carlo 方法的实质是通过大量随机试验,利用概率论解决问题的一种数值方法,
基本思想是基于概率和体积间的相似性。它和 Simulation 有细微区别。单独的 Simulation 只
是模拟一些随机的运动,其结果是不确定的;Monte Carlo 在计算的中间过程中出现的数是
随机的,但是它要解决的问题的结果却是确定的。
历史上有记载的 Monte Carlo 试验始于十八世纪末期(约 1777 年),当时布丰(Buffon)
为了计算圆周率,设计了一个“投针试验”。(后文会给出一个更加简单的计算圆周率的例
子)。虽然方法已经存在了 200 多年,此方法命名为 Monte Carlo 则是在二十世纪四十年,
美国原子弹计划的一个子项目需要使用 Monte Carlo 方法模拟中子对某种特殊材料的穿透作
用。出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一 von Neumann
灵犀一点选择摩洛哥著名赌城蒙特卡洛作为该项目名称,自此这种方法也就被命名为 Monte
Carlo 方法广为流传。
十一、Monte Carlo 方法适用用途
(一)数值积分
计算一个定积分,如 ,如果我们能够得到 f(x)的原函数 F(x),那么直接由表
达式: F(x1)-F(x0)可以得到该定积分的值。但是,很多情况下,由于 f(x)太复杂,我们无法
计算得到原函数 F(x)的显示解,这时我们就只能用数值积分的办法。如下是一个简单的数值
积分的例子。
数值积分简单示例
如图,数值积分的基本原理是在自变量 x 的区间上取多个离散的点,用单个点的值来代
替该小段上函数 f(x)值。
常规的数值积分方法是在分段之后,将所有的柱子(粉红色方块)的面积全部加起来,
用这个面积来近似函数 f(x)(蓝色曲线)与 x 轴围成的面积。这样做当然是不精确的,但是
随着分段数量增加,误差将减小,近似面积将逐渐逼近真实的面积。
Monte Carlo 数值积分方法和上述类似。差别在于,Monte Carlo 方法中,我们不需要
将所有方柱的面积相加,而只需要随机地抽取一些函数值,将他们的面积累加后计算平均值
就够了。通过相关数学知识可以证明,随着抽取点增加,近似面积也将逼近真实面积。
在金融产品定价中,我们接触到的大多数求基于某个随机变量的函数的期望值。考虑一
个欧式期权,假定我们已经知道在期权行权日的股票服从某种分布(理论模型中一般是正态
分布),那么用期权收益在这种分布上做积分求期望即可。
(五)随机最优化
Monte Carlo 在随机最优化中的应用包括:模拟退火(Simulated Annealing)、进化策略
(Evolution strategy)等等。一个最简单的例子是,已知某函数,我们要求此函数的最大值,那
么我们可以不断地在该函数定义域上随机取点,然后用得到的最大的点作为此函数的最大
值。这个例子实质也是随机数值积分,它等价于求此函数的无穷阶范数(
-Norm)在定义
域上的积分。
由于在金融产品定价中,这部分内容用的相对较不常见,所以此课程就不介绍随机最优
化方法了。
十二、Monte Carlo 形式与一般步骤
(一)积分形式
做 Monte Carlo 时,求解积分的一般形式是:
X 为自变量,它应该是随机的,定义域为(x0, x1),f(x)为被积函数,ψ(x)是 x 的概率密
度。在计算欧式期权例子中,x 为期权到期日股票价格,由于我们计算期权价格的时候该期
权还没有到期,所以此时 x 是不确定的(是一随机变量),我们按照相应的理论,假设 x
的概率密度为ψ(x)、最高可能股价为 x1(可以是正无穷)、最低可能股价为 x0(可以是 0),
另外,期权收益是到期日股票价格 x 和期权行权价格的函数,我们用 f(x)来表示期权收益。
(二)一般步骤
我将 Monte Carlo 分为三加一个步骤:
1.依据概率分布ψ(x)不断生成随机数 x, 并计算 f(x)
由于随机数性质,每次生成的 x 的值都是不确定的,为区分起见,我们可以给生成的 x
赋予下标。如 x
i
表示生成的第 i 个 x。生成了多少个 x,就可以计算出多少个 f(x)的值
2.将这些 f(x)的值累加,并求平均值
例如我们共生成了 N 个 x,这个步骤用数学式子表达就是
3.到达停止条件后退出
常用的停止条件有两种,一种是设定最多生成 N 个 x,数量达到后即退出,另一种是检
测计算结果与真实结果之间的误差,当这一误差小到某个范围之内时退出。
有趣的类比:积分表达式中的积分符合类比为上式中累加符号,dx 类比为 1/N(数
学知识告诉我们积分实质是极限意义下的累加;f(x)还是它自己,积分中的ψ(x)可类比
为依据ψ(x)生成随机数
4.误差分析
Monte Carlo 方法得到的结果是随机变量,因此,在给出点估计后,还需要给出此估计
值的波动程度及区间估计。严格的误差分析首先要从证明收敛性出发,再计算理论方差,最
后用样本方差来替代理论方差。在本课程中我们假定此方法收敛,同时得到的结果服从正态
分布,因此可以直接用样本方差作区间估计。详细过程在例子中解释。
这个步骤的理论意义很重要,但在实际应用中,它的重要性有所淡化,倘若你的老板不
太懂这些知识,你报告计算结果时可以只告诉他点估计即可。
注意,前两大步骤还可以继续细分,例如某些教科书上的五大步骤就是将此处的前两步
细分成四步。
十三、最简单的例子
举个例子:
计算从 函数从 0 到 2 的定积分值 。
数学方法:我们已知
的原函数是 ,那么定积分值就是: =6.38905609893065 。
计算这个数值可以在 Matlab 中输入代码:
exp(2)-exp(0)
上面得到的值是此不定积分的真实值。
常规数值积分:在
区间内取 N 个点,计算各个点上的函数值,然后用函数值乘
以每个区间宽度,最后相加。Matlab 代码:
N=100;x=linspace(0,2,N);sum(exp(x).*2/N)
试着调大 N 的值,你会发现,最后的结果将更接近真实值。
Monte Carlo 数值积分法:在
内随机取 N 个点,计算各个点上的函数值,最后
求这些函数值的平均值再乘以 2(为何要乘以 2 在后面小节详细讲)。看 Matlab 代码:
N=100;x=unifrnd(0,2,N,1);mean(2*exp(x))
同样的,通过增大 N,这种方法得到的结果也将越来越接近真实值。
解释
这个例子要求的积分形式是: , 还不完全是 形式,我们先做变
换, ,这里 是 f(x);1/2 是ψ(x),它表示,在取值范围(0,2)区间内,x 服
从均匀分布。
前一例子共三条语句,逐句解释如下:
N=100;
设定停止条件,共做 N 次 Monte Carlo 模拟。
x=unifrnd(0,2,N,1);
按照(0,2)区间均匀分布概率密度对 x 随机抽样,共抽取 N 个 x
i
。此句相当于第一个步
骤中的前半部分。
mean(2*exp(x))
2*exp(x)作用是对每个 x
i
计算 f(x
i
)的值,共可得到 N 个值,这个相当于第一个步骤后半
部分;Mean()函数的作用是将所有的 f(x
i
)加起来取平均值,相当于第二个步骤。
这段代码中的停止条件隐含于 N 值设定中,它一次性生成 N 个 x 值,完成此次计算后
整个程序就结束了。
十四、Monte Carlo 方法的优点
对比前面常规数值积分和 Monte Carlo 数值积分代码,同样数量的 N 值——也就意味这
几乎相同的计算量——常规数值积分结果的精确度要高于 Monte Carlo 数值积分的结果。那
么,我们为何还需要用 Monte Carlo 来算数值积分呢?
答案的关键在于,常规数值积分的精度直接取决于每个维度上取点数量,维度增加了,
但是每个维度上要取的点却不能减少。在多重积分中,随着被积函数维度增加,需要计算的
函数值数量以指数速度递增。例如在一重积分
中,只要沿着 x 轴取 N 个点;
要达到相同大小的精确度,在 s 重积分
中,仍然需要在每个维度上取 N 个点,s 个纬度的坐标相组合,共需要计算 N
s
个坐标对应
的 f()函数值。取点越多,会占用计算机大量内存,也需要更长运算时间,最终导致这种计
算方法不可行!
Monte Carlo 方法却不同,不管是积分有多少重,取 N 个点计算的结果精确度都差不多。
因此,即使在一重积分的情形下,Monte Carlo 方法的效率比不过常规数值积分,但随着积
分维度增加,常规数值积分的速度呈指数下降,Monte Carlo 方法的效率却基本不变。经验
表明,当积分重数达到 4 重积分甚至更高时,Monte Carlo 方法将远远优于常规数值积分方
法。
现在回到金融产品定价,欧式期权理论定价公式只需要一重积分,此时 Monte Carlo 方
法的效果不明显,但是如果我们考虑一个亚式期权:期限为 1 年期,期权价格基于此 1 年内
每天某个时点时的价格,全年共 252 个交易日,这样此亚式期权理论定价公式是一个 252
重积分。常规的数值积分方法,需要取 N
252
个点,这个数有多大,你自己去计算一下就知道
了(注意:N 取值要远远大于 2),常规数值积分方法不可行,只能用 Monte Carlo。
综上,如果计算高维度多重积分,如路径依赖的 exotic options(奇异期权)等金融产品
定价,我们一般用的方法都是 Monte Carlo。
十五、Monte Carlo 方法原理(选读)
Monte Carlo 方法计算的结果收敛的理论依据来自于大数定律,且结果渐进地
(Asymptotically)服从正态分布的理论依据是中心极限定理。
以上两个属性都是渐进性质,要进行很多次抽样,此属性才会比较好地显示出来,如果
Monte Carlo 计算结果的某些高阶距存在,即使抽样数量不太多,这些渐进属性也可以很快
地达到。
这些原理在理论上意义重大,但由于我们一般遇上的 Monte Carlo 问题都是收敛的、结
果也都是渐进正态分布,所以工作中使用时可以不加考虑。
详细推导见相关书籍。
第二章:随机数的生成
讲课人:Xaero Chang | 课程主页: http://macro2.org/notes/intro2mc
本章第一节会简要复习随机变量的一些概念,但学习本章最好要有一定的数学基
础。第二节主要介绍如何生成一维概率分布的随机数,第三节介绍如何生成高维分布的
随机数。最后略提及伪随机数问题的应对策略。
由前文可知,Monte Carlo 积分解决的问题形如 ,f(x)值只需由 x 值决定,
因此此处最重要的就是如何生成服从ψ(x)概率分布的随机数。可以说,正确生成随机数,
Monte Carlo 方法就做完了一半。
一、随机变量基本概念
(一)随机变量
现实世界中有很多可以用数字来衡量的事物,站在当前时间点来看,它们在未来时刻的
值是不确定的。例如,我们掷一骰子,在它停稳前,我们不可能知道掷出多少点(传说中的
赌王除外,哈哈);例如某只股票在明天的股价,没有人能准确知晓第二天股票的价格(不
然他就发惨了!)。但是,我们却可以描述这些事物未来各种值的可能性。
(二)离散型随机变量
离散型随机变量最重要的是分布律,即每个取值的概率是多少。例如掷骰子,我们认为
扔出任何一个点的概率都是 1/6。那么掷骰子得到的点数的分布律如下表:
骰子点数 1 2 3 4 5 6
概率 1/6 1/6 1/6 1/6 1/6 1/6
(三)连续性随机变量
连续型随机变量有两个重要的概念。概率密度函数(PDF)和累积概率分布函数(CDF),
具体定义见数学书籍。
PDF 函数本身不是概率,只有对 x 的某段区间中的 PDF 积分得到的数值才有概率的含
义。CDF 是概率的意思,点 x 上 CDF 的值表示该随机变量可能取值小于 x 的概率的大小。
如图是正态分布的 PDF 和 CDF
剩余36页未读,继续阅读
资源评论
- 蛋juan2014-03-24有所学习,值得借鉴,谢谢。
- ihunebptdf2017-05-04题目里的VAR模型在哪里?怎么都是讲Monte Carlo的??
- alto13942018-09-2237页,公式看不清,不推荐下载。
和平强大平和
- 粉丝: 82
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功