今週も特にありません

進捗どうですか?

Rから米国債イールドデータ収集

ジェネリック国債のデータを確認しようとしたら、ustycなるRのパッケージを見つけたので、簡単な使い方をメモ

ustycは、米国財務省が提供しているDaily Treasury Yield Curve Ratesのデータをまとめて取ってくるという関数が入ったパッケージ。ustycはもちろん、US Treasury Yield Curveの略

Bloombergのサイトから、GJGB3M, GJGB6M, …, GJGB10, …, GJGB30と各満期の日本のジェネリック国債データを確認したかったが、サイトからでは確認できなくなった?)

使い方はパッケージを読み込んで、関数を実行して多少待つだけ

library(ustyc)

yc <- getYieldCurve()

特定の年、月だけ取りたい場合は、getYieldCurve(year = "2014", month = "12")のようにして指定する

yc$df以外は必要ないので、これだけCSVファイルなどに書き出しておく

write.csv(yc$df, file = "TreasuryYield.csv")

利用する時に、xtsに変換してやる

library(xts)

yc <- read.csv("TreasuryYield.csv")
yc.xts <- xts(yc[-1], order.by = as.Date(yc[, 1]))

BC_30YEARDISPLAYが何を指すのかがよくわからなかったが…

> tail(yc.xts)
           BC_1MONTH BC_3MONTH BC_6MONTH BC_1YEAR BC_2YEAR BC_3YEAR BC_5YEAR
2014-12-24      0.01      0.01      0.14     0.26     0.73     1.18     1.76
2014-12-26      0.01      0.01      0.10     0.26     0.73     1.19     1.75
2014-12-29      0.01      0.03      0.12     0.25     0.72     1.14     1.72
2014-12-30      0.03      0.03      0.12     0.23     0.69     1.11     1.68
2014-12-31      0.03      0.04      0.12     0.25     0.67     1.10     1.65
2015-01-02      0.02      0.02      0.11     0.25     0.66     1.07     1.61
           BC_7YEAR BC_10YEAR BC_20YEAR BC_30YEAR BC_30YEARDISPLAY
2014-12-24     2.09      2.27      2.56      2.83             2.83
2014-12-26     2.07      2.25      2.54      2.81             2.81
2014-12-29     2.02      2.22      2.51      2.78             2.78
2014-12-30     2.00      2.20      2.49      2.76             2.76
2014-12-31     1.97      2.17      2.47      2.75             2.75
2015-01-02     1.92      2.12      2.41      2.69             2.69

> plot(yc.xts[, 9], main = "BC_10YEAR", ylab = "yield (%)")

f:id:masaqol:20150104235004p:plain

YieldCurveパッケージを使ったNelson-Siegelモデル、Svenssonモデルへの当てはめ

library(YieldCurve)

maturity <- c(1/12, 1/4, 1/2, 1, 2, 3, 5, 7, 10, 20, 30)
obs.rate <- yc.xts["2015-01-02", -12]
NS.par <- Nelson.Siegel(obs.rate, maturity)
NS.rate <- NSrates(NS.par, maturity)
SV.par <- Svensson(obs.rate, maturity)
SV.rate <-  Srates(SV.par, maturity, "Spot")

plot(maturity, obs.rate, main = "Fitting yield curve (2015-01-02)", type = "o", ylab = "yield (%)")
lines(maturity, NS.rate, col = 2)
lines(maturity, SV.rate, col = 4)
legend("bottomright", legend = c("observed yield curve", "Nelson-Siegel model", "Svensson model"), col = c(1, 2, 4), lty = 1)
grid()

f:id:masaqol:20150105000500p:plain