2

我想使用 Nelson-Siegel 模型插入收益率曲线。我是 R 语言的新手,但决定使用“产量曲线”包(可在此处获得 http://cran.r-project.org/web/packages/YieldCurve/index.html和文档链接:http://cran .r-project.org/web/packages/YieldCurve/YieldCurve.pdf)我面临两个问题:

1)我不明白为什么以下代码(文档中的第 6 页)的第 6 行和第 7 行中 NSrates 的前 2 个参数采用这种格式:

data(FedYieldCurve)
tau <- c(3, 6, 12, 60, 84, 120)
mediumTerm <- c(12,60,84)
NSParameters <- Nelson.Siegel(rate=FedYieldCurve[1:10,],
                              maturity=tau, MidTau=mediumTerm )
y <- NSrates(NSParameters[5,1:3],
             NSParameters$lambda[5],tau)
plot(tau,FedYieldCurve[5,],main="Fitting Nelson-Siegel yield curve", type="o")
lines(tau,y, col=2)
legend("topleft",legend=c("observed yield curve","fitted yield curve"),
col=c(1,2),lty=1)
grid()

2)如何从曲线中提取一定的收益率?例如,如果我的期限为 12 个月,它的相关收益率是多少?

非常感谢您花时间回答我的问题。

4

1 回答 1

4

查看 的帮助页面NSrates

它需要 3 个参数:

betaCoeff:beta 系数的向量或矩阵。

lambdat:估计的 lambda 值

到期日:收益率曲线的到期日要返回的利率。

对于betaCeff,您显示的代码使用NSParameters[5, 1:3],或

   beta_0    beta_1   beta_2
5 13.7156 -1.468064 1.237194

这是一个data.frame。虽然data.frame没有明确声明为可能的输入,但函数的第一行将其转换为 a matrix(假设您使用的是 CRAN 版本)

if(is.vector(betaCoeff)) betaCoeff <- matrix( betaCoeff, 1, 3)

对于lambdat,您显示的代码使用NSParameters$lambda[5]的是numeric用于估计 lambda 的值。

最后的论点是maturity。您显示的代码使用tau的是

> tau
[1]   3   6  12  60  84 120

根据文档,该功能将

返回矩阵对象中的利率,其中行数等于 nrow(betaCoeff),列数等于 length(maturity)。

在这种情况下,你得到

> y
           3        6       12      60       84      120
[1,] 12.7394 13.05852 13.40245 13.6897 13.69721 13.70273

如果你只想要 12 个月maturity,那么只传递12maturity参数。

> NSrates(NSParameters[5,1:3], NSParameters$lambda[5], 12)
           12
[1,] 13.40245
于 2012-08-28T03:08:44.700 回答