上級編 6. Libor Market Model
6.6 モンテカルロシミュレーション
6.6.5 離散化によるバイアス(続き)
6.6.5.6 離散時間内に発生するイベントによる離散化バイアス
6.6.5.6.1 はじめに
離散化バイアスは、離散時間の間で、何等かのイベントが発生しているにもかかわらず、それを無視する事からも発生します。例えば、バリアオプションでは、t と t+h の間で、バリアをヒットする確率は 0 ではありませんが、イベントの観測を離散時間の時点のみで行うと、それが無視されてしまいます。このような場合、状態変数となる乱数をもう一個用意し、それをバリアヒットの確率に従って生成すれば、それを使って、離散時間の間にバリアヒットしたかどうかシミュレーションできます。あるいは、ルックバックオプションのように、確率変数のとった最大値や最小値を振り返って観測する場合、離散化したサンプル値のみ見てしまうと、離散時間の間に到達した最大値あるいは最小値が無視されてしまいます。従って、正しく Payoff を評価するには、離散時間の中間の最大値や最小値も考慮する必要があります。この場合もやはり、もう一個、状態変数となる乱数を生成し、それを使ってシミュレーションで最大値や最小値を生成すれば、離散化バイアスを消す事ができます。
その為には、離散時間の間でのバリアヒットの確率や、離散時間の間での最大値や最小値の分布が分っている必要があります。ブラウン運動であれば、そういった値が解析的に求まっており、それを使って新たな乱数を生成する事で、離散時間の間に発生したイベントを期待値演算の中に取り込むことができます。以下に、その方法について簡単に解説します。
6.6.5.6.2 離散時間の間のバリアヒットのシミュレーション
バリアオプションにおけるバリアの水準を B とします。例えば、up and out のバリアオプションでは、対象資産価格 \(x(t)\) が B を越えた場合、そこで取引が終了し、オプション価値が 0 になります。現時点を \(t=0,~~t~ 時の~ x~ の価格を~ x(t)\) とし、オプションの最終行使日を T とします。\(x(t)\) が初めてバリアをヒットする時間を τ とすると、τ は以下のように定義できます。
\[ τ=inf \{τ ≥ 0 ~|~ x(t) > B \} \]この τ が T 以前になるとオプションが価値を失い、T 以降になれば Payoff 関数を評価する事になります。τ を使って、ストライクが K で、up and outのバリアPutオプションの Payoff を表現すると以下のようになります。
\[ Payoff(T)=(K-x(T))^+ I_{\{τ > T\} } \]\(I_{\{τ > T\} }\) は指示関数で、バリアヒットの時間 τ が、T 以前の場合は 0 となりオプションが消滅した事を意味し、T 以降の場合は 1 となり、Payoff関数が評価されます。
問題は、シミュレーションされたサンプル経路 \(x(0),x(h),x(2h),…,x(nh),~~nh=T\) において、経路の途中でバリアがヒットしたかどうかを、どうやって知るかです。
幸いな事に、確率変数がブラウン運動で起動されている場合、確率変数が特定の値を超える確率が、解析的に求まっています。すなわち、\(x(ih)~と~ x(ih+h)\) の間で、x は様々な値を取りますが、その中の最大値を \(M_i\) とします。するとバリアをヒットする確率は下記式で求まります。(残念ながら、私にこの式の導出プロセスの説明能力は無いので、省略させて頂きます)
\[ P_{hit}=P\{M_i≥B~|~ x(ih),x(ih+h)\}=exp \left[-2 \frac{(B-x(ih))(B-x(ih+h))}{b(x(ih))^2 h}\right] \tag{6.124} \]但し \(b(x(ih))~~ は~~x \) の SDE の拡散項係数の \(t=ih\) 時の値です。 xは ih 間で変化しているので、実際には上記式は近似式になります。
バリアヒットの確率が求まれば、バリアがヒットしたかどうかを、一様乱数を使ってシミュレーションできます。バリアヒットを指示関数 \(I_{\{ M_i ≥ B \}}\) で表記すると、一様乱数 U を生成し、バリアヒットのイベントを下記のようにシミュレーションします。
\[ 1-I_{\{τ>T\}} =I_{\{ M_ i ≥ B \}} =I_{\{U ≥P_{hit}\}} \]これを使って、仮にバリアヒットした場合は、サンプル経路の生成をその時点で終了させ、\(Payoff=0\) とし、ヒットしていなければ、そのままシミュレーションを継続します。T 時までヒットしなければ、その時点でPayoff 関数を評価します。ヒットした場合も含めて、すべてのサンプル平均を求めれば、それが up and out のオプションの価格になります。
その他のタイプのバリアオプションやデジタルオプションなども同様の方法でバリアヒット確率を導出すれば、MCS を使った価格評価が可能です。
6.6.5.6.3 離散時間の間の最大値・最小値のシミュレーション(ルックバックオプション)
ルックバックオプションは、オプション行使時に過去の価格経路振り返り、その最も高い価格あるいは低い価格を使ってオプション Payoff を計算するオプションになります。様々なタイプがありますが、例えば、ルックバックタイプのプットオプションで、行使価格を、過去の価格の最大値を使えるようなオプション契約です。過去の価格を振り返る場合、離散時間で価格経路をシミュレーションした場合、離散時点の中間で発生した最大値あるいは最小値が無視されると、オプション価格に下方バイアスがかかります。このような場合、離散時点の中間で発生する最大値あるいは最小値を別の確率変数(乱数)を使ってシミュレーションする事で、対応可能です。
まず、x のサンプル経路 \(x(0),x(h),x(2h),…,x(nh),~~nh=T\) がシミュレーションされたとします。ここで \(x(ih)~~と~~x(ih+h)\) の中間における x の最大値を \(M_i\) と表記します。この \(M_i\) は、レイリー分布(レイリー分布 - Wikipedia)する事が知られており、その分布関数が解析的に求まっています。その逆関数を使えば、一様乱数から \(M_i\) がシミュレーションで生成できます。一様乱数から標準正規分布関数の逆関数を使って、標準正規乱数を生成するのと同じやり方です。解析のプロセスは飛ばし、結論の式だけを導出します。
\[ M_i=\frac { x(ih+h)+x(ih)+ \sqrt {(x(ih+h)-x(ih))^2-2b(ih)^2~ h~ \ln U_i} }{2} \tag{6.125} \]但し、\(b(ih)\) は x の SDE の拡散項係数で、\(t=ih\) 時の値です。これも \(ih→ih+h\) 間で変動しているはずであり、従って上式は近似式になります。
\(x(ih+h)~~と~~x(ih)\) の間隔は、ルックバックオプションの観測期間をすべてカバーする期間に拡大する事も可能です。各 \(ih,~~i=1,2,…,n\) ごとに、最大値をシミュレーションしても、使われるのは、その中のさらに最大の x の値なので、シミュレーション全期間をカバーするデータを使って、一回で済ませる事ができるなら、その方が計算効率は良くなります。但し、拡散項係数 \(b(ih)\) が近似された値なので、期間と長くとると、そこでの離散バイアスが大きくなります。従って、\(b(ih)\) が全期間に渡ってあまり大きく変動しない場合に限られます。
離散化バイアスの原因と、その対処方法についての概説は以上です。アメリカンタイプのオプション価格を MCS で行う際、オプションの行使戦略の決め方により発生するバイアスについては、次のセクションで説明します。