【发布时间】:2019-09-30 12:20:59
【问题描述】:
我想用固定的 lambda 计算 Nelson Siegel 模型的 beta 参数。 lambda 应设置为 0.609。我有一个包含 54 条收益率曲线的 excel 文件。对于每条收益率曲线,我想根据 Nelson Siegel 模型估计 beta 参数。
起初,我尝试使用“YieldCurve”包中的 Nelson.Siegel 函数。但是,该函数只有两个参数,因此我无法获取 lambda 常量。
其次,我自己创建了一个函数来计算 Nelson Siegel 模型。我想通过更改函数的 beta 参数来最小化 Nelson Siegel 收益率与实际收益率之间的平方差。我通过使用求解器在 excel 中做到了这一点。
我目前的代码:
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 中做同样的事情?
或者还有其他方法可以得到我的结果吗?
【问题讨论】: