主要内容

创建IRFunctionCurve对象

要创建IRFunctionCurve对象,请参阅以下选项:

使用功能手柄拟合IRF功能诊断对象

您可以使用构造函数Irfunctioncurve.用matlab.®功能手柄定义兴趣率曲线。有关定义功能句柄的更多信息,请参阅MATLAB编程基础文档。

例子

这个例子使用了一个functionHandle.具有价值的论据@(t)t。^ 2构建利率曲线:

rr = irfunctioncurve('零',今天,@(t)t。^ 2)
RR =属性:FunctionHandle:@(t)t。^ 2类型:'ZERO'定位:733600复合:2基础:0

使用Nelson-Siegel方法拟合Irfunctioncurve对象

使用方法,Fitnelsonsiegel.,对于纳尔逊 - Siegel模型,其具有屈服曲线的经验形式,具有预先确定的功能形式的现场速率,这是键成熟时间的函数。

Nelson-Siegel模型代表动态三因素模型:级别,斜率和曲率。然而,Nelson-Siegel因子是未观察的,或潜在的,允许测量误差,相关的负载具有经济限制(前瞻性速率始终为正,并且折扣因子随着成熟度增加而零接近)。有关更多信息,请参阅“零优惠券收益曲线:技术文档”BIS论文,国际定居点银行,2005年10月25日。

例子

这个例子用途Irfunctioncurve.建模英国利率违约期限结构。

加载数据:

加载Ukdata20080430

将repo率转换为等效的零优惠券债券:

repocouponrate = repmat(0,size(reporate));repoprode = bndprice(修复,remocouponrate,reposettle,重返剂);

汇总数据:

stand = [reposettle; poldsettle];成熟= [重新弥补;债券多洁];CleanPrice = [填充; BondCleanprice];佣金= [recocouponrate; bondcouponrate];仪器= [沉淀成熟CleanPrice优惠赎出];InstrumentPeriod = [Repmat(0,6,1); Repmat(2,31,1)];curvesettle =数据抑制('30 -apr-2008');

Irfunctioncurve.对象提供了适合纳尔逊 - Siegel曲线来观察市场数据的能力Fitnelsonsiegel.方法。拟合是通过调用该函数来完成的lsqnonlin.。该方法有必要输入类型定居,以及仪器数据的矩阵。

nsmodel = irfunctioncurve.fitnelsonsiegel('零',curvesettle,......仪器,“复合”,-1,'internerperiod',Instrumentperiod);

绘制Nelson-Siegel利率曲线以进行前置率:

Plottingdates = Curvesettle + 20:30:Curvesettle + 365 * 25;Timetomaturity = Whatfrac(Curvesettle,Plottingdates);nsforwardrates = getforwardrates(nsmodel,plottingdates);情节(时间术,NSForuddrates)标题('纳尔逊西格尔型号的英国瞬间名义前向曲线'

使用SVENSSON方法拟合IRF功能诊断对象

使用方法,Fitsvensson.,对于Svensson模型来提高曲线的灵活性和适合Nelson-Siegel模型。1994年,Svensson通过增加允许第二个“驼峰”的进一步术语扩展了纳尔逊和Siegel的功能。以增加两个参数的成本实现额外的精度,β3τ2,必须估计。

例子

在这个例子中使用了Fitsvensson.方法,ANIrfitOptions.结构,以前定义了使用IrfitOptions.使用构造函数。因此,您必须指定fittype.initialGuess.上行下面,而且OptOptions.优化参数lsqnonlin.

加载数据:

加载Ukdata20080430

将repo率转换为等效的零优惠券债券:

repocouponrate = repmat(0,size(reporate));repoprode = bndprice(修复,remocouponrate,reposettle,重返剂);

汇总数据:

stand = [reposettle; poldsettle];成熟= [重新弥补;债券多洁];CleanPrice = [填充; BondCleanprice];佣金= [recocouponrate; bondcouponrate];仪器= [沉淀成熟CleanPrice优惠赎出];InstrumentPeriod = [Repmat(0,6,1); Repmat(2,31,1)];curvesettle =数据抑制('30 -apr-2008');

定义OptOptions.为了IrfitOptions.构造函数:

OptOptions = Optimoptions('lsqnonlin''maxfunevals',1000);firfitoptions = irfitoptions([5.82 -2.55 -.87 0.45 3.9 0.44],......'fittype''durationweightedprice''OptOptions',optoptions,......'indowbound',[0 -inf -inf -inf 0 0],'上行',[inf inf inf inf inf]);

使用Svensson型号拟合利率曲线:

svenssonmodel = irfunctioncurve.fitsvensson('零',curvesettle,......仪器,'IrfitOptions',firefitoptions,“复合”,-1,......'internerperiod',Instrumentperiod)
地方最低可能。LSQNONLIN停止,因为相对于其初始值的平方和的最终变化小于功能公差的默认值。SvenssonModel =类型:零定位:733528(30-APR-2008)复合:-1基础:0(实际/实际)

状态消息,输出lsqnonlin.,表示优化以成功终止Svensson等式的参数。

绘制Svensson兴趣曲线以进行转发费率:

Plottingdates = Curvesettle + 20:30:Curvesettle + 365 * 25;Timetomaturity = Whatfrac(Curvesettle,Plottingdates);svenssonforwardrates = getforwardrates(svenssonmodel,plottingdates);绘制(时间术症,Svenssonforwardrates)标题(“英国瞬间名义前向曲线”的Svensson模型'

使用平滑样条方法拟合IrfunctionCurve对象

使用方法,fitsmoothingspline.以特定地模拟具有样条键的术语结构,术语结构表示具有立方样条曲线的前向曲线。

笔记

您必须有曲线拟合工具箱™软件的许可证来使用fitsmoothingspline.方法。

例子

Irfunctioncurve.对象用于拟合具有惩罚功能的前向曲线的平滑样条表示。所需的输入是类型定居,矩阵仪器, 和Lambdafun,包含惩罚功能的功能句柄

加载数据:

加载Ukdata20080430

将repo率转换为等效的零优惠券债券:

repocouponrate = repmat(0,size(reporate));repoprode = bndprice(修复,remocouponrate,reposettle,重返剂);

汇总数据:

stand = [reposettle; poldsettle];成熟= [重新弥补;债券多洁];CleanPrice = [填充; BondCleanprice];佣金= [recocouponrate; bondcouponrate];仪器= [沉淀成熟CleanPrice优惠赎出];InstrumentPeriod = [Repmat(0,6,1); Repmat(2,31,1)];curvesettle =数据抑制('30 -apr-2008');

选择参数Lambdafun

l = 9.2;s = -1;mu = 1;

定义Lambdafun惩罚功能:

lambdafun = @(t)exp(l  - (l-s)* exp(-t / mu));t = 0:.1:25;y = lambdafun(t);图半音(t,y);标题('VRP方法的惩罚功能')ylabel('惩罚')xlabel('时间'

使用fitsmoothinspline.符合兴趣曲线和模型的方法Lambdafun惩罚功能:

vrpmodel = irfunctioncurve.fitsmoothingspline('向前',curvesettle,......仪器,兰姆德芬,“复合”,-1,'internerperiod',Instrumentperiod);

绘制平滑的样条率曲线以进行前置率:

Plottingdates = Curvesettle + 20:30:Curvesettle + 365 * 25;Timetomaturity = Whatfrac(Curvesettle,Plottingdates);vrpforwardrates = getForwardrates(Vrpmodel,plottingdates);情节(时间术术,vrpforwardrates)标题(“英国瞬时名义前向曲线的平滑样条模型”

使用FITFUNCTION创建定制拟合功能

使用时Irfunctioncurve.对象,您可以创建一个自定义拟合功能FitFunction.方法。使用FitFunction.,你必须定义一个functionHandle.。此外,您还必须使用构造函数IrfitOptions.界定IrfitOptionsobj.支持A万博1manbetx.initialGuess.对于曲线函数的参数。

例子

以下示例演示了使用FitFunction.与A.functionHandle.IrfitOptionsobj.

stand = Repmat(Datenum('30 -apr-2008'),[6 1]);成熟= [数据抑制('07 -MAR-2009');数据抑制('07 -MAR-2011');......数据项('07 -MAR-2013');数据抑制('07 -sep-2016');......数据项('07 -MAR-2025');数据抑制('07 -mar-2036')];CleanPrice = [100.1; 100.1; 100.8; 96.6; 103.3; 96.3];优惠液= [0.0400; 0.0450; 0.0400; 0.0500; 0.0425];仪器= [沉淀成熟CleanPrice优惠赎出];curvesettle =数据抑制('30 -apr-2008');

定义functionHandle.

functionHandle = @(t,theta)polyval(θ,t);

定义OptOptions.为了IrfitOptions.

OptOptions = Optimoptions('lsqnonlin''展示''iter');

定义FitFunction.

custommodel = irfunctioncurve.fitfunction('零',curvesettle,......FunctionHandle,Instruments,IrfitOptions([05 .05 .05],'fittype''价格'......'OptOptions',optoptions));
一阶迭代Func-count f(x)步骤最优性CG-迭代0 4 38036.7 4.92E + 04 1 8 38036.7 10 4.92E + 04 0 2 12 38036.7 2.5 4.92E + 04 0 3 16 38036.7 0.625 4.92E +04 0 4 20 3803.7 30741.5 0.078125 1.7241.6 0.019506 0 + 0.0125 1.7241.6 0.0195070 2032年4月20日20323.3.300.00976562 9.47E + 05 0 10 44 20323.3 0.0195312 9.47E + 05 0 11 48 9.47E + 05 0 11 48 9.47E + 05 0 12 52 20323.3 0.0012207 9.472 + 05 012207 9.47E + 05 013 56 19698.8 0.000305176 1.082 + 06 0 14 6.08C + 06 0 14 60 17493 0.000610352 7E + 06 015 64 17493 0.0012207 7E + 06 0 16 68 17493 0.000305176 7e + 06 0 17 72 15455.1 7.629392-05 2.25E + 07 0 18 76 154551 0.000177499 2.25E + 07 0 19 80 13317.1 3.8147E-05 3.18E + 07 0 2084 12865.3 7.62939E-05 7.83E + 07 0 2 21 88 11779.8 7.62939E-05 7.58E + 06 0 22 92 11747.6 0.000152588 1.452 + 05 0 23 96 11720.9 0.000305176 2.332 + 05 0 24 100 116672 0.000610352 1.48C + 05 025 104 11558.6 0.0012207 3.552 + 05 0 26 108 11335.5 0.00244141 1.57E + 05 0 27 112 10863.8 0.00488281 6.36e + 05 0 28 116 9797.14 0.00976562 2.53e + 05 0 29 120 6882.83 0.0195312 9.18e + 05 0 30 124 6882.83 0.0373993 9.18e + 05 0 31 128 3218.45 0.00934981 1.96e + 06 0 32 132 612.703 0.0186996 3.01e +06 0 33 136 13.0998 0.0253882 3.05e + 06 0 34 140 0.0762922 0.00154002 5.05e + 04 0 35 144 0.0731652 3.61102e-06 29.9 0 36 148 0.0731652 6.32335e-08 0.063 0本地最小可能。LSQNONLIN停止,因为相对于其初始值的平方和的最终变化小于功能公差的默认值。

绘制使用定义的自定义功能FitFunction.

收益率= Bndyield(CleanPrice,CoupOrate,Sold(1),到期);散射(成熟,产量);绘图点= min(成熟):30:MAX(成熟);抓住;绘图(绘图点,getParyields(CustomModel,PlottingPoints),'r');dateTick传奇('市场收益率''适合收益曲线') 标题('自定义功能适合市场数据'

也可以看看

|||

相关例子

更多关于

外部网站