我正在使用“收益率曲线”软件包按照Nelson-Siegel(NS)方法估算期限结构。
我的方法是首先估计NS模型参数,然后使用这些估计的参数得出所需的一组到期利率。
如收益曲线文档中所述,NS参数的估计需要两个输入-利率,以及与这些利率相对应的到期向量。重要的是,期限以月表示。
下一步,估算NS利率需要两个输入-NS参数和要求利率的到期向量。与上一步不同,与该步骤相对应的文档没有说明如何表示成熟度(天/月/年?)。我有兴趣估算1,2,3,4,5天等短期债券的利率。
我希望这里的人可以帮助阐述这一点。
以下是我的代码的摘录:
到期向量,对应于xts对象利率中包含的数据。我将其除以30,以得到以月为单位表示到期日的结果。
SELECT CASE
WHEN age(lastoccurrence AT TIME ZONE 'UTC') > '1 week'
THEN '> 1 week'
WHEN age(lastoccurrence AT TIME ZONE 'UTC') > '2 days'
THEN '1 week'
WHEN age(lastoccurrence AT TIME ZONE 'UTC') > '1 day'
THEN '2 days'
WHEN age(lastoccurrence AT TIME ZONE 'UTC') > '12 hours'
THEN '1 day'
WHEN age(lastoccurrence AT TIME ZONE 'UTC') > '6 hours'
THEN '12 hours'
ELSE '6 hours'
END
FROM tmp.tablea;
我要获取利率的到期向量。
maturity <- c(1/30,7/30,14/30,1)
估计Nelson-Siegel模型参数
term <- (1/30,2/30,3/30,4/40,5/30,6/30,7/30,8/30,9/30,10/30,11/30,12/30)
使用NS模型参数来估算所需期限的利率。
NSParameters <- Nelson.Siegel(rate = rate, maturity = maturity)
我的输出结果似乎没有多大意义,这使我想知道我是否以要求的格式表示到期日。
PS。我已经浏览了在此论坛上提交的与“收益率曲线”数据包有关的所有查询,但是到目前为止,我还找不到答案。
答案 0 :(得分:0)
Nelson.Siegel参数必须为xts
格式。
由于您没有提供速率向量,因此我自己创建了一个。
library(YieldCurve)
maturity <- c(1/30, 7/30, 14/30, 1)
rate <- c(-0.004217, -0.004248, -0.003909, -0.003819)
nsp <- xts(Nelson.Siegel(rate, maturity), order.by = as.Date("2019-10-12"))
term <- 1:12/30
as.numeric(NSrates(nsp, term))
[1] -0.004288541 -0.004287670 -0.004286799 -0.004285930 -0.004285062 -0.004284195
[7] -0.004283329 -0.004282463 -0.004281599 -0.004280736 -0.004279874 -0.004279013