HullWhite1F

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

描述

赫尔白色一个因素模型是使用零曲线,α,和sigma参数指定。

具体而言,HullWhite1F模型是使用下面的等式来定义:

d [R = [ θ Ť - 一种 Ť [R ] d Ť + σ Ť d w ^

哪里:

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

[R是短期利率。

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

α是均值回归率。

DT在一次小的变化。

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

w ^是布朗运动。

创建

描述

HW1F= HullWhite1F(ZeroCurveΑ适马创建HullWhite1FHW1F使用所需的参数设置)对象属性

属性

展开全部

零曲线,指定为从输出IRDataCurveRateSpec是从获得的intenvset。这是用于发展的未来利率路径零线。

数据类型:目的|结构

均值回复,作为一个标量或功能句柄这需要时间作为输入,并返回一个标均值回归值或者指定。

数据类型:

波动,指定了作为一个标量或功能句柄这需要时间作为输入,并返回一个标平均波动。

数据类型:

对象函数

simTermStructs 赫尔 - 怀特单因素模型模拟期限结构

例子

全部收缩

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

定居= datenum('15  - 癸-2007');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与属性:ZeroCurve:[1x1的IRDataCurve]阿尔法:@(T,V)inAlpha西格玛:@(T,V)网新

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

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

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

定居= datenum('15  - 癸-2007');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);RateSpec = intenvset(“价格”,ZeroRates,'EndDates',CurveDates,'开始日期',解决);阿尔法= 0.1;标准差= 0.01;HW1F = HullWhite1F(RateSpec,α,西格马)
HW1F = HullWhite1F与属性:ZeroCurve:[1x1的IRDataCurve]阿尔法:@(T,V)inAlpha西格玛:@(T,V)网新

使用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',ZeroDates,“价格”,ZeroRates)
RateSpec =同场的结构:FinObj: 'RateSpec' 配混:2光盘:[8X1双]价格:[8X1双] EndTimes:[8X1双] StartTimes:[8X1双] EndDates:[8X1双] StartDates:736424 ValuationDate:736424基础:0 EndMonthRule:1

定义键参数。

成熟= datemnth(沉降,12 * 5);CouponRate = 0;

定义赫尔 - 怀特参数。

阿尔法= 0.1;标准差= 0.01;HW1F = HullWhite1F(RateSpec,α,西格马)
HW1F = HullWhite1F与属性:ZeroCurve:[1x1的IRDataCurve]阿尔法:@(T,V)inAlpha西格玛:@(T,V)网新

定义仿真参数。

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(“模拟日期”)标题(“模拟债券价格”

定义零个数据。

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

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

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

定义赫尔 - 怀特参数。

阿尔法= 0.1;标准差= 0.01;HW1F = HullWhite1F(RateSpec,α,西格马)
HW1F = HullWhite1F与属性:ZeroCurve:[1x1的IRDataCurve]阿尔法:@(T,V)inAlpha西格玛:@(T,V)网新

定义仿真参数。

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

预分配并初始化的仿真。

SimBondPrice =零(nPeriods + 1,nBonds,nTrials);SimBondPrice(1,:,:) = repmat(bondbyzero(RateSpec,CouponRate,沉降,成熟度)”,[1个1 nTrials]);SimBondPrice(端,:,:) = 100;[BondCF,BondCFDates,〜,CFlowFlags] = cfamounts(CouponRate,沉降,成熟度);BondCF(CFlowFlags == 4)= BondCF(CFlowFlags == 4) -  100;SimBondCF =零(nPeriods + 1,nBonds,nTrials);

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

对于periodidx = 1:nPeriods如果periodidx '开始日期',SimDates(periodidx),'EndDates'...datemnth(SimDates(periodidx),ZeroTimes * 12),“价格”,挤压(SimZeroCurvePaths(periodidx + 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(“模拟日期”)标题(“模拟债券投资组合回报率”

更多关于

展开全部

参考

[1] Brigo,D。和F.信使。利率模型 - 理论与实践。施普林格财务,2006年。

[2]船体,J.期权,期货和其它衍生工具。普伦蒂斯霍尔,2011。

介绍了在R2013a