主要内容

HullWhite1F

创建赫尔 - 怀特单因素模型

描述

赫尔白单因素模型是使用零曲线、阿尔法和西格玛参数指定的。

具体而言,HullWhite1F模型使用以下方程式定义:

D R = [ θ. ( T ) A. ( T ) R ] D T + σ. ( T ) D W

哪里:

博士在短期利率在一个小的区间变化。

R是短期利率。

Θ(t)是时间确定平均方向的功能,其中R移动,选择使移动在R与今天的零息票收益率曲线一致。

α.是均值回归率。

dt这是时间上的一个小变化。

σ.是短期利率的年度标准差。

W是布朗运动。

创造

描述

实例

HW1F=HullWhite1F(零曲线,阿尔法,西格玛)创建一个HullWhite1F(HW1F使用所需的参数设置)对象性质.

性质

展开全部

零曲线,指定为从输出爱迪达曲线或者RateSpec是从获得的意图集.这是用于发展的未来利率路径零线。

数据类型:对象|结构

均值回复,指定为标量或函数句柄,它将时间作为输入并返回标量均值回复值。

数据类型:双倍的

波动率,指定为标量或函数句柄,以时间作为输入并返回标量平均波动率。

数据类型:双倍的

目标函数

simTermStructs 模拟赫尔-怀特单因素模型的术语结构

例子

全部收缩

使用爱迪达曲线.

定居= datenum(‘2007年12月15日’);CurveTimes = [1:5 7 10 20]';ZeroRates = [0.01 0.018 0.024 0.029 0.033 0.034 0.035 0.034]';CurveDates = daysadd(沉降,360个* CurveTimes,1);IRDC = IRDataCurve('零',沉降,CurveDates,ZeroRates);阿尔法= 0.1;标准差= 0.01;HW1F = HullWhite1F(IRDC,α,西格马)
HW1F=HullWhite1F,具有以下属性:零曲线:[1x1 IRDataCurve]Alpha:@(t,V)inAlpha Sigma:@(t,V)inSigma

使用simTermStructs方法与HullWhite1F模型模拟期限结构。

SimPaths = simTermStructs(HW1F,10,'nTrials',100);

使用RateSpec.

定居= datenum(‘2007年12月15日’); 曲线时间=[1:571020];零利率=[.01.018.024.029.033.034.035.034];曲线速度=日速度(固定,360*曲线速度,1);RateSpec=intenvset(“价格”,零利率,'EndDates',弯曲,“开始日期”,定居);alpha=.1;sigma=.01;HW1F=HullWhite1F(等级规范,alpha,sigma)
HW1F=HullWhite1F,具有以下属性:零曲线:[1x1 IRDataCurve]Alpha:@(t,V)inAlpha Sigma:@(t,V)inSigma

使用simTermStructs方法与HullWhite1F模型模拟期限结构。

SimPaths = simTermStructs(HW1F,10,'nTrials',100);

定义零曲线数据。

定居= datenum('4-APR-2016');ZeroTimes = [3/12 6/12 1 5 7 10 20 30]';ZeroRates = [0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475]';ZeroDates = datemnth(沉降,ZeroTimes * 12);RateSpec = intenvset('StartDates', 定居,'EndDates',零日期,“价格”,ZeroRates)
等级规范=同场的结构:FinObj: 'RateSpec' 配混:2光盘:[8X1双]价格:[8X1双] EndTimes:[8X1双] StartTimes:[8X1双] EndDates:[8X1双] StartDates:736424 ValuationDate:736424基础:0 EndMonthRule:1

定义键参数。

到期日=到期日(结算,12*5);耦合率=0;

定义外壳白色参数。

alpha=.1;sigma=.01;HW1F=HullWhite1F(等级规范,alpha,sigma)
HW1F=HullWhite1F,具有以下属性:零曲线:[1x1 IRDataCurve]Alpha:@(t,V)inAlpha Sigma:@(t,V)inSigma

定义仿真参数。

nTrials = 100;nPeriods = 12 * 5;的DeltaTime = 1/12;SimZeroCurvePaths = simTermStructs(HW1F,nPeriods,'nTrials',nTrials,'的DeltaTime',的DeltaTime);SimDates = datemnth(沉降,1:nPeriods);

为模拟预分配和初始化。

SimBondPrice =零(nPeriods + 1,nTrials);SimBondPrice(1,:,:) = bondbyzero(RateSpec,CouponRate,沉降,成熟度);SimBondPrice(端,:,:) = 100;

计算每个模拟日期和路径,注意,你可以向量化过审尺寸的债券价值。

对于periodidx=1:nPeriods-1 simRateSpec=intenvset(“开始日期”,SimDates(periodidx),'EndDates',...datemnth(SimDates(periodidx),ZeroTimes * 12),“价格”,挤压(SimZeroCurvePaths(periodidx + 1,:,:)));SimBondPrice(periodidx + 1,:) = bondbyzero(simRateSpec,CouponRate,SimDates(periodidx),成熟度);终止情节([定居SimDates],SimBondPrice)datetick ylabel(“债券价格”)xlabel(“模拟日期”) 标题(“模拟债券价格”)

图中包含一个Axis对象。标题为“模拟债券价格”的Axis对象包含100个line类型的对象。

定义零曲线数据。

定居= datenum('4-APR-2016');ZeroTimes=[3/12 6/12 15 7 10 20 30]';ZeroRates=[-0.01-0.009-0.0075-0.003-0.002-0.001 0.002 0.0075]';ZeroDates=datemnth(结算,ZeroTimes*12);RateSpec=intenvset('StartDates', 定居,'EndDates',零日期,“价格”,ZeroRates)
等级规范=同场的结构:FinObj: 'RateSpec' 配混:2光盘:[8X1双]价格:[8X1双] EndTimes:[8X1双] StartTimes:[8X1双] EndDates:[8X1双] StartDates:736424 ValuationDate:736424基础:0 EndMonthRule:1

定义投资组合中五种债券的债券参数。

成熟= datemnth(沉降,12 * 5);%所有债券的到期日相同耦合率=[0.035;0.04;0.02;0.015;0.042];%债券的不同票面利率nBonds =长度(CouponRate);

定义外壳白色参数。

alpha=.1;sigma=.01;HW1F=HullWhite1F(等级规范,alpha,sigma)
HW1F=HullWhite1F,具有以下属性:零曲线:[1x1 IRDataCurve]Alpha:@(t,V)inAlpha Sigma:@(t,V)inSigma

定义仿真参数。

nTrials = 1000;nPeriods = 12 * 5;的DeltaTime = 1/12;SimZeroCurvePaths = simTermStructs(HW1F,nPeriods,'nTrials',nTrials,'的DeltaTime',的DeltaTime);SimDates = datemnth(沉降,1:nPeriods);

为模拟预分配和初始化。

SimBondPrice=0(nPeriods+1,nBonds,nTrials);SimBondPrice(1,:,:)=repmat(bondbyzero(RateSpec,CouponRate,Settle,Maturity)[1 nTrials];SimBondPrice(end,:,:,:)=100;[BondCF,BondCFDates,~,CFlowFlags]=cfamounts(CouponRate,Settle,Maturity);BondCF(CFlowFlags==4)=(CFlowFlags==4)-100;SimBondCfBondCf=0(nPeriods+1,nBonds,nTrials);

对于每个模拟日期和路径计算键的值。请注意,您可以在审判层面量化。

对于periodidx = 1:nPeriods如果periodidx “开始日期”,SimDates(periodidx),'EndDates',...datemnth(SimDates(periodidx),ZeroTimes * 12),“价格”,挤压(SimZeroCurvePath(周期IDX+1,:,:);SimBondPrice(periodidx+1,:,:)=bondbyzero(simRateSpec,CouponRate,SimDates(periodidx),到期日);终止simidx = SimDates(periodidx)== BondCFDates;SimCF =零(1,nBonds);SimCF(任何(simidx,2))= BondCF(simidx);ReinvestRate = 1 + SimZeroCurvePaths(periodidx + 1,1,:);SimBondCF(periodidx + 1,:,:) = bsxfun(@倍,bsxfun(@加,SimBondCF(periodidx,:,:),SimCF),ReinvestRate);终止

计算总回报系列。

TotalCF=SimBondPrice+SimBondCF;

假设债券投资组合的权重相等,并绘制模拟债券投资组合回报图。

TotalCF =挤压(总和(TotalCF,2));TotRetSeries = bsxfun(@ rdivide,TotalCF(2:端,:),TotalCF(1,:)) -  1;图(SimDates,TotRetSeries)datetick ylabel(“债券投资组合回报率”)xlabel(“模拟日期”) 标题(“模拟债券组合收益”)

图中包含一个Axis对象。具有标题模拟债券组合回报的Axis对象包含1000个line类型的对象。

更多关于

展开全部

参考

[1] Brigo,D.和F.Mercurio。利率模型 - 理论与实践。斯普林格金融,2006年。

[2]船体,J.期权、期货和其他衍生品。普伦蒂斯霍尔,2011。

介绍了在R2013a