ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-05-12 14:05:48  阅读:244  来源: 互联网

标签:仿真 maturities 语言 HullWhite 模型 Hull White 利率


原文链接:http://tecdat.cn/?p=18661

 

在这篇文章中,我使用 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.***n.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'

 


最受欢迎的见解

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言COPULAS和金融时间序列数据VaR分析

5.R语言多元COPULA GARCH 模型时间序列预测

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险

标签:仿真,maturities,语言,HullWhite,模型,Hull,White,利率
来源: https://blog.51cto.com/u_15198753/2770022

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有