一般随机抽样
我们知道蒙特卡洛模拟在金融领域有着广泛的应用,比如说模拟股票的路径,通常来讲我们会假设股票价格服从以下的随机过程:
d S t = r S t d t + σ S t d W t (1) dS_t=rS_tdt+\sigma S_t dW_t\tag{1} dSt=rStdt+σStdWt(1)
如果我们把以上的随机过程离散化,就有如下的表达式
S t + 1 = S t + r S t Δ t + σ S t Δ W t (2) S_{t+1}=S_{t}+rS_t\Delta t+\sigma S_t\Delta W_t\tag{2} St+1=St+rStΔt+σStΔWt(2)
而 W t W_t Wt是一个布朗运动,因而 Δ W t \Delta W_t ΔWt可以表示成 Δ W t = Δ t ∗ N ( 0 , 1 ) \Delta W_t=\sqrt{\Delta t}*\mathcal{N}(0,1) ΔWt=Δt∗N(0,1)。蒙特卡洛模拟即是产生服从正态分布的随机数,从而可以模拟出服从(1)的资产过程,详见CIR过程蒙特卡洛模拟。
MATLAB中我们知道可以通过randn这个命令来产生服从正太分布的随机数,对于其它的分布形式,比如说Possion分布,Weibull分布,Binomial分布等等,我们也可以有现成的命令来产生相应的随机数。但是,如果我们要产生一些不常见分布的随机数,或者说如果大家好奇这些命令背后的过程,就需要说说随机数抽取的原理,我们这里所说的随机抽样即是已知分布形式时,如何产生相应的随机数。
通过分布抽取随机数通常有以下的方法:
逆变换法
逆变换法的原理在于如果我们能够求出已知分布 Y = F ( X ) Y=F(X) Y=F(X)的逆函数的解析形式,即 X = F − 1 ( Y ) X=F^{-1}(Y) X=F