Main Content

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

cir

考克斯-英格索尔-罗斯 (CIR) 均值回归平方根扩散模型

说明

创建并显示 cir 对象,该对象来源于 sdemrd(以均值回归形式表示漂移率的 SDE)类。

使用 cir 对象模拟 NVars 个状态变量(以均值回归漂移率形式表示)的样本路径。这些状态变量在 NPeriods 个连续观测周期内由 NBrowns 个布朗运动风险源驱动,用平方根扩散逼近连续时间 CIR 随机过程。

您可以模拟以下形式的任意向量值 CIR 过程:

dXt=S(t)[L(t)Xt]dt+D(t,Xt12)V(t)dWt

,其中:

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

  • S 是均值回归速度(即均值回归速率)的 NVars×NVars 矩阵。

  • L 是均值回归水平(即长期均值或水平)的 NVars×1 向量。

  • DNVars×NVars 对角矩阵,其中沿主对角线的每个元素是状态向量对应元素的平方根。

  • VNVars×NBrowns 瞬时波动率矩阵。

  • dWtNBrowns×1 布朗运动向量。

创建对象

描述

CIR = cir(Speed,Level,Sigma) 创建一个默认的 CIR 对象。

将所需的输入参数指定为以下类型之一:

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

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

注意

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

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

示例

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

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

CIR 对象具有以下属性

  • StartTime - 初始观测时间

  • StartState - StartTime 时的初始状态

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

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

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

  • Simulation - 模拟函数或方法

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

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

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

示例

输入参量

全部展开

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

如果您指定 Speed 为数组,它必须是均值回归速度(即状态向量回归到其长期平均 Level 的速率)的 NVars×NVars 矩阵。

作为时间的确定性函数,当以实数值标量时间 t 作为唯一输入调用 Speed 时,Speed 必须生成一个 NVars×NVars 矩阵。如果您指定 Speed 为时间和状态的函数,它将计算均值回归的速度。当使用下面两个输入调用时,该函数必须生成 NVars×NVars 的回归速率矩阵:

  • 实值标量观测时间 t

  • NVars×1 状态向量 Xt

数据类型: double | function_handle

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

如果您指定 Level 为数组,它必须是 NVars×1 的回归水平列向量。

作为时间的确定性函数,当以实数值标量时间 t 作为唯一输入调用 Level 时,Level 必须生成一个 NVars×1 列向量。如果您指定 Level 为时间和状态的函数,则在使用下面两个输入调用时,它必须生成 NVars×1 的回归水平列向量:

  • 实值标量观测时间 t

  • NVars×1 状态向量 Xt

数据类型: double | function_handle

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

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

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

  • 实值标量观测时间 t

  • NVars×1 状态向量 Xt

数据类型: double | function_handle

注意

虽然 cir 不对这些输入参量的符号施加限制,但每个参量都应指定为一个正值。

属性

全部展开

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

数据类型: double

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

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

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

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

数据类型: 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)

数据类型: struct | double

此 属性 为只读。

连续时间随机微分方程 (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)

数据类型: struct | double

对象函数

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
simByTransitionSimulate CIR sample paths with transition density
simByQuadExpSimulate Bates, Heston, and CIR sample paths by quadratic-exponential discretization scheme
simByMilsteinSimulate CIR process sample paths by Milstein approximation
simByMilstein2Simulate CIR process sample paths by second order Milstein approximation

示例

全部折叠

考克斯-英格索尔-罗斯 (CIR) 短期利率类直接派生自采用均值回归漂移的 SDE (SDEMRD):dXt=S(t)[L(t)-Xt]dt+D(t,Xt12)V(t)dW

其中 D 是一个对角矩阵,其元素是状态向量对应元素的平方根。

创建一个 cir 对象来表示模型:dXt=0.2(0.1-Xt)dt+0.05Xt12dW

obj = cir(0.2, 0.1, 0.05)  % (Speed, Level, Sigma)
obj = 
   Class CIR: Cox-Ingersoll-Ross
   ----------------------------------------
     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
          Sigma: 0.05
          Level: 0.1
          Speed: 0.2

详细信息

全部展开

算法

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

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

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

参考

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

全部展开