誘導型モデルを使った信用リスクのある割引債の価格付け−1

Rだと誘導型モデルを使った信用リスクのある場合の価格評価も楽にやれるんじゃないかなと常々思ってはいたものの、手づかずだったので、実際にやってみましたというお話です。ここでは割引債の価格評価を例にしてますが、もちろん割引債に限った話ではありませんが、今回は簡単なんで割引債でやっちゃいますよということです。
無論Rだと計算速度が遅いので、あくまでモデルいじりの段階のプロトタイプという位置付けです。モデルの細かい理論的背景に興味がある場合は参考LINKを適当に参照してみてください。

まず、信用リスクのある割引債の価格評価式はリスク中立確率下で

と書くことができまして、ここで

  •  v(t,T):満期T(時点)の信用リスクのある割引債の時点tでの価格
  •  r(t):時点tでのショートレート
  •  \delta(t):時点tでデフォルトした際の回収率(倒産時にどの程度の金額を回収できるか。(=1 - 損失率))
  •  \tau:デフォルト時点
  •  {\bf 1}:定義関数(中括弧の中が真でならば1そうでないなら0)

とおいてます。

今回はこの信用リスクのある割引債価格を計算してやりたいので、以下のようにモデリングしておきます。

  • デフォルト強度過程のモデリング(CIRモデル)
  • ショートレートのモデリング(CIRモデル)
  • 回収率(均一値, RFV(Recovery of Face Value))

CIRモデルってのは
dr(t) = k(\theta - r(t)) \times dt + \sigma \times \sqrt{r(t)} \times dW_t

という確率微分方程式で書けるプロセスのことで、値がマイナスにならないのが嬉しいぞと、金利マイナスにしたくないぞとそういうことです。また、RFVってのは現在の価格と関係なく債券の額面金額の一定割合(回収率)分だけデフォルト時に戻ってきますよということです。

今回は以下のように各種モデルのパラメーターを設定しました。
〜シミュレーション条件について〜

パス数 500
1年をいくつに区切るか 250
回収率*1 0.7
割引債の満期(年) 2
金利モデルとデフォルト強度過程の相関係数 0.3

金利モデルのパラメータ〜

回帰スピード 0.6
回帰水準 0.05
ボラティリティ 0.05
初期値 0.05

〜デフォルト過程のパラメータ〜

回帰スピード 0.6
回帰水準 0.2
ボラティリティ 0.5
初期値 0.2

これを踏まえた上でRでコーディングしてやると以下のようになります。
コメントを入れてもコードが100行程度で収まっている!楽!R素晴らしい!

このコードを実行してみると、私の手元だと信用リスクのある割引債価格(変数resultの値)が0.830±0.005程度の水準になりました。
ちなみにパス数を増やすと激重になるのでコピペして使用する際は気を付けてください。

プログラムをろくにチェックしてない点を踏まえて、次回は

  • デフォルトがないと仮定した場合、CIRの理論割引債価格と合うか?
  • Duffie-Singletonモデルとどの程度近しい値になるのか?(本当はこっちがやりたかった…)

等をチェックしたいと思います。

参考LINK
信用リスク評価の数理モデル (シリーズ 現代金融工学)
Excel&VBAで学ぶ信用リスクの基礎
Modeling Term Structures of Defaultable Bonds
金融研究 第20巻別冊第1号 要約 信用リスクのある金融商品のコックス過程を用いたプライシング方法

*1:時点によらず一定とした。損失率は1-0.7=0.3