デリバティブの価格を計算するクオンツやシステムの担当者は、式で解けない商品の評価にこの方法を使います。リスク管理の担当者は、取引相手の信用リスクの計算で将来のエクスポージャー(将来の時点で評価した取引の価値の分布から求める値)を求めるときや、バリュー・アット・リスク(VaR)のようなリスク量を計算するときに使います12。

モンテカルロ法で求めるもの

金融実務でモンテカルロ法というと、乱数を何度も使って数値の実験を繰り返し、多数の結果から目的の値を求めることを指します1。このページで扱う価格の計算では、デリバティブの価格を、乱数で作った多数の結果の平均で近似します。オプションの評価の章の共通の例(原資産の価格 100、行使価格 100、残存期間 1 年、金利 1%、ボラティリティ 20%)のコール・オプションを 1 万本の経路で評価すると、推定値は 8.33 です。ブラック・ショールズ・モデルの式で求めた値(解析解)は 8.43 で、差は 0.10 です3。

価格は、リスク中立評価の考え方で、満期のペイオフ(受け取り)の期待値を割り引いた値です。モンテカルロ法は、この期待値を、乱数で作った経路のペイオフの平均で置き換えます。そのため、経路は原資産の期待収益率を無リスク金利と置いて作ります4。この置き方と、将来の価値の予想に使うシナリオとの違いはリスク中立評価で扱います。

金融実務のモンテカルロ法には、デリバティブの価格のように分布の平均を求める計算と、バリュー・アット・リスク(VaR)のように分布の端の点を求める計算があります。どちらも、乱数で原資産の価格の変化を作り、そこから価値や損益を計算し、結果を集計する手順は共通です1。以下では、平均を求める価格の計算を取り上げます。

経路の作り方と価格の求め方

計算は、乱数を作る、経路を作る、ペイオフを割り引いて平均する、の順に進みます。0 から 1 の間の一様乱数を作り、平均 0、分散 1 の正規分布に従う正規乱数に変換し、それを使って原資産の価格を作ってデリバティブの価値を計算します。これを必要な回数だけ繰り返し、平均をとったものが価格の推定値です5。

原資産の価格が幾何ブラウン運動(価格の対数が、ドリフト付きのブラウン運動に従う過程)に従うとき、時点 tt の価格 StS_t から Δt\Delta t 年後の価格は、正規乱数 ZZ を 1 つ使って次の式で作れます6。rr は金利(連続複利)、σ\sigma はボラティリティです。

St+Δt=Stexp⁡ ⁣((r−12σ2)Δt+σΔt Z)S_{t+\Delta t} = S_t \exp\!\left( \left( r - \tfrac{1}{2}\sigma^2 \right) \Delta t + \sigma \sqrt{\Delta t}\, Z \right)

この式は、対数をとった価格の増分が正規分布に従うことをそのまま使うため、Δt\Delta t を大きくしても分布はずれません6。満期の価格だけでペイオフが決まるヨーロピアン・オプションなら、Δt\Delta t を残存期間 TT にして 1 歩で満期まで進めてよく、このページのシミュレーターもそうしています。途中の価格を見る商品では、見る時点ごとに 1 歩ずつ進めます。

NN 本の経路の満期の価格を ST(1),…,ST(N)S_T^{(1)}, \dots, S_T^{(N)} とすると、行使価格 KK のコールの価格の推定値 C^\hat{C} は、経路ごとのペイオフを割り引いた値 YiY_i の平均です。

C^=1N∑i=1NYi,Yi=e−rTmax⁡ ⁣(ST(i)−K, 0)\hat{C} = \frac{1}{N} \sum_{i=1}^{N} Y_i, \qquad Y_i = e^{-rT} \max\!\left(S_T^{(i)} - K,\ 0\right)

経路 1 本の計算を、共通の例(S0=100S_0 = 100、K=100K = 100、r=1%r = 1\%、σ=20%\sigma = 20\%、T=1T = 1)で確かめます。正規乱数が Z=1Z = 1 なら、満期の価格は 100exp⁡(0.01−0.02+0.2)=100exp⁡(0.19)100 \exp(0.01 - 0.02 + 0.2) = 100 \exp(0.19) で約 120.925 です。ペイオフは 120.925 − 100 = 20.925 で、割り引いた値 YY は 20.925×e−0.0120.925 \times e^{-0.01} で約 20.72 になります。Z=−1Z = -1 なら、満期の価格は 100exp⁡(−0.21)100 \exp(-0.21) で約 81.06 で、行使価格を下回るためペイオフは 0、YY も 0 です。この 2 本だけの平均は約 10.36 で、解析解 8.43 とは離れています。1 本ごとの値は 0 から大きな値まで大きくばらつくため、本数を増やして平均をとります。

経路ごとのペイオフを計算するだけなので、途中の価格の動きで受け取りが変わる経路依存型オプションも、同じ手順で評価できます7。

計算例:経路の数と推定値

共通の例のコールを、経路の数を変えて評価すると、推定値と標準誤差は次の表になります。乱数のシードは 1 で、どの行も同じ乱数列の先頭から使っています3。

経路の数 推定値 標準誤差 解析解 8.43 との差 差 ÷ 標準誤差
1,000 7.94 0.43 −0.49 −1.14
4,000 8.24 0.21 −0.19 −0.90
9,000 8.32 0.14 −0.11 −0.79
10,000 8.33 0.13 −0.10 −0.77

経路の数を 1,000 本から 4 倍の 4,000 本にすると、標準誤差は 0.43 から 0.21 とおよそ半分になります。9 倍の 9,000 本では 0.14 とおよそ 3 分の 1 です。一方で、推定値と解析解の差は、標準誤差の 1 倍前後の大きさにとどまっています。経路を増やすと推定値は解析解に近づきますが、差は乱数によって上下するため、1 回の計算の差だけで精度を判断することはできません。精度は標準誤差で表します。

標準誤差と 95% の範囲

標準誤差は、推定値が乱数によってどれだけばらつくかを表す値で、経路ごとの割り引いたペイオフの標準偏差 ss を、経路の数の平方根で割って求めます。

SE=sN,s2=1N−1∑i=1N(Yi−C^)2\mathrm{SE} = \frac{s}{\sqrt{N}}, \qquad s^2 = \frac{1}{N-1} \sum_{i=1}^{N} \left( Y_i - \hat{C} \right)^2

ss は経路の数を増やしてもほとんど変わらず、共通の例では 13.4 前後です3。そのため、標準誤差は 1/N1/\sqrt{N} の割合で小さくなり、半分にするには経路が 4 倍、精度を 1 桁上げるには 100 倍要ります8。共通の例で標準誤差を 0.01 まで小さくするには、(13.4 ÷ 0.01)の 2 乗で、およそ 180 万本の経路が要ります3。ss は経路ごとのペイオフのばらつきなので商品の条件で変わり、ボラティリティを 40% にすると ss は約 30 になり、1 万本の標準誤差は 0.30 です3。

経路の数が多いとき、推定値から標準誤差の 1.96 倍を引いた値と足した値の間の範囲は、およそ 95% の割合で、モデルでの本当の価格(リスク中立での期待値。共通の例では解析解)を含みます。1.96 は標準正規分布の 97.5% 点です9。共通の例の 1 万本では、8.33 ± 1.96 × 0.13 で、8.08〜8.58 の範囲になり、解析解 8.43 はこの中に入ります3。シードを 1 から 100 まで変え、シードごとに同じ方法で範囲を作ると、解析解が入ったのは 100 回のうち 96 回で、残りの 4 回も推定値と解析解の差は標準誤差の 3 倍以内でした3。

深掘り標準誤差が経路の数の平方根に反比例する理由

経路ごとの値 Y1,…,YNY_1, \dots, Y_N が独立で同じ分布に従うとき、平均 C^\hat{C} の分散は、1 本の値の分散 Var(Y)\mathrm{Var}(Y) を NN で割った値になります10。

Var(C^)=Var(Y)N\mathrm{Var}(\hat{C}) = \frac{\mathrm{Var}(Y)}{N}

標準誤差はこの平方根なので、Var(Y)/N\sqrt{\mathrm{Var}(Y)} / \sqrt{N} です。Var(Y)\mathrm{Var}(Y) がわからないため、実際の計算では経路の値から求めた s2s^2 で置き換えます。

シミュレーターモンテカルロ法の推定値の収束と標準誤差
入力
商品
オプションの種類
年
%
%
本
7.88.08.28.48.68.89.09.22,0004,0006,0008,00010,000価格経路の数解析解 8.43推定値 8.33
  • モンテカルロ法の推定値
  • 解析解
モンテカルロ法の推定値
8.3272
標準誤差
0.1341
推定値 ± 標準誤差の 3 倍
7.9249 〜 8.7294
解析解
8.4333
推定値と比べる解析解の差(標準誤差の何倍か)
−0.79

単純化している点

  • 原資産の価格は幾何ブラウン運動に従い、ボラティリティと金利は満期まで一定、配当はないとします。
  • 乱数はシードを固定した疑似乱数(xoshiro128**)で、同じ入力なら毎回同じ結果になります。
  • デジタルは、満期に行使価格を超えて(プットは下回って)いれば 10 を受け取るキャッシュ・オア・ナッシングです。
  • バリアは決まった回数だけ見ます(離散監視)。解析解はバリアを常に見る(連続監視)式で、ブロディ・グラッサーマン・コウの補正でバリアをずらして比べます。補正は見る間隔が短いときの近似で、見る回数が少ないとずれます。

このシミュレーターは学習のために単純化した計算で、実際の取引の評価やリスク管理には使えません。(免責事項)

シミュレーターの説明

商品(ヨーロピアン、デジタル、バリア)、コールとプット、原資産の価格、行使価格、残存期間、ボラティリティ、金利、経路の数、乱数のシードを変えると、経路の数ごとの推定値のグラフと、標準誤差、解析解との差が変わります。経路の数を減らすと標準誤差は大きくなり、グラフの推定値の揺れも大きくなります。シードを変えると推定値は変わりますが、多くの場合は解析解から標準誤差の 2 倍ほどの範囲に入ります。ボラティリティを上げると、同じ経路の数でも標準誤差は大きくなります。

乱数とシード

モンテカルロ法で使う乱数は、コンピュータが式で次々に作る疑似乱数です。ある数列が、前の値に左右されない(統計的に独立)ことと、値が偏りなく出る(一様)ことを満たすとき、十分にランダムな数列とみなして疑似乱数と呼ぶことが多くあります11。たとえば線形合同法は、1 つ前の値から Xn=aXn−1+c(modm)X_n = aX_{n-1} + c \pmod m の式で次の値を作ります12。

式で作るため、最初の値が同じなら同じ乱数列が出ます。このサイトのシミュレーターでは、この最初の値を決める入力をシードと呼び、同じシードなら同じ推定値になります。シードを変えると乱数列が変わり、推定値は標準誤差の大きさの範囲で動きます。

式で作る乱数は、一定の周期で同じ列に戻ります。周期を超えて乱数を使っても、同じ乱数をもう一度使うだけで、推定の精度は上がりません12。日本銀行金融研究所の 2002 年の論文は、表計算ソフトの組み込みの乱数の周期が短く、大きな計算には足りない場合があることを示し、周期が 219937−12^{19937}-1 と長いメルセンヌ・ツイスター法を例に挙げています13。

分散減少法:経路の数を変えず誤差を縮める

分散減少法は、乱数の使い方を工夫して、経路ごとの値のばらつき(標準誤差の式の ss)を小さくする方法です。1/N1/\sqrt{N} の割合は変えずに、その比例係数を小さくします15。代表的な分散減少法に、対称変量法と制御変量法があります。

対称変量法は、正規乱数 ZZ で作った経路と、符号を反対にした −Z-Z で作った経路を組にして、2 本の値の平均を 1 つの値として使う方法です15。組の 2 本の値が逆に動くほど、平均の分散は小さくなります。ペイオフが乱数について単調に増えるか減るとき(ヨーロピアン・コールなど)は、2 本の値の共分散が負になり、分散が小さくなることが保証されます16。ただし、対称変量法で分散が大きく減ることはまれです17。

制御変量法は、評価したい値 YY と一緒に動き、期待値が式でわかっている値 WW を同じ経路で計算し、その推定のずれで YY の推定を直す方法です18。次の式の cc を YY と WW の共分散から決めると、YY と WW の相関が強いほど分散が小さくなります19。

C^cv=1N∑i=1N(Yi+c(Wi−E[W])),c=−Cov(Y,W)Var(W)\hat{C}_{\mathrm{cv}} = \frac{1}{N} \sum_{i=1}^{N} \left( Y_i + c \left( W_i - E[W] \right) \right), \qquad c = -\frac{\mathrm{Cov}(Y, W)}{\mathrm{Var}(W)}

たとえば、期間中の平均の価格で受け取りが決まるアジアン・オプションを評価するとき、同じ経路で計算した通常のヨーロピアン・コールの割り引いたペイオフを WW にできます。WW の期待値は、ブラック・ショールズ・モデルの式の価格です20。

方法を選ぶときは、分散だけでなく 1 本あたりの計算の手間も比べます。分散が半分でも、1 本の計算に 2 倍より多くの時間がかかる方法は、同じ時間で比べると精度が下がります21。方法によっては、時間あたりの試行回数が減り、計算時間が増えることもあります22。

深掘り対称変量法で分散が小さくなる理由

ZZ で作った経路の値を YY、−Z-Z で作った経路の値を Y~\tilde{Y} とすると、2 本の平均の分散は次のとおりです23。

Var ⁣(Y+Y~2)=14(Var(Y)+Var(Y~)+2 Cov(Y,Y~))\mathrm{Var}\!\left( \frac{Y + \tilde{Y}}{2} \right) = \frac{1}{4} \left( \mathrm{Var}(Y) + \mathrm{Var}(\tilde{Y}) + 2\,\mathrm{Cov}(Y, \tilde{Y}) \right)

YY と Y~\tilde{Y} が独立なら共分散は 0 で、分散は Var(Y)/2\mathrm{Var}(Y)/2 です。これは独立な経路 2 本の平均と同じです。共分散が負なら、分散はそれより小さくなります。また、ZZ と −Z-Z を組にすると、使った乱数の平均は必ず 0 になり、奇数次のモーメントも 0 になります23。

使う場面とほかの方法との使い分け

モンテカルロ法は、高い精度を得るのにほかの方法より多くの計算量が要ります。2002 年の日本銀行金融研究所の論文によると、実務では、ブラック・ショールズ・モデルのような解析解、二項モデルのような格子法や有限差分法、モンテカルロ法の順に選ばれていました。特に速い計算が求められるフロントでは、多くの場合、モンテカルロ法は最後の手段とされていました7。

同じ論文は、満期にだけ行使できるオプションのうち、モンテカルロ法を使うのは次の場合だとしています7。原資産の価格の動きのモデルが複雑で、ほかの方法では作るのに手間がかかるオプション、経路依存性のあるオプション、原資産が 4 つ以上あるオプションです。格子法や有限差分法は、原資産の数が増えると計算量が急に増え、実際に計算できるのは原資産が 3 つ程度までです。モンテカルロ法は、原資産を 1 つ増やしても、使う乱数が経路の数だけ増えるだけです24。

経路依存型の例のバリア・オプションでは、バリアを見る時点ごとに経路の価格を確かめます。原資産の価格 100、行使価格 100、バリア 90 のダウン・アンド・アウト・コールを満期までに 50 回見るとき、1 万本の推定値は 7.44(標準誤差 0.13)です。常に見る前提の解析解 6.88 より高く、見る回数に合わせて補正した解析解 7.32 に近い値です3。補正は、決まった時点にだけ見る契約に合わせて、常に見る前提の式のバリアを原資産から遠ざける向きにずらすものです25。バリアを 90 から 88.53 に遠ざけるため、補正した解析解 7.32 は 6.88 より高くなります。

デリバティブの価格のほかに、取引相手の信用リスクの計算にも使います。XVAの計算に使う期待エクスポージャーは、簡便な方法でも求められますが、複雑な取引やネッティングの効果を入れて精緻に求めるにはモンテカルロ法が使われます。計算の負荷が大きくなることが欠点です2。期待エクスポージャーを使う評価の全体はXVA の全体像で扱います。

VaR のように分布の端の点を求める計算では、同じ経路の数でも、平均を求める計算より誤差が大きくなることがあります。同じ 2002 年の日本銀行金融研究所の論文の正規分布の例では、99.5% 点の誤差が平均の誤差より大きくなりました。分散減少法の多くは平均を求める計算の誤差を減らす技術で、端の点を求める計算にそのまま使えるとは限りません26。

注

  1. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」(日本銀行金融研究所「金融研究」2002 年 6 月)の 2 節 (1)「モンテカルロ法の定義と実務での適用対象」(54 ページ)。 ↩ ↩2 ↩3

  2. 川上高志「ヘッジ取引におけるデリバティブ信用評価調整の影響についての考察」(日本銀行金融研究所「金融研究」、2018 年 4 月)の 126 ページ(PDF の 8 ページ目)の期待エクスポージャーの計算の段落。 ↩ ↩2

  3. src/lib/simulators/monte-carlo.ts の関数(computeMonteCarlo)で、このページのシミュレーターと同じ計算をした値です。標準偏差 ss は標準誤差 × N\sqrt{N} で、1 万本では 13.41 です。解析解は src/lib/simulators/black-scholes.ts の関数の値(8.4333)です。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  4. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods"(Columbia University、2017 年)の Example 2(4〜5 ページ)。価格はリスク中立確率 QQ での割り引いたペイオフの期待値で、QQ のもとで株価はドリフト rr の幾何ブラウン運動に従うと置きます。 ↩

  5. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 3 節の冒頭のステップ 1〜5(57 ページ)。 ↩

  6. Martin Haugh "Generating Random Variables and Stochastic Processes"(Columbia University、2017 年)の 7.2 節(18〜19 ページ)。資料の式は St+Δt=Ste(μ−σ2/2)Δt+σ(Bt+Δt−Bt)S_{t+\Delta t} = S_t e^{(\mu - \sigma^2/2)\Delta t + \sigma(B_{t+\Delta t} - B_t)} で、BB はブラウン運動です。本文は μ\mu を rr に、増分 Bt+Δt−BtB_{t+\Delta t} - B_t を Δt Z\sqrt{\Delta t}\, Z に置き換えています。 ↩ ↩2

  7. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 3「派生商品のプライシングを行う際の数値計算手法」(85 ページ)。 ↩ ↩2 ↩3

  8. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 1 の (A-5) 式の後の段落(78 ページ)と、55 ページの脚注 14。 ↩

  9. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の 1 節(1 ページ)。資料は信頼区間を θ^n±z1−α/2 σ^n/n\hat{\theta}_n \pm z_{1-\alpha/2}\,\hat{\sigma}_n/\sqrt{n} と書いています。本文は α=0.05\alpha = 0.05 とし、z0.975=1.96z_{0.975} = 1.96 としています。 ↩ ↩2

  10. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 1 の (A-4)、(A-5) 式(78 ページ)。 ↩

  11. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 1 節の脚注 5(52 ページ)。 ↩

  12. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 3 節 (1)「乱数の周期と Excel の組み込み乱数」と脚注 18(57 ページ)。 ↩ ↩2

  13. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 3 節 (1)、(2) と図表 2(57〜58 ページ)。 ↩

  14. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 58 ページの脚注 20。 ↩

  15. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 2「分散減少法とモーメント調整法」の冒頭と図表 A-1(80 ページ)、①対称変量法(81〜82 ページ)。 ↩ ↩2

  16. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の 3 節、3.1 節の Theorem 1、3.3 節(7〜9 ページ)。 ↩

  17. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の 3 節の Example 8 の後の段落(10 ページ)。 ↩

  18. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の図表 A-1 の制御変量法(81 ページ)。資料は Z=X−α(Y−E[Y])Z = X - \alpha(Y - E[Y]) と書いています。本文の YY、WW、cc は、資料の XX、YY、−α-\alpha にあたります。 ↩

  19. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の 2.1 節(3 ページ)。資料の ZZ を本文では WW と書いています。資料は、共分散と分散がわからないときは、先に少ない本数の試しの計算で見積もるとしています。 ↩

  20. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の Example 2(4〜5 ページ)。 ↩

  21. Martin Haugh "Simulation Efficiency and an Introduction to Variance Reduction Methods" の 1.1 節(2 ページ)。資料は、分散と 1 本あたりの計算の手間の積で方法の効率を比べるとしています。 ↩

  22. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 1 節の④(53 ページ)。 ↩

  23. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 2 の (A-11)〜(A-13) 式(82 ページ)。 ↩ ↩2

  24. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の補論 3 の③(86 ページ)。 ↩

  25. Mark Broadie、Paul Glasserman、Steven Kou "A Continuity Correction for Discrete Barrier Options"(Mathematical Finance、1997 年 10 月)の 1.1 節(325〜326 ページ)。補正した解析解は、同じ論文の補正(バリアを e±0.5826 σΔte^{\pm 0.5826\,\sigma\sqrt{\Delta t}} 倍する)でバリアを 88.53 にして計算した値です。 ↩

  26. 石川達也・内田善彦「モンテカルロ法によるプライシングとリスク量の算出について」の 2 節 (2)、(3)(55〜56 ページ)。99.5% 点の誤差が大きいことは、正規分布に従う値の期待値と 99.5% 点を計算した図表 1 の例の結果です。 ↩