随机微分方程模拟方法:simByQuadExp与simByEuler详解
立即解锁
发布时间: 2025-09-05 01:39:39 阅读量: 4 订阅数: 14 AIGC 

# 随机微分方程模拟方法:simByQuadExp与simByEuler详解
## 1. simByQuadExp方法概述
simByQuadExp方法用于通过二次指数离散化方案模拟Bates、Heston和CIR模型的样本路径。其语法形式多样,能满足不同的模拟需求。
### 1.1 语法
- `[Paths,Times,Z] = simByQuadExp(MDL,NPeriods)`
- `[Paths,Times,Z] = simByQuadExp( ___ ,Name,Value)`
- `[Paths,Times,Z,N] = simByQuadExp(MDL,NPeriods)`
- `[Paths,Times,Z,N] = simByQuadExp( ___ ,Name,Value)`
### 1.2 描述
该方法可模拟由两个布朗运动风险源驱动的Heston模型,或由一个布朗运动风险源驱动的CIR模型的样本路径。它直接从随机微分方程的运动方程推导而来,离散时间过程仅在时间增量趋近于零时才接近真正的连续时间过程。
### 1.3 输入参数
| 参数 | 描述 | 数据类型 |
| ---- | ---- | ---- |
| MDL | 随机微分方程模型,可为bates、heston或cir对象 | object |
| NPeriods | 模拟周期数,为正标量整数 | double |
| NTrials | 每个模拟周期的试验次数,默认为1 | double |
| DeltaTimes | 观测值之间的正时间增量,默认为1 | double |
| NSteps | 每个时间增量内的中间时间步数,默认为1 | double |
| MonteCarloMethod | 蒙特卡罗模拟方法,可选"standard"、"quasi"或"randomized - quasi" | string/char |
| QuasiSequence | 低差异序列,用于驱动随机过程,默认为"sobol" | string/char |
| BrownianMotionMethod | 布朗运动构造方法,可选"standard"、"brownian - bridge"或"principal - components" | string/char |
| Antithetic | 是否使用对偶抽样生成高斯随机变量的标志,默认为false | logical |
| Z | 用于生成布朗运动向量的相关随机噪声过程的直接指定 | double/function |
| N | 用于生成跳跃计数过程向量的相关随机计数过程,仅适用于bates对象 | double/function |
| StorePaths | 指示如何存储和返回Paths数组的标志,默认为true | logical |
| Processes | 周期结束时的处理序列或状态向量调整 | cell/function |
### 1.4 输出参数
| 参数 | 描述 |
| ---- | ---- |
| Paths | 相关状态变量的模拟路径,为三维时间序列数组 |
| Times | 与模拟路径相关的观测时间,为列向量 |
| Z | 用于生成布朗运动向量的相关随机变量,为三维时间序列数组 |
| N | 用于生成跳跃计数过程向量的相关随机变量,为三维时间序列数组 |
### 1.5 示例
以下是模拟Bates样本路径的示例代码:
```matlab
AssetPrice = 80;
Return = 0.03;
JumpMean = 0.02;
JumpVol = 0.08;
JumpFreq = 0.1;
V0 = 0.04;
Level = 0.05;
Speed = 1.0;
Volatility = 0.2;
Rho = -0.7;
StartState = [AssetPrice;V0];
Correlation = [1 Rho;Rho 1];
batesObj = bates(Return, Speed, Level, Volatility,...
JumpFreq, JumpMean, JumpVol,'startstate',StartState,...
'correlation',Correlation);
NPeriods = 2;
[Paths,Times,Z,N] = simByQuadExp(batesObj,NPeriods);
```
### 1.6 流程图
```mermaid
graph TD;
A[定义参数] --> B[创建bates对象];
B --> C[设置模拟周期数];
C --> D[调用simByQuadExp进行模拟];
D --> E[输出Paths、Times、Z和N];
```
## 2. simByEuler方法概述
simByEuler方法用于对SDE、BM、GBM、CEV、CIR、HWV、Heston、SDEDDO、SDELD或SDEMRD模型进行欧拉模拟。
### 2.1 语法
- `[Paths,Times,Z] = simByEuler(MDL,NPeriods)`
- `[Paths,Times,Z] = simByEuler( ___ ,Name,Value)`
### 2.2 描述
该方法使用欧拉方法近似连续时间随机过程,可模拟由多个布朗运动风险源驱动的多个相关状态变量的样本路径。
### 2.3 输入参数
| 参数 | 描述 | 数据类型 |
| ---- | ---- | ---- |
| MDL | 随机微分方程模型,可为sde、bm、gbm等对象 | object |
0
0
复制全文