Yield Curve包装R.

时间:2012-08-27 22:14:18

标签: r

我想使用Nelson-Siegel模型插值收益率曲线。我是R语言的新手但决定使用“收益率曲线”包(此处http://cran.r-project.org/web/packages/YieldCurve/index.html和文档链接:http://cran.r-project.org/web/packages/YieldCurve/YieldCurve.pdf)我遇到了2个问题:

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

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个月,那么它的相关收益率是多少?。

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

1 个答案:

答案 0 :(得分:4)

查看NSrates的帮助页面。

需要3个参数:

  

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

     

lambdat:估计的lambda的值

     

到期日:收益率曲线的成熟度,希望返回利率。

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

   beta_0    beta_1   beta_2
5 13.7156 -1.468064 1.237194

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

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

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

最后一个论点是maturity。您展示的代码使用的是tau

> tau
[1]   3   6  12  60  84 120

根据文档,该函数将

  

返回矩阵对象的利率,行数等于nrow(betaCoeff),列数等于length(成熟度)。

在这种情况下,你得到

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

如果您只想要12个月maturity,则只将12传递给maturity参数。

> NSrates(NSParameters[5,1:3], NSParameters$lambda[5], 12)
           12
[1,] 13.40245