这个例子展示了如何在MATLAB®中使用金融工具工具箱™中的功能建模提前支付。具体来说,Richard and Roll提前支付模型的一个变体是使用两因素赫尔-怀特利率模型和LIBOR市场模型来模拟未来的利率路径。抵押贷款支持证券同时采用自定义和默认提前支付模型来定价。 提前支付模型对抵押贷款支持证券(MBS)的分析至关重要。个人抵押贷款持有人提前支付会影响现金流的数量和时间,对于抵押贷款抵押债券(例如,只付息证券),提前支付会极大地影响证券的价值。 最基本的提前支付模型是公共证券协会(PSA)模型,该模型假设有一个上升阶段,然后有一个恒定的条件提前支付率(CPR)。PSA模型可以在MATLAB中使用金融工具工具箱函数生成<一个href="//www.tatmou.com/jp/jp/help/fininst/psaspeed2rate.html" class="a"> 本例中分析的MBS将于2020年到期,具有本节中概述的属性。只需输入PSA速度作为输入参数,就可以为PSA提前支付速度生成现金流。 虽然提前还款建模通常涉及复杂和复杂的建模,通常是在贷款级别,但本示例使用了基于Richard和Roll提出的模型的稍微修改的方法[<一个href="//www.tatmou.com/jp/help/fininst/prepayment-modeling-with-a-two-factor-hull-white-model.html" class="intrnllnk">6 Richard and Roll提前支付模型涉及以下因素: 再融资动机 季节性(一年中的月份) 调味或年龄抵押 倦怠 Richard和Roll提出了以下的乘法模型:
对于本例中的自定义模型,使用<年代p一个ncl一个年代年代="emphasis">倦怠的乘数 再融资激励是抵押贷款券息率与特定时间点可用抵押贷款利率之比的函数。例如,储蓄机构监管局(OTS)提出了以下模型:
再融资激励需要模拟未来利率。这将在本例后面讨论。 “调味”指的是提前还款在抵押贷款开始时上升,然后趋于稳定的趋势。OTS对调味乘数的建模如下: 季节性乘数简单地模拟了提前支付的季节性行为——该数据基于[<一个href="//www.tatmou.com/jp/help/fininst/prepayment-modeling-with-a-two-factor-hull-white-model.html" class="intrnllnk">6 由于再融资激励需要对未来利率进行模拟,因此必须使用利率模型。一种选择是双因素加性高斯模型,Brigo和Mercurio将其称为G2++ [<一个href="//www.tatmou.com/jp/help/fininst/prepayment-modeling-with-a-two-factor-hull-white-model.html" class="intrnllnk">2 G2++利率模型为:
在哪里<年代p一个ncl一个年代年代="inlineequation">
是有相关性的二维布朗运动吗<年代p一个ncl一个年代年代="inlineequation">
而且<年代p一个ncl一个年代年代="inlineequation">
是短期汇率,<年代p一个ncl一个年代年代="inlineequation">
而且<年代p一个ncl一个年代年代="inlineequation">
均值回归常数和<年代p一个ncl一个年代年代="inlineequation">
而且<年代p一个ncl一个年代年代="inlineequation">
波动率是常数,和<年代p一个ncl一个年代年代="inlineequation">
为市场远期汇率,或结算日观察到的远期汇率。 LIBOR市场模型(LMM)不同于短期利率模型,它演化出一组离散的远期利率。具体来说,对数正态LMM为每个正向速率指定了以下扩散方程:
在哪里 dW
LMM是基于无套利理论来计算远期利率的变动。具体而言,在即期LIBOR指标下,漂移的表达方式如下:
在哪里
时间分数是否与第i个正向速率相关
索引函数是由这个关系定义的吗<年代p一个ncl一个年代年代="inlineequation">
即期LIBOR数字定义如下:
鉴于上述情况,LMM的选择是如何建模波动率和相关性。 利率的波动可以用随机波动率来建模,但对于这个例子,使用的是确定性波动率,因此需要指定函数形式。在文献中最流行的函数形式之一是:
在哪里<年代p一个ncl一个年代年代="inlineequation">
的波动率调整曲线以匹配<年代p一个ncl一个年代年代="inlineequation">
远期利率。 同样,需要指定远期汇率之间的相关性。这可以从历史数据中估计出来,也可以用期权价格来拟合。对于本例,将使用以下函数形式:
一旦确定了波动率和相关性,就需要对参数进行校准——这可以通过历史或市场数据来完成,通常是互换或上限和下限。对于这个例子,我们只是对相关性和波动性参数进行了合理的估计。 G2++模型中的参数可以根据市场数据进行校准。通常,这些参数是根据观察到的利率上限、下限和/或互换数据进行校准的。目前,市值数据仅用于校准。 这些数据是硬编码的,但可以通过数据库工具箱™或数据馈线工具箱™导入到MATLAB中。 为了校准模型参数,将找到一个参数集,使G2++预测Cap值与观测到的黑帽值之间的差的平方和最小化。优化工具箱™功能<一个href="//www.tatmou.com/jp/help/optim/ug/lsqnonlin.html" class="a"> 模型参数的上界和下界设置为相对约束。正如Brigo和Mercurio讨论的那样,相关参数,<年代p一个ncl一个年代年代="inlineequation">
,往往可以接近 的<一个href="//www.tatmou.com/jp/help/fininst/lineargaussian2f.html" class="a"> 在波动性和相关性被校准后,蒙特卡罗模拟被用来在时间上进化利率。的<一个href="//www.tatmou.com/jp/help/fininst/libormarketmodel.html" class="a"> 虽然LMM经常使用因子约简来降低计算复杂度,但本例中没有因子约简。 在这个模拟中,选取了600万的伦敦银行间拆放款利率。由于必须计算每月预付向量,因此使用插值来生成中间利率。采用简单线性插值。 可以通过调用函数来模拟各种利率路径<一个href="//www.tatmou.com/jp/help/fininst/lineargaussian2f.simtermstructs_lineargaussian2f.html" class="a"> 像这样的双因素高斯模型的一个限制是它允许负利率。这是一个令人担忧的问题,尤其是在低利率环境下。为了应对这种可能性,任何负利率的利率路径都被拒绝。 可以通过调用函数来模拟各种利率路径<一个href="//www.tatmou.com/jp/help/fininst/libormarketmodel.simtermstructs_libormarketmodel.html" class="a"> 一旦模拟了利率路径,就需要计算抵押贷款利率——一种方法,由[<一个href="//www.tatmou.com/jp/help/fininst/prepayment-modeling-with-a-two-factor-hull-white-model.html" class="intrnllnk">7 在本例中,使用的代码如下:
一旦抵押贷款利率被模拟,CPR就可以从每个利率路径的乘法模型中计算出来。 通过计算每个利率路径的单个月死亡率(SMM)向量,MBS的现金流可以计算和贴现。 不同方法的结果可以进行比较。G2++模型的试验次数通常少于100次,因为过滤掉了产生负利率的任何路径。 此外,虽然本例中G2++模型的试验次数设置为100次,但通常情况下需要运行大量的模拟来产生准确的估值。 这个例子展示了如何校准和模拟一个G2++利率模型,以及如何在一个松散地基于Richard and Roll模型的提前支付模型中使用生成的利率路径。这个例子还为在其他金融应用程序中使用G2++和LMM利率模型提供了一个有用的起点。 本例基于以下书籍、论文和期刊文章: 安德森,L.和V.皮特巴。<年代p一个ncl一个年代年代="emphasis">利率建模。 布里戈,D.和F.墨丘利奥。<年代p一个ncl一个年代年代="emphasis">利率模型-理论与实践与微笑,通货膨胀和信贷 海尔,L, ed,<年代p一个ncl一个年代年代="emphasis">所罗门美邦抵押贷款和资产支持证券指南 卡皮什潘,Y., O.图雷,A.哈莎。介绍花旗LMM抵押贷款期限结构模型。<年代p一个ncl一个年代年代="emphasis">固定收益杂志。 Rebonato, R., K. McKay, R. White(2010)。<年代p一个ncl一个年代年代="emphasis">Sabr/Libor市场模型:复杂利率衍生品的定价、校准和对冲 理查德,S. F.和R.罗尔。"固定利率抵押贷款支持证券的提前支付"<年代p一个ncl一个年代年代="emphasis">投资组合管理杂志。 储蓄机构监管办公室,“净投资组合价值模型手册”。2000年3月。 施泰因,别里科夫,李文凯,田晓明。《按揭证券分析:信贷危机前后》(2007年1月5日)。《信用风险前沿:次贷危机,定价和对冲,CVA, MBS,评级和流动性》托马斯,Bielecki;Damiano Brigo和Frederic Patras。, eds。,Febru一个ry2011. Available at SSRN:<一个href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=955358" target="_blank">https://papers.ssrn.com/sol3/papers.cfm?abstract_id=955358简介
PSA模型
psaspeed2rate
G2PP_CPR = psaspeed2rate([100 200]);图表(G2PP_CPR)<年代p一个n年代tyle="color:#A020F0">“100和200 PSA预付速度”
抵押贷款支持证券
%要定价的MBS传递参数
理查德和罗尔模型
C_m = .1:.1:2;G2PP_Refi = .2406 - .1389 * atan(5.952*(1.089 - C_M));图(C_M,G2PP_Refi)<年代p一个n年代tyle="color:#A020F0">的优惠券/抵押贷款利率
调味= 1 (360,1);调味(1:29)= (1:29)/30;figure plot(调味)xlim([1 360])<年代p一个n年代tyle="color:#A020F0">“调味乘数”
季节性=[。947673..96.98.92 .99 1.1 1.18 1.21 1.23 .97]; figure plot(Seasonality) xlim([1 12]) ax = gca; ax.XTick = 1:12; ax.XTickLabel = {<年代p一个n年代tyle="color:#A020F0">“1月”
G2++利率模型
LIBOR市场模型
要使用的波动函数——以及参数的一个选择。
校正市场数据
% 0曲线——该数据目前是硬编码的,但可以引导
% Cap数据
lsqnonlin
capbylg2f
调用lsqnonlin来校准参数
局部最小值。Lsqnonlin停止了,因为最终平方和相对于其初始值的变化小于函数公差的值。
a = G2PP_Params(1);b = G2PP_Params(2);sigma = G2PP_Params(3);eta = G2PP_Params(4);rho = G2PP_Params(5);<年代p一个n年代tyle="color:#228B22">%比较结果
gg2 ++模型实现
LinearGaussian2F
% G2++模型来自Brigo和Mercurio,具有时间均匀波动
LIBOR市场模型的实现
LiborMarketModel
numForwardRates = 46;<年代p一个n年代tyle="color:#228B22">VolPhi不是适合的,而是简单地硬编码的。
G2++蒙特卡罗模拟
simTermStructs
nPeriods = NumCouponsRemaining;nTrials = 100;DeltaTime = 1/12;<年代p一个n年代tyle="color:#228B22">生成因素和短期汇率
LIBOR市场模型模拟
simTermStructs
LiborMarketModel
LMMPeriod = 2;<年代p一个n年代tyle="color:#228B22">半年度比率
从模拟计算抵押贷款利率
从利率路径计算抵押贷款利率
计算CPR和生成和评估现金流
计算调味和再融资乘数。
生成现金流并计算现值
计算每个现金流时间的基准零利率。
流(<年代p一个n年代tyle="color:#A020F0">#蒙特卡洛选拔赛:%8d\n'
蒙特卡洛预选赛排名:72
流(<年代p一个n年代tyle="color:#A020F0"># of Time Periods/Trial: %8d\n\n'
时间周期/试验数量:156
流(<年代p一个n年代tyle="color:#A020F0">' MBS价格与PSA 100: %8.4f\n'
MBS价格,PSA 100: 1.0187
流(<年代p一个n年代tyle="color:#A020F0">' MBS价格与定制G2PP预付模式:%8.4f\n\n'
定制G2PP预付模式的MBS价格:0.9884
流(<年代p一个n年代tyle="color:#A020F0">' MBS价格与自定义LMM预付模式:%8.4f\n\n'
MBS价格与自定义LMM预付模式:0.9993
结论
参考书目
另请参阅
mbscfamounts
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsconvp
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsconvy
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsdurp
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsdury
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsnoprepay
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbspassthrough
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsprice
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbswal
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsyield
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsprice2speed
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsyield2speed
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">psaspeed2default
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">psaspeed2rate
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsoas2price
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsoas2yield
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsprice2oas
|<年代p一个n我temscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mbsyield2oas
相关的例子
更多关于