主要内容

模拟利率

模拟利率

所有模拟方法都要求通过指定周期数(NPeriods).您还可以选择指定严格为正的时间增量的标量或向量(DeltaTime)和中间时间步长(NSteps).这些参数,以及与对象相关的初始采样时间(开始时间),唯一地确定状态向量被采样的时间序列。因此,模拟方法允许您从头到尾遍历时间网格(即从左到右)。

相反,插值方法允许您以任何顺序遍历时间网格,允许在时间上向前和向后移动。它们允许您指定插值次数的向量,其元素不必是唯一的。

许多参考文献将布朗桥定义为与遍历时间网格的方案相结合的条件模拟,有效地合并了两种不同的算法。相比之下,这里提供的插值方法通过有意分离算法提供了额外的灵活性。在这种移动时间网格的方法中,您执行初始蒙特卡罗模拟以在终端时间对状态进行采样,然后通过随机插值依次对中间状态进行采样。前几个样本决定路径的整体行为,而后面的样本逐步细化结构。这种算法经常被称为方差缩减技术.当插值次数为2的幂次时,该算法很简单。在这种情况下,每个插值都位于两个已知状态之间,使用像对分这样的方法来改进插值。这个例子通过实现这个2的幂算法突出了精细化插值的灵活性。

  1. 加载数据。加载从2001年2月7日到2006年4月24日期间的三个月欧元银行间同业拆借利率历史数据集,每日观察,以及相应的交易日期:

    负载Data_GlobalIdx2plot(日期,100 * Dataset.EB3M)“x”),包含(“日期”), ylabel (日收益率(%))标题(3个月Euribor日有效收益率

    图中包含一个轴对象。标题为“3-Month Euribor as a Daily Effective Yield”的axis对象包含一个类型为line的对象。

  2. 为数据拟合模型。现在拟合一个简单的单变量Vasicek3个月期Euribor数据的日当量收益率模型:

    d X t 年代 l X t d t + σ d W t

    给定初始条件,短期汇率在某一时刻的分布T为带均值的高斯分布:

    E X T X 0 e 年代 T + l 1 e 年代 T

    和方差:

    V 一个 r X T σ 2 1 e 年代 T / 2 年代

    为了校准这个简单的短期利率模型,用更熟悉的回归格式重写它:

    y t α + β x t + ε t

    地点:

    y t d X t α 年代 l d t β 年代 d t

    执行普通线性回归,其中模型波动率与残差的标准误差成正比:

    σ V 一个 r ε t / d t

    yield = Dataset.EB3M;回归函数= [ones(length(yield) - 1,1) yield (1:end-1)];[系数,区间,残差]=...回归(diff(收益率),解释变量);Dt = 1;%时间增量= 1天速度= -系数(2)/dt;Level = -coefficients(1)/coefficients(2);Sigma = std(残差)/√(dt);
  3. 创建一个对象并设置它的初始StartState。创建一个hwv对象与StartState设置为最近观察到的短期汇率:

    Obj = hwv(速度,水平,西格玛,“StartState”收益率(结束)
    obj =类HWV:赫尔-白/Vasicek ----------------------------------------维度:状态= 1,布朗= 1 ---------------------------------------- StartTime: 0 StartState: 7.70408e-05相关性:1漂移:漂移率函数F(t,X(t))扩散:扩散率函数G(t,X(t))仿真:仿真方法/函数simByEuler Sigma: 4.77637e-07水平:6.00424e-05速度:0.00228854
  4. 模拟拟合模型。例如,假设您模拟超过64 (26)的交易日,使用一个改进的布朗桥与2的幂算法,而不是通常的开始到结束蒙特卡罗模拟方法。此外,假设初始时间和状态与历史数据的最后可用观测相一致,并且最终状态是未来64天Vasicek模型的期望值。在这种情况下,您可以评估所有共享相同初始和终端状态的各种路径的行为,也许是为了支持在三个月的间隔内对路径依赖的利率选项定价。金宝app

    创建插值时间向量,通过时间向前和向后移动遍历时间网格。其中,第一次插补时间设置为最近的短速率观测时间,第二次插补时间设置为终端时间,后续插补次数依次采样中间状态:

    T = 64;times = (1:T)';t = NaN(长度(倍)+ 1,1);t(1) = obj.StartTime;t(2) = t;= T;jMax = 1;iCount = 3;k = 1:log2(T) i = delta / 2;j = 1:jMax t(iCount) = times(i);I = I +;iCount = iCount + 1;结束jMax = 2 * jMax;Delta = Delta / 2;结束
  5. 绘制插值次数。检查由该算法生成的插补次数的顺序:

    阀杆(1:长度(t), t,“填充”)包含(“指数”), ylabel (插值时间(天))标题(二幂算法的抽样方案

    图中包含一个轴对象。标题为Sampling Scheme for The Power-of-Two Algorithm的axes对象包含一个类型为stem的对象。

    前几个样本在时间上被广泛分离,并确定路径的过程结构。后来的样品间隔紧密,并逐步细化细节结构。

  6. 初始化时间序列网格。现在您已经生成了插值时间序列,初始化一个课程时间序列网格以开始插值。抽样过程开始于从历史短期利率序列中获取的最后观测时间和状态,并在未来64天的期望值处结束Vasicek由标定参数推导出的模型:

    Average = obj。StartState* exp(-speed * T) + level *...(1 - exp(-speed * T));X = [obj.]年代t一个rt年代t一个te; average];
  7. 生成5个示例路径。生成五个示例路径,设置完善输入标志真正的将每个新的插值状态插入到时间序列网格中,因为它变得可用。在一个一个试验的基础上执行插值。因为输入时间序列X有五个试验(其中三维时间序列的每一页代表一个独立的试验),插值输出序列Y也有五页:

    nTrials = 5;rng (63349“旋风”) Y = obj.interpolate(t, X(:,:,ones(nTrials,1)),...“次”, (obj。年代t一个rtTime T],“完善”,真正的);
  8. 绘制结果示例路径。由于插补次数不是单调增加的,因此对插补次数进行排序并重新排序相应的短期汇率:

    [t,i] =排序(t);Y =挤压(Y);Y = Y(i,:);plot(t, 100 * Y), hold(“上”) plot(t([1 end]), 100 * Y([1 end],1),”。黑色的“MarkerSize”(20)包含“插值时间(未来几天)”) ylabel (的收益率(%)), (“关闭”)标题(《布朗桥插值的Euribor收益率》

    图中包含一个轴对象。标题为Euribor yield from Brownian Bridge Interpolation的axis对象包含6个类型为line的对象。

    此图中的短期汇率表示共享相同初始值和终端值的备选样本路径。它们说明了一个特殊的,虽然简单,更广泛的抽样技术的情况,称为分层抽样.有关分层抽样的更复杂示例,请参见分层抽样

    尽管这个简单的例子模拟了一个单变量Vasicek利率模型,它适用于任何维度的问题。

提示

布朗桥方法还应用更一般的方差减少技术。有关更多信息,请参见分层抽样

确保正利率

所有模拟和插值方法都允许您指定一个函数序列或后台进程,以便在每个采样时间段结束时进行评估。此期间包括由可选项确定的任何中间时间步骤NSteps输入,如中所讨论优化精度:关于解的精度和误差.这些函数被指定为时间和状态的可调用函数,并且必须返回更新后的状态向量Xt

X t f t X t

必须将多个处理函数指定为单元格函数数组。这些函数按照它们在单元格数组中出现的顺序被调用。

处理函数不需要使用时间(t)或状态(Xt).它们也不需要更新或更改输入状态向量。事实上,模拟和插值方法不了解任何实现细节,在这方面,它们只遵循已发布的接口。

这些处理函数提供了一个强大的建模工具,可以解决各种问题。例如,这些函数允许您指定边界条件、积累统计信息、绘制图形和价格路径相关选项。

除布朗运动外(BM)模型,模拟状态向量的各个分量通常表示现实世界对应的变量,这些变量本质上是正量,例如资产价格或利率。然而,默认情况下,这里提供的大多数模拟和插值方法将连续采样时间之间的过渡建模为缩放(可能是多元)高斯绘制。因此,当在离散时间中近似连续时间过程时,状态向量可能不为正。唯一的例外是simBySolution“绿带运动”对象和simBySolutionhwv对象,可分离几何布朗运动模型的对数变换。此外,在默认情况下,没有一种模拟和插值方法对状态向量进行调整。因此,您有责任确保状态向量的所有分量保持适当的正数。

幸运的是,指定非负状态可以确保简单的期末处理调整。虽然这种调整是广泛适用的,但当应用于单变量时,它是有启示的圆形的平方根扩散模型:

d X t 0.25 0.1 X t d t + 0.2 X t 1 2 d W t 年代 l X t d t + σ X t 1 2 d W t

也许是单变量的主要吸引力圆形的模型的地方:

2 年代 l σ 2

短期利率保持为正。然而,短期利率的正性只适用于基本的连续时间模型。

  1. 的日短期汇率圆形的模型。为了说明后一种说法,可以模拟日元的每日短期汇率圆形的模型,使用圆形的,超过一个日历年(约250个交易日):

    rng (14151617,“旋风”) obj = cir(0.25,@(t,X)0.1,0.2,“StartState”, 0.02);[X,T] = simByEuler(obj,250,“DeltaTime”, 1/250,“nTrials”5);sprintf (' % 0.4 f \ t % 0.4 f + i % 0.4 f \ n ', (T (195:205) ';...真正的(X (195:205 1 4)) ';图像放大(X (195:205 1 4))))
    Ans = '0.7760 0.0003+i0.0000 0.7800 0.0004+i0.0000 0.7840 0.0002+i0.0000 0.7880 -0.0000+i0.0000 0.7920 0.0001+i0.0000 0.7960 0.0002+i0.0000 0.8000 0.0002+i0.0000 0.8040 0.0008+i0.0001 0.8080 0.0004+i0.0001 0.8120 0.0008+i0.0001 0.8160 0.0008+i0.0001 '

    如果在离散时间中模拟结果路径,利率可以变为负值。此外,由于圆形的模型包含一个平方根扩散项,短期速率甚至可能变得复杂。

  2. 使用处理函数重复模拟。重复模拟,这一次指定一个处理函数,该函数在每个周期结束时取短期汇率的绝对值。您可以按时间和状态访问处理功能(tXt),但它只使用短期汇率的状态向量Xt

    rng (14151617,“旋风”) [Y,T] = simByEuler(obj,250,“DeltaTime”, 1/250,...“nTrials”5,“过程”@ (t, X) abs (X));
  3. 比较调整后和未调整后的路径。通过在感兴趣的时间跨度内使用周期结束处理函数,图形化地比较未调整路径(有负数和复数!)的大小与保持为正的相应路径:

    clf情节(T, 100 * abs (X(:, 1、4)),“红色”T 100 * Y(:, 1、4),“蓝”xlabel([0.75 1 0 0.4])的时间(年)), ylabel (“短期利率(%)”)标题(“单变量CIR短期利率”)({传奇“负面/复杂率”“积极率”},...“位置”“最佳”

    图中包含一个轴对象。标题为Univariate CIR Short Rates的axes对象包含2个类型为line的对象。这些对象代表负/复利率,正利率。

提示

您可以使用此方法获得更准确的SDE解。金宝搏官方网站有关更多信息,请参见性能考虑

另请参阅

||||||||||||||||||||

相关的例子

更多关于