Mímisbrunnr知恵の泉

← 金融工学 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:ブラウン運動と幾何ブラウン運動 | 数理:ブラウン運動(統計)

要点(BLUF)

1. なぜ普通の連鎖律ではダメか

通常の微積分なら、f(t,X)f(t,X) の変化は1次まで(テイラー展開の1次項)で済みます。

df=ftdt+fxdXdf = f_t\,dt + f_x\,dX

ところが XX がブラウン運動で動くと、2次の項が消えません。テイラー展開を2次まで残すと

df=ftdt+fxdX+12fxx(dX)2+df = f_t\,dt + f_x\,dX + \tfrac12 f_{xx}\,(dX)^2 + \cdots

ここで dX=adt+bdWdX=a\,dt+b\,dW を代入し、ブラウン運動の特殊な計算規則

(dW)2=dt,dtdW=0,(dt)2=0(dW)^2 = dt,\qquad dt\cdot dW = 0,\qquad (dt)^2 = 0

を使うと、(dX)2=b2(dW)2=b2dt(dX)^2 = b^2(dW)^2 = b^2\,dt1次の dtdt として生き残ります。通常の微積分なら (dX)2(dX)^2 は2次の微小量として無視できるのに、ブラウン運動では (dW)2(dW)^2dtdt のオーダーで残る——これが伊藤の補題のすべてです。まずこの (dW)2=dt(dW)^2=dt を数値で確かめます。

import numpy as np

rng = np.random.default_rng(5)
T, N = 1.0, 100000
dt = T/N
dW = rng.normal(0, np.sqrt(dt), N)    # ブラウン運動の増分

print(f"Σ(dW)^2  = {np.sum(dW**2):.5f}   (理論では T = {T})")
print(f"Σ(dW)dt  = {np.sum(dW)*dt:.3e}   (→ 0)")
print(f"Σ(dt)^2  = {N*dt**2:.3e}         (→ 0)")

出力:

Σ(dW)^2  = 0.99768   (理論では T = 1.0)
Σ(dW)dt  = 2.880e-06   (→ 0)
Σ(dt)^2  = 1.000e-05         (→ 0)

出力の意味:増分の2乗を足し上げると (dW)2=0.998T\sum(dW)^2 = 0.998 \approx T で、確かに (dW)2(dW)^2 は平均的に dtdt ぶんずつ積み上がります(二次変分が TT に収束)。いっぽう (dW)dt\sum(dW)\,dt(dt)2\sum(dt)^210510^{-5} オーダーで実質ゼロ。だから残すべきは (dW)2=dt(dW)^2=dt の項だけ——この非自明な事実が、確率過程の微分を通常の微分と分ける一線です。

2. 伊藤の補題

以上を整理すると、伊藤の補題が得られます。dXt=adt+bdWtdX_t = a\,dt + b\,dW_t に従う過程と、滑らかな関数 f(t,X)f(t,X) について

df=(ft+afx+12b2fxx)dt+bfxdWdf = \left(f_t + a\,f_x + \tfrac12 b^2 f_{xx}\right)dt + b\,f_x\,dW

通常の連鎖律 df=ftdt+fxdXdf=f_t\,dt+f_x\,dX と比べると、ドリフト部分に 12b2fxx\tfrac12 b^2 f_{xx} が増えています。この余分な項こそ、確率的なノイズが関数の曲がり(fxxf_{xx})を通じて系統的なドリフトを生むという、金融工学で繰り返し現れる効果です(凸性・ガンマ・ボラティリティの価値)。

3. 幾何ブラウン運動への適用

GBM dS=μSdt+σSdWdS=\mu S\,dt+\sigma S\,dWa=μSa=\mu Sb=σSb=\sigma S の場合です。これに f(S)=lnSf(S)=\ln S を当てます。導関数は

ft=0,fx=1S,fxx=1S2f_t = 0,\qquad f_x = \frac{1}{S},\qquad f_{xx} = -\frac{1}{S^2}

伊藤の補題に代入すると、SS がきれいに消えます。

d(lnS)=(μS1S+12σ2S2(1S2))dt+σS1SdW=(μσ22)dt+σdWd(\ln S) = \left(\mu S\cdot\frac{1}{S} + \tfrac12\sigma^2 S^2\cdot\Big(-\frac{1}{S^2}\Big)\right)dt + \sigma S\cdot\frac{1}{S}\,dW = \Big(\mu - \frac{\sigma^2}{2}\Big)dt + \sigma\,dW

右辺はもう SS を含まず、lnS\ln S がドリフト μσ22\mu-\tfrac{\sigma^2}{2}・ボラ σ\sigma算術ブラウン運動だと分かります。両辺を 00 から tt まで積分すれば

lnStlnS0=(μσ22)t+σWtSt=S0exp ⁣((μσ22)t+σWt)\ln S_t - \ln S_0 = \Big(\mu-\frac{\sigma^2}{2}\Big)t + \sigma W_t \quad\Longrightarrow\quad S_t = S_0\exp\!\Big(\big(\mu-\tfrac{\sigma^2}{2}\big)t + \sigma W_t\Big)

ブラウン運動と幾何ブラウン運動 で天下りに与えた解が、伊藤の補題から導けました。σ2/2-\sigma^2/2 は伊藤補正項そのものです。

4. 数値検証

伊藤の補題が正しいなら、対数リターン ln(ST/S0)\ln(S_T/S_0) の平均は μT\mu T ではなく (μσ22)T(\mu-\tfrac{\sigma^2}{2})T になるはずです。いっぽう価格そのものの平均 E[ST/S0]E[S_T/S_0]eμTe^{\mu T} のまま。両方を同時に確かめます。

import numpy as np

rng = np.random.default_rng(2)
S0, mu, sigma, T = 100.0, 0.10, 0.20, 1.0
M = 500000

W_T = rng.normal(0, np.sqrt(T), M)
S_T = S0*np.exp((mu - 0.5*sigma**2)*T + sigma*W_T)
logret = np.log(S_T/S0)

print(f"E[ln(S_T/S0)] (シミュ)   = {logret.mean():.5f}")
print(f"(μ - σ^2/2)T  ← 伊藤の予言 = {(mu-0.5*sigma**2)*T:.5f}")
print(f"μT            ← 素朴な誤り  = {mu*T:.5f}")
print(f"Var[ln(S_T/S0)] (シミュ) = {logret.var():.5f}")
print(f"σ^2 T                    = {sigma**2*T:.5f}")
print(f"E[S_T/S0] (シミュ)        = {np.mean(S_T/S0):.5f}  (理論 e^(μT)={np.exp(mu*T):.5f})")

出力:

E[ln(S_T/S0)] (シミュ)   = 0.08031
(μ - σ^2/2)T  ← 伊藤の予言 = 0.08000
μT            ← 素朴な誤り  = 0.10000
Var[ln(S_T/S0)] (シミュ) = 0.03998
σ^2 T                    = 0.04000
E[S_T/S0] (シミュ)        = 1.10549  (理論 e^(μT)=1.10517)

出力の意味:シミュレーションした対数リターンの平均 0.08031 は、伊藤が予言する (μσ2/2)T=0.080(\mu-\sigma^2/2)T=0.080 に一致し、素朴な μT=0.10\mu T=0.10 とは明確に違います。分散も σ2T=0.04\sigma^2 T=0.04 にぴたり。いっぽう価格レベルの平均 E[ST/S0]=1.10549E[S_T/S_0]=1.10549eμT=1.10517e^{\mu T}=1.10517 に一致——**「対数で測ると μσ2/2\mu-\sigma^2/2、レベルで測ると μ\mu」**という対数正規の二面性が、伊藤の補題から定量的に出ています。この σ2/2\sigma^2/2 のギャップこそ、次章以降のオプション価格づけで「ボラティリティに価値がある」ことの数理的な源です。

⚠️ よくある誤解

関連ノート