概要
・米国金利(今回はスワップレートを使用)の推移
・主成分分析結果 よく言われるように3つの主成分で大体の変動は説明される
・どの主成分がいつ効いているか(ファクター)の推移
米国金利(スワップレート)の推移
なんで米債の金利じゃないんですかと聞かれたらFRED先生がなぜかスワップレートしか提供してくれていないからです。
米債の金利に関してはFEDか財務省あたりが公表しているとかしていないかという話も聞きますがデータの取得がめんど(― ―)
まあ金利スワップも米債利回りも同じようなもんだからということで、データは以下からいつものように取得。
Interest Rate Swaps – FRED – St. Louis Fed
http://research.stlouisfed.org/fred2/categories/32299
xts型としてswpという変数に格納したとします。
まずはplotで動きを概観
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
library(RColorBrewer) swp.col = brewer.pal(8, "Paired") plot(swp[,1], main="US swap rate", minor.ticks=F, col=swp.col[1]) lines(swp[,2], col=swp.col[2]) lines(swp[,3], col=swp.col[3]) lines(swp[,4], col=swp.col[4]) lines(swp[,5], col=swp.col[5]) lines(swp[,6], col=swp.col[6]) lines(swp[,7], col=swp.col[7]) lines(swp[,8], col=swp.col[8]) legend("topright", legend=c("1yr", "2yr", "3yr", "4yr", "5yr", "7yr", "10yr", "30yr"), col=swp.col, lty=rep(1,8), lwd=rep(2,8), bty="n") |
plotのデフォルトの色だと黄色とかが見づらかったので初めてRColorBrewerというカラーパレット作成パッケージ(?)を導入。
2000年7月とかは7%台でほぼフラットなイールドカーブ。
そこからITバブル崩壊とともに徐々に右肩上がりなイールドカーブに、その後連続利上げで短中期を中心に上昇し2006~2007年ではまた5%台あたりでフラットに。
その後リーマン・ショックと続く事実上のゼロ金利政策、QEなどでカーブは水準を切り下げぺっちゃんこ相場に。
2013年5月のバーナンキ前議長のtaper発言でまた金利が上昇するもそこまで上がらず今に至るという感じですな。
日本と異なり非常にダイナミズムあふれるイールドカーブで何よりです。
各スワップレートの水準(変動ではない)に対する標準偏差を見ると
1 2 |
swp.sd <- apply(swp, 2, sd) barplot(swp.sd, main="Standard deviation of US swap rates", ylim=c(0,2), ylab="Swap rate", xlab="Maturity") |
スワップレートの水準推移を見たとおり、順イールドからフラットまで短期はどったんばったんしますんで、それを反映する形で短期になればなるほど標準偏差は大きくなる傾向に。
主成分分析とファクターローディング
本当はスワップレートの変動に対して主成分分析を行うほうがベターなんでしょうが、後にみるようにファクターの推移も見たいと思いまして、その関係上、水準に対して主成分分析をします。
また、先ほど水準の標準偏差を見ると短期のスワップレートになるほど標準偏差が大きくなる傾向にありました。
こういったデータに対して主成分分析を行う場合、相関係数行列に対して主成分分析を行ったほうがベターだと思うのですが、それは正規化(平均0、分散1)のスワップレートに対して主成分分析を行っているということでして、それもそれでファクターの推移として見た時にイマイチ解釈しづらいというか結局見たいのってスワップレートの水準ですしお寿司ということで泣く泣く水準の分散共分散行列に対して主成分分析をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pca <- princomp((coredata(swp)), cor=F) summary(pca) plot(pca$loadings[,1], type="o", ylim=c(-1,1), main="Factor loadings(Jul-2000 ~)", xlab="Maturity", ylab="Factor loadings", xaxt="n") abline(h=0, col="gray", lty=2) axis(side=1, at=1:8, label=c("r1", "r2", "r3", "r4", "r5", "r7", "r10", "r30")) lines(pca$loadings[,2], type="o", col=2) lines(pca$loadings[,3], type="o", col=3) legend("bottomright", legend=c("#1", "#2", "#3"), col=c(1, 2, 3), lty=c(1, 1, 1), lwd=c(1, 1, 1), bty="n") |
princompのcor=Tとすると、相関係数行列に対して主成分分析を行いますが、今回はFにして分散共分散行列を使います。
summaryを見ると以下
1 2 3 4 5 6 7 8 9 10 |
> summary(pca) Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Standard deviation 4.4909735 0.93743546 0.215108977 0.0942738223 2.834756e-02 1.146032e-02 Proportion of Variance 0.9556984 0.04164114 0.002192588 0.0004211357 3.807775e-05 6.223483e-06 Cumulative Proportion 0.9556984 0.99733951 0.999532096 0.9999532313 9.999913e-01 9.999975e-01 Comp.7 Comp.8 Standard deviation 5.720136e-03 4.399225e-03 Proportion of Variance 1.550431e-06 9.170482e-07 Cumulative Proportion 9.999991e-01 1.000000e+00 |
ということで累積寄与率(Cumulative proportion)を見ると、3つの主成分までで変動の99.95%が説明されるという結果になります。
もちろん8つ全ての主成分を使えば100%の変動を記述することもできます。
ファクターローディング(固有ベクトル)は以下。
ということで、黒線=レベル、赤線=スロープ、緑線=カーベチャーの3成分が出てきましたとさ。
ファクター推移
ということで以上3つのファクターローディング(軸に相当)で、スワップレートというのは表現できるということがわかりました。
で、じゃあこの3つのファクターが過去どのように推移してきたのかよというのを見たのが以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
coef <- c() for (i in 1:nrow(swp)){ lm <- lm(drop((swp)[i,]) ~ pca$loadings[,1] + pca$loadings[,2] + pca$loadings[,3] + 0) coef <- rbind(coef, lm$coef) } coef.xts <- as.xts(coef, index(swp)) # plot factors plot(coef.xts[,1]*-1, minor.ticks=F, ylim=c(0,20), main="Factor") lines(coef.xts[,2], col=2) lines(coef.xts[,3], col=3) legend("topright", legend=c("#1", "#2", "#3"), col=c(1, 2, 3), lty=c(1, 1, 1), lwd=c(1, 1, 1), bty="n") |
coefには日次での、ファクターローディングに対するスワップレート水準のOLSの回帰係数をぶち込んでいます。
その後見やすさも兼ねてxts型に変換。プロットすると以下
黒線はレベルファクターということで、一番最初に見ましたスワップレートの推移と同じような動きをしています。
(第一主成分はマイナス方向に出ていましたので、plotするときに-1をかけて直感に合うようにしています)
一方赤線がスロープファクターということで、イールドカーブが右肩上がりだったITバブル崩壊後には比較的高い値を出している一方、利上げを繰り返しイールドカーブがフラットになった2005-2006年あたりはファクターの値が小さくなっています。
最後に緑線がカーべチャーファクターで、えーこれはなんとも解釈しづらい。
ファクター推移おまけ
2010年から2012年の3ファクターの推移を拡大したのが上図。
一方、QE2が2010年11月~2011年6月で、オペレーションツイストが2011年10月~2012年6月。
ということで、政策発表前および発動中の期間に関して、特にレベルとスロープに対して押し下げるように働いたと見ることもできそうですね。
おまけ2
なんでいきなり主成分分析なんかやり出したかと言いますと、このファクターの推移ってのをDLMにぶちこめないかなあと妄想するわけでして、主成分同士って直交するから独立で良いし。
ボラティリティ(VIXなど)の期間構造を主成分分析した場合も同じようなファクターローディングが現れるようですし色々やってみたら面白いんじゃないかと思います。
ま、結局予測力という観点からだと移動平均と大して変わらないっていう結果が出てきそうな気もしますけどね!!
参考文献
Amazon.co.jp: 主成分分析―講座 情報をよむ統計学〈8〉 (講座情報をよむ統計学 8): 上田 尚一: 本
http://www.amazon.co.jp/dp/4254127782
1961年から2011年、オペレーション・ツイストの差はなにか
http://www.mizuho-ri.co.jp/publication/research/pdf/market-insight/MI110922.pdf
Amazon.co.jp: Rによるベイジアン動的線形モデル (統計ライブラリー): G.ペトリス, S.ペトローネ, P.カンパニョーリ, 和合 肇, 萩原 淳一郎: 本
http://www.amazon.co.jp/dp/4254127960