首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何预测在R中λ为常数的Nelson Siegel的参数?

如何预测在R中λ为常数的Nelson Siegel的参数?
EN

Stack Overflow用户
提问于 2019-09-30 20:20:59
回答 1查看 1K关注 0票数 0

我想用一个固定的λ来计算Nelson Siegel模型的beta参数。应该将lambda设置为0.609。我有一个包含54条收益率曲线的excel文件。对于每条收益率曲线,我想从Nelson Siegel模型估计beta参数。

首先,我尝试使用"YieldCurve“包中的Nelson.Siegel函数。但是,该函数只有两个参数,所以我无法获得lambda常量。

其次,我自己创建了一个函数来计算Nelson Siegel模型。我想通过改变函数的beta参数来最小化Nelson Siegel收益率和实际收益率之间的平方差。我用solver在excel中做了这件事。

到目前为止我所拥有的代码:

代码语言:javascript
复制
RTS54_list <- read_xlsx("YieldCurves.xlsx")

nelson_siegel_calculate<-function(theta,lambda,beta0,beta1,beta2){
  beta0 + beta1*(1-exp(-lambda * theta))/(lambda * theta) + beta2*((1-exp(-lambda * theta))/(lambda * theta) - exp(-lambda * theta))
}

ns_data <-
  data.frame(maturity=1:100) %>%
  mutate(NSS=nelson_siegel_calculate(theta=maturity,lambda=0.0609,beta0=0.02,beta1=-0.02,beta2=0.01))

我如何在R中做同样的事情?

还是有其他方法可以得到我的结果?

EN

回答 1

Stack Overflow用户

发布于 2019-10-03 00:10:46

您可以在R中使用optim()函数来最小化实际收益率和nelson_siegel预测之间的平方差之和。

我抓取了US Treasury yield curve for 2 Jan 2019;将月份的到期日转换为年的小数,最终得到以下数据帧:

代码语言:javascript
复制
    yldmat <- structure(list(maturity = c(0.0833333333333333, 0.166666666666667, 
              0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 30), yield = c(0.024, 0.024, 
              0.0242, 0.0251, 0.026, 0.025, 0.0247, 0.0249, 0.0256, 0.0266, 
              0.0283, 0.0297)), class = "data.frame", row.names = c(NA, -12L))

然后我创建了以下最小化函数,lambda缺省为0.609,theta与每个曲线点的‘成熟度’值相同:

代码语言:javascript
复制
min.ns <- function(data, param) {
    with(data, sum((yield - nelson_siegel_calculate(maturity, 0.609, param[1], param[2], param[3]))^2))
}

现在,我可以使用初始参数集0.02,-0.02,0.01来调用optim()例程,根据您的示例:

代码语言:javascript
复制
optim(par = c(0.02,-0.02,0.01), fn = min.ns, data = yldmat)
$par
[1]  0.029152661 -0.004403284 -0.007526309

$value
[1] 7.983234e-06

$counts
function gradient 
     132       NA 

$convergence
[1] 0

$message
NULL

$par值是您想要的beta0、beta1和beta2的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58167808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档