今週も特にありません

進捗どうですか?

ggplot2で日本国債の時系列金利水没マップ

WBSのコメンテーターでおなじみのみずほ総研の高田さんが「世界の金利「水没」マップ、金融機関はどう生き残るのか」というレポートを1月27日に出されていた

ここ数日は日本国債短期金利がマイナスという状態を脱して来ているが、時系列での金利水没具合に興味があったのでggplot2で可視化してみた

パッケージをひと通り読み込んでおく

library(dplyr)
library(tidyr)
library(ggplot2)
library(ggthemes)

金利データは財務省金利情報から取得する。日本語版は和暦なので、英語版ページ(Interest Rate : Ministry of Finance)から持ってきた方が良い。データは現在の月のデータと2010年からのデータの二つを使う

jgbcme <- read.csv("http://www.mof.go.jp/english/jgbs/reference/interest_rate/jgbcme.csv")
jgbcme_2010 <- read.csv("http://www.mof.go.jp/english/jgbs/reference/interest_rate/historical/jgbcme_2010.csv")
JGB_rate <- rbind(jgbcme_2010, jgbcme)
JGB_rate$Date <- as.Date(JGB_rate$Date)

データは2010年の1月4日から2015年の2月5日まで

> head(JGB_rate)
        Date    X1    X2    X3    X4    X5    X6    X7    X8    X9   X10   X15   X20   X25   X30   X40
1 2010-01-04 0.131 0.147 0.238 0.383 0.495 0.662 0.828 1.009 1.184 1.322 1.810 2.110 2.236 2.266 2.311
2 2010-01-05 0.136 0.148 0.234 0.376 0.491 0.660 0.834 1.015 1.188 1.329 1.819 2.119 2.244 2.275 2.319
3 2010-01-06 0.135 0.154 0.237 0.378 0.502 0.675 0.851 1.029 1.198 1.337 1.828 2.128 2.252 2.280 2.327
4 2010-01-07 0.137 0.154 0.243 0.388 0.506 0.689 0.872 1.045 1.208 1.345 1.847 2.144 2.269 2.294 2.340
5 2010-01-08 0.136 0.164 0.253 0.398 0.521 0.707 0.892 1.064 1.222 1.359 1.855 2.147 2.270 2.297 2.346
6 2010-01-12 0.131 0.164 0.254 0.396 0.519 0.697 0.884 1.057 1.220 1.355 1.854 2.144 2.266 2.293 2.346
> tail(JGB_rate)
           Date    X1    X2    X3    X4    X5    X6    X7    X8    X9   X10   X15   X20   X25   X30   X40
1245 2015-01-29 0.005 0.005 0.021 0.035 0.051 0.057 0.099 0.171 0.236 0.293 0.666 1.064 1.230 1.313 1.428
1246 2015-01-30 0.009 0.010 0.023 0.032 0.046 0.045 0.081 0.156 0.225 0.288 0.656 1.054 1.216 1.299 1.415
1247 2015-02-02 0.010 0.010 0.029 0.045 0.056 0.055 0.093 0.166 0.226 0.293 0.646 1.045 1.206 1.295 1.406
1248 2015-02-03 0.020 0.020 0.044 0.071 0.096 0.104 0.158 0.232 0.297 0.363 0.709 1.102 1.266 1.362 1.473
1249 2015-02-04 0.019 0.030 0.050 0.081 0.100 0.109 0.163 0.245 0.314 0.382 0.761 1.167 1.338 1.437 1.541
1250 2015-02-05 0.019 0.043 0.065 0.091 0.105 0.106 0.158 0.238 0.299 0.362 0.732 1.129 1.275 1.372 1.483

gatherしてから、geom_tileでプロット

JGB_rate_gather <- JGB_rate %>% gather(maturity, yield, -Date)

ggplot(JGB_rate_gather, aes(x = Date, y = maturity, fill = yield)) + geom_tile() + theme_tufte() +
scale_fill_gradientn(colours=c("black", "blue", "white"), limits = c(-0.05, 1), na.value = "white")

f:id:masaqol:20150208003324p:plain

ggplot2が賢いためか、勝手に営業日(Business Day)以外の部分もプロットしてしまうようだ。そこで、 営業日スケールに直せるbdscaleパッケージを使う

library(bdscale)
library(scales)

ggplot(JGB_rate_gather, aes(x = Date, y = maturity, fill = yield)) + geom_tile() + theme_tufte() +
scale_fill_gradientn(colours=c("black", "blue", "white"), limits = c(-0.05, 1), na.value = "white") +
scale_x_bd(business.dates = JGB_rate$Date, max.major.breaks = 10, labels = date_format("%Y"))

f:id:masaqol:20150208005205p:plain

2014年末からは青黒い部分が広がっていて、過去に比べ金利低下傾向が一段と強いことがわかる。このグラフではどの満期までが水没しかかっているかは確認しやすいが、実際の金利がどのように推移しているのかはわかりにくい

そこで、時系列プロットにgeom_ribbbonで単純に水没域を重ねてみる

ggplot(JGB_rate_gather, aes(x = Date, y = yield, group = maturity)) + 
geom_line(aes(colour = maturity)) + theme_tufte() +
geom_ribbon(fill = "black", alpha = 0.05, ymin = -1, ymax = 0) +
geom_ribbon(fill = "blue", alpha = 0.05, ymin = 0, ymax = 0.5) + 
geom_ribbon(fill = "lightblue", alpha = 0.05, ymin = 0.5, ymax = 1)

f:id:masaqol:20150208003352p:plain

10年満期までの金利が完全に水没、水没しかかっているのがこちらでもはっきりわかる。このような状態で金融機関はちゃんと息できているんでしょうか?