🎓 レベル:発展 | 重要度:B(標準)・要最新確認
📎 前提:伊藤の補題・短期金利モデル(CIR) | 関連:インプライドボラティリティ
要点(BLUF)
- 確率ボラティリティモデルは、ブラック–ショールズが一定としたボラティリティ自体を確率過程にします。代表が Heston モデルで、分散 が CIR 型の平均回帰過程に従います。
- 株価と分散の相関 (株式では通常負=レバレッジ効果:株が下がるとボラが上がる)が、ボラティリティ・スマイル/スキューと裾の厚さを生みます。
- GBM の正規リターンと違い、Heston は超過尖度(裾の厚さ)とボラティリティ・クラスタリングを再現します。これが インプライドボラティリティ のスマイルの一因です。
1. なぜボラを確率過程にするか
GBM(ブラウン運動と幾何ブラウン運動)のボラ は定数でした。しかし現実のボラは時間とともに大きく動き、荒れた時期と穏やかな時期が固まって現れます(ボラティリティ・クラスタリング)。さらに、ボラが定数なら生まれないはずのスマイル(インプライドボラティリティ)が市場には存在します。これらを説明するには、ボラ自体にランダムな動きを持たせる必要があります。
2. Hestonモデル
Heston モデルは、株価と分散 を、相関する2つのブラウン運動で動かします。
分散 の式は 短期金利モデル の CIR と同じ形——長期分散 への平均回帰(速度 )、 で正を保つ、ボラのボラ 。相関 が要で、株式では (レバレッジ効果:株価下落とボラ上昇が連動)が普通で、これが左に偏ったスキューを生みます。Heston はこの設定でも準閉形式のオプション価格(特性関数経由)を持つのが実務での強みです。
3. 裾の厚さ:Heston vs GBM
Heston のリターンが GBM よりどれだけ裾が厚いかを、超過尖度(正規なら0)で測ります。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from scipy import stats
rng = np.random.default_rng(0)
S0, v0, mu = 100.0, 0.04, 0.05
kappa, theta, xi, rho = 2.0, 0.04, 0.3, -0.7 # 回帰速度/長期分散/ボラのボラ/相関
T, N, M = 1.0, 252, 5000
dt = T/N
S = np.full(M, S0); v = np.full(M, v0)
daily = np.zeros((M, N))
for i in range(N):
z1 = rng.normal(size=M)
z2 = rho*z1 + np.sqrt(1-rho**2)*rng.normal(size=M) # 相関ρの2変量正規
vp = np.maximum(v, 0) # 分散の負を切り詰め
incr = (mu - 0.5*vp)*dt + np.sqrt(vp*dt)*z1
daily[:, i] = incr
S = S*np.exp(incr)
v = v + kappa*(theta - vp)*dt + xi*np.sqrt(vp*dt)*z2 # 分散はCIR型の過程
heston = daily.flatten()
gbm = rng.normal((mu-0.5*theta)*dt, np.sqrt(theta*dt), heston.size)
print(f"Heston日次リターン 超過尖度 = {stats.kurtosis(heston):.3f}")
print(f"GBM日次リターン 超過尖度 = {stats.kurtosis(gbm):.3f}")
print(f"Heston終端価格 平均 {S.mean():.3f}, S0*e^(μT)={S0*np.exp(mu*T):.3f}")
plt.figure(figsize=(7, 5))
plt.hist(heston, bins=300, density=True, alpha=0.5, label="Heston(確率ボラ)")
plt.hist(gbm, bins=300, density=True, histtype="step", color="green", label="GBM(一定ボラ)")
plt.yscale("log") # 対数軸で裾を強調
plt.xlim(-0.06, 0.06)
plt.xlabel("日次リターン"); plt.ylabel("密度(対数軸)")
plt.title("確率ボラは裾が厚い(対数軸で比較)")
plt.legend(); plt.tight_layout(); plt.show()
出力:
Heston日次リターン 超過尖度 = 1.267
GBM日次リターン 超過尖度 = 0.008
Heston終端価格 平均 105.513, S0*e^(μT)=105.127
出力の意味:GBM の日次リターンは超過尖度ほぼ0(定義どおり正規)ですが、Heston は 1.267 と明確に裾が厚い。ボラが時間とともに揺れるため、「ボラが高い日にさらに大きく動く」混合が起き、正規より極端な値が増えるのです。対数軸のヒストグラムでは、Heston(塗りつぶし)の裾が GBM(緑線)より外側まで持ち上がっているのが見えます。終端価格の平均は とほぼ整合——ボラを確率化しても価格の期待成長は のままで、変わったのは分布の形(裾)です。
4. スマイルとの関係
Heston が重要なのは、この裾の厚さと相関 が、ちょうど市場のボラティリティ・スマイル/スキューを生むからです。 だと下落時にボラが上がり、OTM プット(暴落保険)が割高になる——インプライドボラティリティ で見たスキューそのものです。パラメータ を市場のスマイルにキャリブレーションすれば、BS では1つしか入れられなかったボラを、行使価格・満期にわたって一貫して説明できます。確率ボラは「スマイルを内生的に生むモデル」なのです(実装の詳細・市場慣行は要最新確認)。
⚠️ よくある誤解
- 確率ボラでも価格の期待成長は :変わるのはリターン分布の形(裾・歪み)で、平均は GBM と同じ。スマイルやテールが生まれるのは2次以上のモーメントの効果です。
- Feller 条件は分散にも要る:分散の CIR 過程が0を割らないためには 。破ると数値計算で分散が負になり、
np.maximum(v,0)などの切り詰めが必要です(短期金利モデル)。 - Heston は万能ではない:単独ではごく短満期の急峻なスマイルを完全には再現できず、ジャンプ(ジャンプ拡散モデル)と組み合わせることが多い(要最新確認)。
関連ノート
- 第9章 発展トピック 目次
- 伊藤の補題 — 前提:確率過程の微分
- 短期金利モデル — 分散が従う CIR 過程
- インプライドボラティリティ — 説明したいスマイル
- ジャンプ拡散モデル — もう1つのスマイル生成機構
- 金融工学テキスト 全体目次