Vasicekモデルの債券オプション
RでVasicekモデルの債券価格とイールドで、金利モデル関連のRパッケージがない…と書いたが、SMFI5というパッケージで一応、VasicekモデルやCIRモデルの債券価格を求めたりできるようだ
「Statistical Methods for Financial Engineering」の5章に関してまとめパッケージとなっている。本を読んでいないので、なぜ5章だけなのかは分からない
このパッケージでも債券オプションについては入っていないので、前回に続き、Vasicekモデルにおける債券オプション価格について
# zero coupon bond option price under Vasicek model # # Args: # kappa : speed of reversion # mu : long term mean level # sigma : instaneous volatility # r0 : current short rate # t : current time # T : bond maturity # S : option maturity # K : strike price # L : face value # # Return: # data.frame of moneyness, call and put option prices # VasicekZCBOption <- function(kappa, mu, sigma, r0, t, T, S, K, L) { sp <- sigma / kappa * (1 - exp(-kappa * (S - T))) * sqrt((1 - exp(-2 * kappa * (T - t))) / (2 * kappa)) PT <- VasicekZCBond(kappa, mu, sigma, r0, t, T)$price PS <- VasicekZCBond(kappa, mu, sigma, r0, t, S)$price d1 <- log(L * PS / (K * PT)) / sp + sp / 2 d2 <- d1 - sp M <- K * PT / (L * PS) CP <- L * PS * pnorm(d1) - K * PT * pnorm(d2) PP <- K * PT * pnorm(-d2) - L * PS * pnorm(-d1) data.frame(moneyness = M, callprice = CP, putprice = PP) }
関数の中でVasicekモデルの債券価格関数を使っているので、読み込んでおく。前回と同様のモデルのパラメータをセット
kappa <- 0.2 mu <- 0.015 sigma <- 0.003 r0 <- -0.001 t <- 0 T <- 1/12 S <- 3 K <- 0.98 L <- 1 df <- VasicekZCBOption(kappa, mu, sigma, r0, t, T, S, K, L)
オプション価格は次のようになる
> df moneyness callprice putprice 1 0.9888111 0.01108998 4.579769e-13
プットコールパリティが成立することを確認
> L * VasicekZCBond(kappa, mu, sigma, r0, t, S)$price + df$putprice [1] 0.9911608 > K * VasicekZCBond(kappa, mu, sigma, r0, t, T)$price + df$callprice [1] 0.9911608
マネネスが1となるあたりでオプション価格変化をプロット
library(dplyr) library(tidyr) library(ggplot2) library(ggthemes) K <- seq(0.975, 1.0075, by = 0.001) df <- VasicekZCBOption(kappa, mu, sigma, r0, t, T, S, K, L) df %>% gather(type, price, -moneyness) %>% ggplot(aes(x = moneyness, y = price, colour = type)) + geom_line(size = 1.2) + theme_economist() + ggtitle("option price") + scale_x_continuous(breaks = seq(0.98, 1.02, by = 0.01))
エコノミスト誌風な色が付けられるscale_colour_economistもあったが2本のみだと良い感じではなかったので使用しなかった
ゼロクーポン債に対するヨーロピアンオプションで、1ファクターVasicekモデルでの評価なんて実際には使われていないだろうけれども、これを基本にしてスワップションなどのより複雑なデリバティブを考えていくにはよい勉強になる