上級編 4. Short Rate Models

4.4   Hull-White モデル

4.4.5   Trinomial Tree : 3項ツリーの構築

4.4.5.5   3項ツリーを使ったパラメータのCalibration
4.4.5.5.1   中心回帰強度パラメータ \(a(t)\) の Calibration について

このセクションでは、Hull-White モデルのパラメータを、3項ツリーを使って Calibration する方法について解説したいと思います。 

パラメータを、解析解によるオプション価格式を使って Calibration する方法については、既に紹介しました (セクション4.4.4 "モデルパラメータの Calibration")。そこでは、中心回帰強度パラメータ \(a\) と、Volatilityパラメータ \(σ_r\) を、いずれも定数と仮定し、同時 Calibration する方法を紹介しました。パラメータの数が少なく、かつそれぞれのパラメータが依存関係にある場合 (片方を動かすと、もう一方の値が影響を受ける場合)、多次元ソルバーを使って、同時にCalibrationするのは、理にかなっています。 

しかし、\(a(t)~ と~ σ_r(t)\) を、Piecewise Constant 関数とした場合、パラメータの数が一挙に増えるので、同時 Calibration は避けるべきでしょう。下手をするとパラメータの値が収束しなくなります。そういった場合は、\(a(t)~ と~ σ_r(t)\) を別々にCalibrationする事になります。 

いくつかの文献では、まず何らかの方法で \(a(t)\) を特定しておき、その後 \(σ_r(t)\) を市場の Volatilityカーブに Calibration するという説明をしています。しかも、\(a(t)\) の特定の仕方や、Calibration の方法は、あまり詳しく説明されていません。 

Hull-White モデルにおける中心回帰強度パラメータ \(a(t)\) の役割は 

  • フォワード金利のVolatilityが、期間が長くなるにつれ、緩やかに逓減していく様子を表現する事、と
  • 異なる時点における、異なるフォワード金利間の相関 ( inter-temporal correlation : 時系列相関と訳しました。自己相関ではありません。)をコントロールする事

になります(セクション4.4.4 参照)。結構、重要なパラメータのように見えますが、ぞんざいに扱われているような気がします。 

実際に、実務でも \(a(t)\) のCalibration はあまり頻繁に行わず(場合によっては適当に決めて)、主に \(σ_r(t)\) だけを使って、市場データへ Calibration するケースが多いと思われます。これは、どういう事でしょうか? 

ところで、\(σ_r(t)\) は、定数であれば Volatility の絶対水準のみをコントロールしますが、Piecewise Constant な関数と仮定すると、Volatility の期間構造も表現できるようになります。\(σ_r(t)\) を t が大きくなるにつれ逓減させていけば、\(a(t)\) の役割と重複する事になります。しかも、\(σ_r (t)\) の方が、はるかに柔軟に Volatility カーブを表現出来ます。であれば、市場の Volatility カーブにフィットさせる役割は、すべて \(σ_r(t)\) に負わせ、\(a(t)\) は時系列相関にだけ Calibration するのが自然でしょう。ところが、\(σ_r(t)\) の方は、それでいいですが、\(a(t)\) を時系列相関に Calibration するのは簡単ではありません。理由は、時系列相関のデータを取り出すのが簡単では無いからです。時系列相関は、通常 LIBOR Market Model を使って、バーミューダン・スワップションの価格から、抽出します。そもそも LIBOR Market Model が使えるのであれば、金利オプションの価格評価は、そちらを使えばいいでしょう。またバーミューダン・スワップションの市場価格も、信頼のおけるデータソースが常にある訳ではありません。(Markit-Totem が主要な証券会社から価格情報を集め、そのコンセンサスとして公表していますが、有料で、一般の人はその情報にアクセスできません) 

相関係数を、過去の市場データから導出する方法もありますが、相関係数は、データ取得時期によって大きく変動するので、どれにパラメータを合わせるのか難しい問題になります。結局、時系列相関への Calibration もあきらめて、 

  • \(a(t)\) の Calibration は、極めて消極的に、市場の Volatility カーブにフィットさせる。消極的にとは、一旦、セクション 4.4.4 で紹介したような \(σ_r\) と同時に Calibration した後は、パラメータは固定しておき、Volatility の期間構造へのフィットは \(σ_r(t)\) にまかせる。
  • また、\(a\) の役割を消極的にするのであれば、Piecewise Constant な関数とせず、全期間一定の定数とする。

といった取扱いがなされる事が多いのではないかと思います。 

乱暴な言い方をすれば、\(a\) は適当に決めて、決めた後は固定しておくという事です。 「一旦決まれば、固定しておく」理由は、このパラメータが動かれると、リスク管理が難しくなるからです。 

という事で、ここでは \(σ_r(t)\) だけを Calibration する方法を解説したいと思います。 

4.4.5.5.2  Calibration対象となる市場データの選択

3項ツリーは、主にバーミューダン・スワップションの価格とリスク量計算に使われます。その使用目的であれば、Calibration の対象となるベンチマーク商品は、複数のヨーロピアン・スワップションを選択するのが適当でしょう。ただ、ヨーロピアン・スワップションの価格(あるいは Black Volatility)の情報は、 

① オプションの行使期間
  ② 対象スワップの期間
  ③ オプションのストライクレート  

の3次元の情報として存在しており、これらすべての市場価格に Calibration する訳には行きません。もともと 1ファクターの Hull-White モデルの表現力は限られており、特に Volatility Skew や Smile の形状は表現できません。従って、③ のオプションのストライク軸への Calibration はあまり意味がありません。 

オプション行使期間と対象スワップの期間についても、2次元の情報すべてにCalibrationする必要は無いでしょう。バーミューダン・スワップションの商品特性からすれば、対象スワップの満期日はすべて同じで、行使日のみが異なるスワップションを選択するのが理にかなっているでしょう。ストライクは、時価評価しようとするバーミューダン・スワップションのストライクレートに合わせて、それに一番近い市場データを選択すればいいでしょう。

そのようにして選択された、ヨーロピアン・スワップションのオプション行使日と満期日を下記のように表記します。 

対象スワップの満期日: \(T_M^{Ex}\)
  オプション行使日(=対象スワップのスタート日): \(T_1^{Ex},~T_2^{Ex},…,T_K^{Ex}\)  

4.4.5.5.3   パラメータの再定義

中心回帰強度パラメータ \(a(t)\) については、既に述べた通り、時系列相関に Calibration しないのであれば、全期間一定の定数 \(a\) としていいでしょう。さらに、その Calibration は、セクション4.4.4 で解説した、解析解によるオプション価格式と、適当なベンチマーク商品を使って、\(σ\) と同時に Calibration し、事前に求めておけばいいでしょう。そして、一旦その値が決まれば、市場環境がよほど大きく変わらない限り、同じ値を使い続けていいと思います。おそらく、実務で Hull-White モデルを使う場合は、大半がそうしているのではないでしょうか(調べた訳ではありませんが)。 

また、Piecewise Constant な関数と仮定した \(σ_r(t)\) について、その階段関数のステップ数を制限する必要があります。パラメータを Calibration する際、パラメータの数は必ず Calibration 対象のベンチマーク商品の数以下にしなければなりません。でなければ、値が収束しません。前のセクションで、\(σ_r (t)\) の関数形を、下記のように表記しました。 

\[ σ_r (t)=\sum_{i=0}^{n-1} σ_{r,i}・I_{\{t_i< t< t_{i+1}\}} \tag{4.39} \]

この式の n を、Calibration対象の商品の数以下にします。当然ながら、3項ツリーの時間軸のノード数 N よりは、相当小さくなります。右辺にある指示関数 I{} の条件を、オプション行使日間に変えると、 

\[ σ_r (t)=\sum_{i=1}^K σ_{r,i}・I_{\{0< t< T_i^{Ex}\}} \]

となります。さらに、オプションの最終行使日 \(T_K^{Ex}\) 以降の \(σ_{r,i}(t_i),~T_K^{Ex}< t_i\) は、\(σ_{r,K}\) をそのまま Extrapolation します。これでパラメータの数は、ベンチマーク商品の数と一致します。 

あるいは、もっと減らしてもいいかも知れません。例えばベンチマークとなるスワップションの価格は、行使日が 1 年おきに取れるとして、\(σ\) の間隔は、1年、1~3年、3~5年、5~10年、10年超というように設定してもいいかもしれません。当然ながら、市場価格へのフィット感は落ちますが、市場価格でしばしば発生する、アノマリー(異常値)の影響を軽減できます。Short Rate Model を時価評価ではなく、リスク管理目的で使うのであれば、これで十分でしょう。この辺りは、アカデミクスの論文では殆ど触れられる事がないですが、実務におけるモデルの使用感からくる発想です。 

4.4.5.5.4  Calibrationのアルゴリズム

以上の事前準備の下、具体亭な Calibration のプロセスは以下のようになります。 

  1. まず3項ツリーの時間軸に、ベンチマークとなるヨーロピアン・スワップションの行使日と、対象スワップのキャッシュフロー日、最終満期日をすべて加えます。ベンチマーク商品の価格を3項ツリーで評価する為です。
  2. 次に、\(σ_{r,i},~~i=1,2,…,K\) の初期値を適当な値で設定します。収束速度を上げるためには、予想されるターゲット値に出来るだけ近い値を Seed 値として渡せばいいでしょう。Calibrationを頻繁に行うのであれば、前回の収束値を使うのがいいでしょう。但し、初回の Calibration の時だけは適当な数字を置く事になります。
  3. \(σ_{r,i}\) の初期値が決まれば、それを使って3項ツリーを再構築します。前のセクションで説明した通り、\(σ_{r,i}\) は、状態変数 \(x(t)\) のグリッド間隔 \(Δx\) に影響します。また、ノード間の分散値にも影響するので、遷移確率も影響を受け、その結果対象スワップの行使価値に影響を与えます。すると、\(σ_{r,i}~は~i\) に拘わらず、すべてのベンチマーク商品の価格に影響を与えます。すると、多変数ソルバーを使って、同時に Calibrationし なければならないように見えます。 i の数が少なく、市場データにアノマリー(一時的な異常値)が無ければ、それでいいでしょう。しかし、i の数が増えて、市場データの質が低いと、値が収束しないリスクがあります。ところで、\(σ_{r,i}\) は、オプション行使日が \(T_i^{Ex}\) 以降のスワップションの価格には大きな影響を与えますが、行使日が \(T_i^{Ex}\) より前のスワップションの価格に与える影響は軽微です。であれば、Bootstrapping アルゴリズムのように、時間軸が最も手前の範囲をカバーする \(σ_{r,1}\) から順番に1次元ソルバーを使って Calibration する方法を使った方が、確実に Calibration が収束し、結果的に計算時間が速くなる可能性が高いと思われます。
  4. という事で、まず \(σ_{r,1}~を~T_1^{Ex}\) が行使日のスワップション価格に Calibration します。\(σ_{r,1}\) が求まれば、次はその値を固定し、\(σ_{r,2}~を~T_2^{Ex}\) が行使日のスワップション価格に Calibration します。そこから順番に、\(σ_{r,3}~,…,σ_{r,K}\) を Calibration します。パラメータを1個ずつ Calibration するので、すべて1次元ソルバーを使えば簡単に求まります。

パラメータの数と Calibration 対象のスワップションデータの数が同じであれば、以上のプロセスだけで、モデル価格と市場価格が Exact Fit (完全に同じに)出来るはずです。 

 

3項ツリーを使った Calibrattion の方法については、概ね以上です。モデルが複雑になり、モデルの表現力が上がれば、Calibration 対象のベンチマーク商品の選択も変わってくるし、Calibration のアルゴリズムも、遥かに複雑になります。しかし、シングルファクターのHull-Whiteモデルの使用範囲を考えれば、上記の程度のCalibrationで十分だと思います。  

 

目次

Page Top に戻る

// // //