Main Content

sde

随机微分方程 (SDE) 模型

说明

根据用户定义的漂移率和扩散率函数创建和显示常规的随机微分方程 (SDE) 模型。

使用 sde 对象模拟 NVars 个状态变量(由 NBROWNS 个布朗运动风险源驱动)在 NPeriods 个连续观测周期内的样本路径,以便逼近连续时间随机过程。

使用 sde 对象,您可以模拟以下形式的任意向量值 SDE:

dXt=F(t,Xt)dt+G(t,Xt)dWt

,其中:

  • Xt 是过程变量的 NVars×1 状态向量。

  • dWtNBROWNS×1 布朗运动向量。

  • F 是一个 NVars×1 向量值漂移率函数。

  • G 是一个 NVars×NBROWNS 矩阵值扩散率函数。

创建对象

描述

示例

SDE = sde(DriftRate,DiffusionRate) 创建一个默认的 SDE 对象。

示例

SDE = sde(___,Name,Value) 使用由一个或多个 Name,Value 对组参量指定的其他选项创建一个 SDE 对象。

Name 是属性名称,Value 是其对应的值。Name 必须放在单引号 ('') 内。您可以按任意顺序指定多个名称-值对组参量,如 Name1,Value1,…,NameN,ValueN

SDE 对象具有以下属性

  • StartTime - 初始观测时间

  • StartState - StartTime 时的初始状态

  • Correlation - Correlation 输入参量的访问函数,可作为时间的函数进行调用

  • Drift - 复合漂移率函数,可作为时间和状态的函数进行调用

  • Diffusion - 复合扩散率函数,可作为时间和状态的函数进行调用

  • Simulation - 模拟函数或方法

输入参量

全部展开

DriftRate 是用户定义的漂移率函数,表示参数 F,指定为向量或 drift 类的对象。

DriftRate 是一个函数,在使用下面两个输入调用时返回一个 NVars×1 漂移率向量:

  • 实值标量观测时间 t。

  • NVars×1 状态向量 Xt

或者,DriftRate 也可以是一个 drift 类的对象,其中封装有漂移率设定。不过,在这种情况下,sde 仅使用对象的 Rate 参数。有关 drift 对象的详细信息,请参阅 drift

数据类型: double | object

DiffusionRate 是用户定义的扩散率函数,表示参数 G,指定为矩阵或 diffusion 类的对象。

DiffusionRate 是一个函数,在使用下面两个输入调用时返回一个 NVars×NBROWNS 扩散率矩阵:

  • 实值标量观测时间 t。

  • NVars×1 状态向量 Xt

或者,DiffusionRate 也可以是一个 diffusion 类的对象,其中封装有扩散率设定。不过,在这种情况下,sde 仅使用对象的 Rate 参数。有关 diffusion 对象的详细信息,请参阅 diffusion

数据类型: double | object

属性

全部展开

首次观测的开始时间,应用于所有状态变量,指定为标量

数据类型: double

状态变量的初始值,指定为标量、列向量或矩阵。

如果 StartState 是一个标量,则 sde 在所有试验中对所有状态变量应用相同的初始值。

如果 StartState 是一个列向量,则 sde 在所有试验中对每个状态变量应用唯一的初始值。

如果 StartState 是一个矩阵,则 sde 在每次试验中对每个状态变量应用唯一的初始值。

数据类型: double

为生成布朗运动向量(维纳过程)而抽取的高斯随机变量之间的相关性,指定为 NBROWNS×NBROWNS 半正定矩阵或确定性函数 C(t),接受当前时间 t 并返回 NBROWNS×NBROWNS 半正定相关矩阵。如果 Correlation 不是对称半正定矩阵,则使用 nearcorr 为相关矩阵创建半正定矩阵。

Correlation 矩阵表示静态条件。

作为时间的确定性函数,Correlation 允许您指定动态相关结构体。

数据类型: double

用户自定义的模拟函数或 SDE 模拟方法,指定为函数或 SDE 模拟方法。

数据类型: function_handle

此 属性 为只读。

连续时间随机微分方程 (SDE) 的漂移率分量,指定为可由 (t, Xt) 访问的漂移对象或函数。

漂移率设定支持模拟 NVars 个状态变量(由 NBROWNS 个布朗运动风险源驱动)在 NPeriods 个连续观测周期内的样本路径,逼近连续时间随机过程。

drift 类允许使用 drift 创建以下形式的漂移率对象:

F(t,Xt)=A(t)+B(t)Xt

其中:

  • A 是一个 NVars×1 向量值函数,可使用 (t, Xt) 接口访问。

  • B 是一个 NVars×NVars 矩阵值函数,可使用 (t, Xt) 接口访问。

drift 对象显示的参数是:

  • Rate:漂移率函数 F(t,Xt)

  • A:F(t,Xt) 的截断项 A(t,Xt)

  • B:F(t,Xt) 的一阶项 B(t,Xt)

AB 让您可以查询原始输入。存储在 Rate 中的函数完全封装了 AB 的组合效果。

当指定为 MATLAB® 双精度数组时,输入 AB 显然与线性漂移率参数式相关联。然而,指定 AB 为函数,几乎可以让您自定义任何漂移率设定。

注意

您可以采用最一般的形式来表达 driftdiffusion 类,以突出 (t, Xt) 函数式接口。不过,在指定分量 AB 时,可以将其指定为支持通用 (t, Xt) 接口,也可以指定为具有适当维度的 MATLAB 数组。

示例: F = drift(0, 0.1) % Drift rate function F(t,X)

数据类型: object

此 属性 为只读。

连续时间随机微分方程 (SDE) 的扩散率分量,指定为可由 (t, Xt) 访问的漂移对象或函数。

扩散率设定支持模拟 NVars 个状态变量(由 NBROWNS 个布朗运动风险源驱动)在 NPeriods 个连续观测周期内的样本路径,逼近连续时间随机过程。

diffusion 类允许使用 diffusion 创建扩散率对象:

G(t,Xt)=D(t,Xtα(t))V(t)

其中:

  • D 是一个 NVars×NVars 对角矩阵值函数。

  • D 的每个对角元素是状态向量对应元素的 Alpha 指数次幂,该指数是一个 NVars×1 向量值函数。

  • V 是一个 NVars×NBROWNS 矩阵值波动率函数 Sigma

  • AlphaSigma 也可以使用 (t, Xt) 接口访问。

diffusion 对象显示的参数是:

  • Rate:扩散率函数 G(t,Xt)。

  • Alpha:状态向量指数,决定了 G(t,Xt) 的 D(t,Xt) 的格式。

  • Sigma:G(t,Xt) 的波动率 V(t,Xt)。

AlphaSigma 让您可以查询原始输入。(单个 AlphaSigma 参数由存储在 Rate 中的函数完全封装。)Rate 函数是 driftdiffusion 对象的计算引擎,而这一函数是模拟所需的唯一参数。

注意

您可以采用最一般的形式来表达 driftdiffusion 类,以突出 (t, Xt) 函数式接口。不过,在指定分量 AB 时,可以将其指定为支持通用 (t, Xt) 接口,也可以指定为具有适当维度的 MATLAB 数组。

示例: G = diffusion(1, 0.3) % Diffusion rate function G(t,X)

数据类型: object

对象函数

interpolateBrownian interpolation of stochastic differential equations (SDEs) for SDE, BM, GBM, CEV, CIR, HWV, Heston, SDEDDO, SDELD, or SDEMRD models
simulateSimulate multivariate stochastic differential equations (SDEs) for SDE, BM, GBM, CEV, CIR, HWV, Heston, SDEDDO, SDELD, SDEMRD, Merton, or Bates models
simByEulerEuler simulation of stochastic differential equations (SDEs) for SDE, BM, GBM, CEV, CIR, HWV, Heston, SDEDDO, SDELD, or SDEMRD models

示例

全部折叠

构造一个 SDE 对象 obj 来表示以下形式的一元几何布朗运动模型:dXt=0.1Xtdt+0.3XtdWt

创建可由常用 (t,Xt) 接口访问的漂移和扩散函数:

F = @(t,X) 0.1 * X;
G = @(t,X) 0.3 * X;

将这些函数传递到 sde 以创建 sde 类的对象 (obj):

obj = sde(F, G)    % dX = F(t,X)dt + G(t,X)dW
obj = 
   Class SDE: Stochastic Differential Equation
   -------------------------------------------
     Dimensions: State = 1, Brownian = 1
   -------------------------------------------
      StartTime: 0
     StartState: 1
    Correlation: 1
          Drift: drift rate function F(t,X(t)) 
      Diffusion: diffusion rate function G(t,X(t)) 
     Simulation: simulation method/function simByEuler

obj 看起来像一个 MATLAB® 结构体,它具有以下信息:

  • 对象的类

  • 对象的简要描述

  • 模型维度摘要

对象显示的参数如下所示:

  • StartTime:初始观测时间(实数值标量)

  • StartState:初始状态向量(NVARS×1 列向量)

  • Correlation:布朗过程之间的相关结构体

  • Drift:漂移率函数 F(t,Xt)

  • Diffusion:扩散率函数 G(t,Xt)

  • Simulation:模拟方法或函数。

在显示的这些参数中,只有 DriftDiffusion 是必需的输入。

(t, Xt) 计算接口的唯一例外是 Correlation。尤其是,当您输入 Correlation 作为函数时,SDE 引擎假设它是时间的确定性函数 C(t)。通过限制将 Correlation 作为时间的确定性函数,允许在正式模拟之前计算和存储乔列斯基因子。这种不一致性大幅提高了动态相关结构体的运行时性能。如果 Correlation 是随机的,您还可以将它包含在模拟架构中,以作为更常规的随机数生成函数的一部分。

详细信息

全部展开

算法

当您将必需的输入参数指定为数组时,它们将与特定的参数化形式相关联。相比之下,当您将任一必需的输入参数指定为函数时,几乎可以自定义任何设定。

在没有输入的情况下访问输出参数只会返回原始输入设定。因此,当您不带输入调用这些参数时,它们的行为就像简单的属性,您可以测试指定的原始输入的数据类型(是双精度值还是函数,即是静态的还是动态的)。这对于验证和设计方法非常有用。

当您使用输入调用这些参数时,它们的行为类似于函数,给人以动态行为的印象。该参数接受观测时间 t 和状态向量 Xt,并返回适当维度的数组。即使您最初将输入指定为数组,sde 也会将其视为时间和状态的静态函数,这样可以确保所有参数都可由同一接口访问。

参考

[1] Aït-Sahalia, Yacine. “Testing Continuous-Time Models of the Spot Interest Rate.” Review of Financial Studies, vol. 9, no. 2, Apr. 1996, pp. 385–426.

[2] Aït-Sahalia, Yacine. “Transition Densities for Interest Rate and Other Nonlinear Diffusions.” The Journal of Finance, vol. 54, no. 4, Aug. 1999, pp. 1361–95.

[3] Glasserman, Paul. Monte Carlo Methods in Financial Engineering. Springer, 2004.

[4] Hull, John. Options, Futures and Other Derivatives. 7th ed, Prentice Hall, 2009.

[5] Johnson, Norman Lloyd, et al. Continuous Univariate Distributions. 2nd ed, Wiley, 1994.

[6] Shreve, Steven E. Stochastic Calculus for Finance. Springer, 2004.

版本历史记录

在 R2008a 中推出