「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

金融工学でのモンテカルロ法(11/23):層別化法

 金融工学におけるシミュレーションについて学んでいく。テキストとして以下を使う。今回はP.85-89まで。


power-of-awareness.com

6. 分散減少法

 \mathrm{Monte\ Carlo}法は

  • 問題に沿った(同時)分布に従う(多変量)乱数列の生成
  • その乱数列を使った計算

の2つの部分に分けて考えられる。乱数列の生成は更に

  1. 一様分布に従う乱数列\{u_1,u_2,\cdots,u_n\}の生成
  2. それを元にした必要な同時分布に従う乱数列\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_n\}の生成

に分けられる。

 \mathrm{Monte\ Carlo}法は高次元問題を取り扱うことはできるものの、誤差を減らすには大きな時間が掛かり時間効率が低い。そこで本章では時間効率を上げるための手段の1つとして分散減少法を説明する。\mathrm{Monte\ Carlo}法における解の統計的誤差は点列数Nに対してk/\sqrt{N}に出来る。分散減少法はこのkを減らす試みである。
 \mathrm{Monte\ Carlo}法による関数f積分値を


\begin{aligned}
E^{*}[f(X)]
\end{aligned}

と書くことにすると、\mathrm{Monte\ Carlo}法のアイディアは以下の2つに分けることが出来ると言える:

  • 関数fを同じ積分値を取る別の関数に置換え
  • 期待値E^{*}[\cdot]の取り方を変更
関数fを同じ積分値を取る別の関数に置換え
期待値E^{*}[\cdot]の取り方を変更
(1) 負の相関法 (1) 条件付き\mathrm{Monte\ Carlo}
(2) 制御変量法 (2) 層別化法
(3) 回帰分析法 (2-1) ラテン・ハイパーキューブ法
(4) マルチンゲール分散法 (2-2) \mathrm{Curran}の方法
(3) 加重サンプリング法
(4) 測度変換法

6.3 層別化法

 層別化法は条件付き\mathrm{Monte\ Carlo}法と同様に解E[X]の誤差分散よりも解E_{Y}[E_{X}[X|Y]]の誤差分散の方が小さいことを利用する。ただし条件Y積分範囲の分割として与える。
 積分


\begin{aligned}
m=\displaystyle{\int_{0}^{1}f(x)dx}
\end{aligned}
を考える。積分区間[0,1]を予めm個の小区間[a_1,a_2],[a_2,a_3],\cdots,[a_m.a_{m+1}](a_1=0,a_{m+1}=1)に区切り、それぞれの小区間で個別に\mathrm{Monte\ Carlo}法を行なうことになる。
 したがって


\begin{aligned}
\hat{m}=\displaystyle{\sum_{j=1}^{m}\frac{a_{j+1}-a_j}{N_j}}\displaystyle{\sum_{i=1}^{N_j}f(\varepsilon_{i}^{j})}
\end{aligned}

により得ることが出来る。ここで\varepsilon^{j}\sim U(a_j,a_{j+1})な一様乱数である。また第j区間における推定ではN_j個の乱数を発生させたとする。
 このとき解の分散は各\varepsilon^{j}が互いに独立であることに注意すれば


\begin{aligned}
V[\hat{m}]&=V\left[\displaystyle{\sum_{j=1}^{m}\frac{a_{j+1}-a_j}{N_j}}\displaystyle{\sum_{i=1}^{N_j}f(\varepsilon_{i}^{j})}\right]\\
&=\displaystyle{\sum_{j=1}^{m}\left( \frac{a_{j+1}-a_j}{N_j}\right)^2}V\left[\displaystyle{\sum_{i=1}^{N_j}f(\varepsilon_{i}^{j})}\right]\\
&=\displaystyle{\sum_{j=1}^{m}\left( \frac{a_{j+1}-a_j}{N_j}\right)^2} \cdot N_j\cdot V\left[f(\varepsilon^{j})\right]\\
&=\displaystyle{\sum_{j=1}^{m}\frac{\left(a_{j+1}-a_j\right)^2}{N_j}}V\left[f(\varepsilon^{j})\right]
\end{aligned}

である。ここでV[f(\varepsilon^{j})]は第j区間での\mathrm{Monte\ Carlo}法におけるサンプルの分散である。
 特にN_j=(a_{j+1}-a_j)Nとすれば


\begin{aligned}
V[\hat{m}]=\displaystyle{\frac{1}{N}\sum_{j=1}^{m}}
\end{aligned}

が成り立つ。なおf(x)の変化幅が小さければ誤差分散も小さくなるので、分割は変化の小さい所で小さく分割し変化の大きいところで細かく分割すれば、より誤差分散を小さく出来る。

6.3.1 ラテン・ハイパーキューブ法

 算術平均ヨーロピアン・コール・オプションの価格評価のように、満期Tまでの時間をM次元に離散化する場合、各次元の区間分割数mに対してM次元積分m^M個の層別化を必要とするため、層別化の適用は困難になる。それを解決する方法としてラテン・ハイパーキューブが考えられた。
 M次元区間[0,1]^{M}において、各次元をb分割したうえで0からb-1を要素とするランダム順列\pi_{k},k=1,\cdots,Mを用いてサンプリング・セルを決め、そこから1点のサンプリングを行なう。たとえば、2次元を考え、各区間を6等分したとする。たとえばランダム順列\pi_1=\{0,1,2,3,4,5,\},\ \pi_2=\{0,2,1,5,4,3\}が得られたとすると、それらが定めるセルから乱数を1つずつ抽出する。すなわち6個の乱数を得る。


図表 \mathrm{LHC}法におけるサンプリング・セルのイメージ

 \mathrm{LHC}法による一様乱数を用いたサンプリング点\etaはランダム順列を用いて


\begin{aligned}
\eta_{k}^{j}=\displaystyle{\frac{\pi_k^{j}+\varepsilon_k^{j}}{b}},\ j=1,\cdots,b,\ k=1,\cdots,M
\end{aligned}

である。\varepsilon_k^jM次元次元一様乱数のうちj番目に発生させたk次元目の値である。また\pi_k^jは第kランダム順列の第j番目の要素である。たとえば(\varepsilon_1^1=0.1,\varepsilon_2^1=0.9)および(\varepsilon_1^2=0.5,\varepsilon_2^2=0.8)とすれば、


\begin{aligned}
(\eta_1^1,\eta_2^1)=\displaystyle{(\frac{0+0.1}{6},\frac{0+0.9}{6})},\ (\eta_1^2,\eta_2^2)=\displaystyle{(\frac{1+0.5}{6},\frac{2+0.8}{6})}
\end{aligned}

である。
 誤差分散は、サンプリング点を\boldsymbol{\eta}、解を\hat{h}=E[h(\boldsymbol{\eta})]とした場合、誤差分散は


\begin{aligned}
V[\hat{h}]=\displaystyle{\frac{1}{b}}V[h(\boldsymbol{\eta})]+\displaystyle{\frac{b-1}{b}}Cov[h(\boldsymbol{\eta_1}),h(\boldsymbol{\eta_2})]
\end{aligned}

となる。なお


\begin{aligned}
\lim_{b\rightarrow\infty} Cov[h(\boldsymbol{\eta_1}),h(\boldsymbol{\eta_2})]\lt0
\end{aligned}

が成り立つため、\mathrm{LHC}法はbを大きくすれば必ず機能する。

プライバシーポリシー お問い合わせ