Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

bm

布朗运动模型

说明

创建并显示布朗运动(有时称为算术布朗运动广义维纳过程)的 bm 对象,该对象来源于 sdeld(以线性形式表示漂移率的 SDE)类。

使用 bm 对象,模拟 NVars 个状态变量(由 NBrowns 个风险源驱动)在 NPeriods 个连续观测周期内的样本路径,以便逼近连续时间布朗运动随机过程。这使您能够将 NBrowns 个不相关、零漂移、单方差率布朗分量的向量转换为具有任意漂移、方差率和相关性结构的 NVars 个布朗分量的向量。

使用 bm 模拟以下形式的任意向量值布朗运动过程:

dXt=μ(t)dt+V(t)dWt

其中:

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

  • μ 是 NVars × 1 漂移率向量。

  • V 是 NVars × NBrowns 瞬时波动率矩阵。

  • dWt 是(可能)相关的零漂移/单位方差率布朗分量 NBrowns×1 向量。

创建对象

说明

示例

BM = bm(Mu,Sigma) 创建一个默认的 BM 对象。

使用一个以下类型指定所需的输入参数:

  • MATLAB® 数组。指定数组表示静态(非时变)参数设定。此数组完全捕获与参数形式明显相关的所有实现细节。

  • MATLAB 函数。指定函数可为几乎任何静态、动态、线性或非线性模型提供间接支持。此参数通过接口支持,因为所有实现细节都隐藏并被函数完全封装。

注意

您可以根据需要指定数组和函数输入参数的组合。

此外,如果函数接受标量时间 t 作为其唯一输入参数,则将参数识别为时间的确定性函数。否则,系统将假定参数为时间 t 和状态 X(t) 的函数,并使用两个输入参数调用。

示例

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

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

对象 BM 具有以下 属性

  • StartTime - 初始观测时间

  • StartState - StartTime 时的初始状态

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

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

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

  • Simulation - 模拟函数或方法

输入参数

全部展开

Mu 表示参数 μ,指定为数组或时间的确定性函数。

如果您指定 Mu 作为数组,它必须是一个 NVars × 1 列向量,表示漂移率(预期的瞬时漂移率,也就是时间趋势)。

如果 Mu 是时间的确定性函数,则以实数值标量时间 t 作为唯一输入调用它时,Mu 一定会生成一个 NVars × NVars 矩阵。如果您指定 Mu 作为时间和状态的函数,它将计算预期的瞬时漂移率。当使用两个输入调用该函数时,该函数必须生成一个 NVars × 1 列向量:

  • 实值标量观测时间 t。

  • NVars × 1 状态向量 Xt

数据类型: double | function_handle

Sigma 表示参数 V,指定为数组或时间的确定性函数。

如果您指定 Sigma 为数组,它必须是一个 NVars × NBrowns 瞬时波动率矩阵或作为时间的确定性函数。在本例中,Sigma 的每行都对应于一个特定的状态变量。每列对应于一个特定的布朗不确定性源,并将状态变量的敞口量级与不确定性源相关联。

如果 Sigma 是时间的确定性函数,则以实数值标量时间 t 作为唯一输入调用它时,Sigma 一定会生成一个 NVars × NBrowns 矩阵。如果您指定 Sigma 作为时间和状态的函数,在两个输入下调用时,必须返回一个 NVars × NBrowns 波动率矩阵:

  • 实值标量观测时间 t。

  • NVars × 1 状态向量 Xt

虽然 gbm 构造函数对 Sigma 波动率的符号未施加任何限制,但它们被指定为正值。

数据类型: double | function_handle

属性

全部展开

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

数据类型: double

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

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

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

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

数据类型: 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
simulateSimulate multivariate stochastic differential equations (SDEs)
simByEulerEuler simulation of stochastic differential equations (SDEs)

示例

全部折叠

创建单变量布朗运动 (bm) 对象,用于表示模型:dXt=0.3dWt

obj = bm(0, 0.3) % (A = Mu, Sigma)
obj = 
   Class BM: Brownian Motion
   ----------------------------------------
     Dimensions: State = 1, Brownian = 1
   ----------------------------------------
      StartTime: 0
     StartState: 0
    Correlation: 1
          Drift: drift rate function F(t,X(t)) 
      Diffusion: diffusion rate function G(t,X(t)) 
     Simulation: simulation method/function simByEuler
             Mu: 0
          Sigma: 0.3

bm 对象将参数 A 显示为更常用的 Mu

bm 类还提供了一种重载的欧拉模拟方法,可以在某些常见情况下提高运行时性能。仅在满足以下所有条件时,才会自动调用此专用方法:

  • 预期的漂移或趋势速率 Mu 是一个列向量。

  • 波动率 Sigma 为矩阵。

  • 未进行任何周期末尾调整和/或处理。

  • 如果指定,则随机噪声过程 Z 是三维数组。

  • 如果未指定 Z,则假设的高斯相关结构体为双精度矩阵。

详细信息

全部展开

算法

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

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

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

参考

[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 中推出