本页翻译不是最新的。点击此处可查看最新英文版本。

bm

布朗运动 ( BM ) 模型

全页展开

说明

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

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

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

d X t = μ ( t ) d t + V ( t ) d W t

其中:

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

  • μ NVars × 1 漂移率向量。

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

  • dW t 是(可能)相关的零漂移/单位方差率布朗分量 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 列向量,表示漂移率(预期的瞬时漂移率,也就是时间趋势)。

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

  • 实值标量观测时间 t

  • NVars × 1 状态向量 X t

数据类型: double | function_handle

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

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

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

  • 实值标量观测时间 t

  • NVars × 1 状态向量 X t

虽然 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 , X t ) 访问的漂移对象或函数。

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

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

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

其中:

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

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

drift 对象显示的参数是:

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

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

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

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

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

注意

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

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

数据类型: object

此 属性 为只读。

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

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

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

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

其中:

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

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

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

  • Alpha Sigma 也可以使用 ( t , X t ) 接口访问。

diffusion 对象显示的参数是:

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

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

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

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

注意

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

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

数据类型: object

对象函数

interpolate Brownian interpolation of stochastic differential equations (SDEs) for SDE , BM , GBM , CEV , CIR , HWV , Heston , SDEDDO , SDELD , or SDEMRD models
simulate Simulate multivariate stochastic differential equations (SDEs) for SDE , BM , GBM , CEV , CIR , HWV , Heston , SDEDDO , SDELD , SDEMRD , Merton , or Bates models
simByEuler Euler simulation of stochastic differential equations (SDEs) for SDE , BM , GBM , CEV , CIR , HWV , Heston , SDEDDO , SDELD , or SDEMRD models
simByMilstein Simulate diagonal diffusion for BM , GBM , CEV , HWV , SDEDDO , SDELD , or SDEMRD sample paths by Milstein approximation
simByMilstein2 Simulate BM , GBM , CEV , HWV , SDEDDO , SDELD , SDEMRD process sample paths by second order Milstein approximation

示例

全部折叠

创建一元布朗运动 ( bm ) 对象,用于表示模型: d X t = 0 . 3 d W t

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 和状态向量 X t ,并返回适当维度的数组。即使您最初将输入指定为数组, 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 中推出

全部展开

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.