R语言对HullWhite短期利率模型仿真

简介: R语言对HullWhite短期利率模型仿真

在这篇文章中,我使用 R 建立著名的Hull-White利率模型并进行仿真。

Hull and White(1994)模型解决Vasicek模型对利率的初始期限结构的拟合不佳的问题。该模型定义为:

Wt是风险中性框架下的维纳过程,模拟随机市场风险因素。σ是标准差参数,影响利率的波动,波动幅度有着瞬时随机流动的特征。参数b,a,σ和初始条件r0是完全动态的,并且瞬时变动。

该模型的另一种示形式是:

假定a是非负数:

b:长期平均水平。在长期水平下产生一系列r的轨道值。

a:回归速度。代表b的轨道值实时重组的速度。

σ:代表瞬时波动,测量每个时点随机因素进入系统的振幅

以下是由公式导出的一些数值:

:长期方差。计算在长期所有r值围绕平均值重组的轨道值。

aσ数值相反波动:增加σ会增加随机数进入系统的数量,

a增加会使方差稳定,围绕长期平均值b以方差值波动。这在看长期方差时十分明显。当方差值不变时,若σ增加,a减少。此模型是一个奥恩斯坦 - 乌伦贝克随机过程。

这些假设以及 对信贷/流动性风险的简单(并行)调整仍在保险中广泛使用 ,但在2007年次贷危机后被市场抛弃。

有关新的多曲线方法的更多详细信息,请参见例如 http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2219548。在本文中,作者介绍了一个多曲线自举(bootstrap)过程。

#清理工作区

rm(list=ls())

 

#模拟的频率




freq <- "monthly"


delta_t <- 1/12

#数据


params <- list(tradeDate=as.Date('2002-2-15'),


               settleDate=as.Date('2002-2-19'),


               payFixed=TRUE,


               dt=delta_t,


               strike=.06,


               method="HWAnalytic",


               interpWhat="zero",


               interpHow= "spline")

#构建利率期限结构的市场数据

#存款和掉期


tsQuotes <- list(d1w =0.0382,




                 s2y = 0.037125,


                 s3y =0.0398,

#具有相应期限和期限的掉期波动率矩阵


swaptionMaturities <- c(1:5)


swapTenors <- c(1:5)

#为掉期定价


pric <- Swaption(params, swaptionMaturities, swapTenors,

#构建利率的即期期限结构

#根据输入的市场数据


times <- seq(from = delta_t, to = 5, by = delta_t)




maturities <- curves$times

############## Hull-White短期利率模拟

#模拟次数,频率



horizon <- 5
sims <- 10000

#校准Hull-White参数




a <- pricing$a


sigma <- pricing$sigma

#使用模拟高斯冲击

simshos(n = nb.sims, horizon = horizon )

#使用模拟因子x

#我使用远期汇率。由于每月的频率较低,

#我认为它们是瞬时远期汇率


fwdrates <- ts(replicate(nb.sims, curves$forwards),


                start = start(x),


                deltat = deltat(x))

# α






alpha <- fwdrates + param.alpha

#短期利率


r <- x + alpha

#随机贴现因子(当前的数值积分是非常基本的)

#由随机贴现因子得出的蒙特卡洛价格和零利率





montecarlozerorates <- -log(montecarloprices)/maturities

#市场和蒙特卡洛价格之间的差异的置信区间




conf.int <- t(apply((Dt - marketprices)[-1, ], 1, function(x) t.test(x)$conf.int))




 
par(mfrow = c(2, 2))

#短期利率分位数

#蒙特卡洛vs市场零利率


plot(maturities, montecarlozerorates, type='l', col = 'blue', lwd = 3,


points(maturities, marketzerorates, col = 'red')

#蒙特卡洛vs市场零息价格



plot(maturities, montecarloprices, type ='l', col = 'blue', lwd = 3,


points(maturities, marketprices, col = 'red')

#价格差的置信区间



matplot(maturities[-1], conf.int, type = 'l'


相关文章
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
3月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
7月前
|
数据可视化
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码2
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
7月前
|
数据可视化 数据挖掘
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码1
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
7月前
|
前端开发 数据可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
|
7月前
|
算法 搜索推荐
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
|
7月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
下一篇
DataWorks