无论是资产定价还是风险管理,都要涉及到SDE的蒙特卡洛模拟。
本文仅讨论一维SDE的数值模拟。
对大多数微分方程,我们无法求出解析解,所以为了确定这个方程所对应的函数,就需要进行数值模拟。随机微分方程也是一样的,对于SDE:
大多数情况下,要求出随机过程在某个时刻的分布,还得靠随机模拟,模拟出若干条路径,来得到近似的分布。模拟的方法,主要就是两种,Euler–Maruyama method 和 Milstein method。
Euler 方法是最直接的方法,扩散过程(diffusion process)是一个马尔可夫过程,因为,自然就有:
Milstein 方法会更加精确一些:
其中。
Milstein 方法的初衷是让估计:
变得稍微精确一点。所以,对应用伊藤公式,求出关于和的关系,再积分得到的表达式,最后估计。这是得到米尔斯坦方法的思路,沿着这个思路下去就是随机泰勒展开!
注意到 Milstein 方法需要是二阶可微的。
米尔斯坦方法对应到几何布朗运动就是:
它其实是在 Euler 方法的基础上增加了更高阶的小量。
SDE的模拟本质上我认为还是在做数值积分。
order of convergence
Milstein 方法比 Euler 方法要精确,那么这种精确程度该如何来度量呢?
这就要引入收敛阶数的概念,而收敛性分为两种,强收敛和弱收敛。
对于随机过程,我们以构造等距节点,使用某种方法插值模拟出的随机过程记为。
强收敛
对于任意的时间,如果存在不依赖于的常数和,使得:
我们就说这个方法是阶强收敛的!
弱收敛
对于任意的时间和可测函数,如果存在不依赖于的常数和,使得:
我们就说这个方法是阶弱收敛的!
收敛阶数不仅与模拟方法有关,还与这个随机微分方程的性质有关。 但是一般来说,我们认为 Euler 方法的强收敛阶数是 0.5,Milstein 方法是1;Euler 方法的弱收敛阶数是1。
stochastic taylor expansion
其实 Euler 方法和 Milstein 方法都可以从随机泰勒展开中得到,并且可以类似的分析它们的收敛阶数。
首先考虑一个自治(autonomous)的ODE:
令是的函数,那么根据链导法则:
定义算子,上式可以写成积分的形式:
对也可以写成上式一般的展开形式,继而有:
因为:
上面其实就是我们熟悉的Taylor展开:
接下来我们把上述方法应用到自治的SDE中。定义算子:
那么伊藤公式
可以写成:
接下来,
- 令 ,得到:
- 令 ,得到:
- 令 ,得到:
现在我们要做的是,把伊藤公式应用到伊藤公式中,来得到一个比伊藤公式更加精确的公式!
把(2)和(3)代入(1):
于是:
其中余项: 我们上面所做的工作就是重复应用伊藤公式获取更高阶的近似!
注意到(4)式右边前三项就是 Euler 近似!所以我们可以通过分析余项来得到 Euler 方法的余项阶数。
分析一下(5)式中余项各项的阶数,如果把的最后一项考虑进去,我们就能得到 Milstein 方法。
注意到:
如果我们把余项的后三项都考虑进去,就能得到比 Milstein 方法更精确的数值方法!
其它的模拟方法
隐式方法
一般我们用的都是显示的 Euler 方法,但其实也可以有类似于 ODE 里的隐式方法:
我感觉一般常研究的SDE的稳定性都还不错。
Runge-Kutta Methods
Milstein 方法需要计算一次导数,我们也可以不去直接计算导数,而是去近似它。
Simplified Methods
布朗运动的本质是随机游走的极限,当足够小的时候,用离散的随机游走去代替布朗运动,能起到节省计算时间的效果。如果目的只是估计,那么 Simplified Methods 的效果也不错。