qkit3: From GARCH to Risk-Neutral Pricing
ボラティリティの時系列モデリングからリスク中立価格付けまで
pt.2ではIVサーフェスを「スナップショット」として分析した。pt.3ではボラティリティの時間的ダイナミクスをモデル化して、そこからオプションの理論価格を導出する。
GARCHモデルは物理測度 (現実世界)の下でリターンのボラティリティ・クラスタリングを捕捉する。だけどオプション価格はリスク中立測度 の下で決定される。 から への変換、つまりリスクの価格付けがGARCHオプション価格理論の核心で、Duan (1995) のLRNVRとHeston & Nandi (2000) の閉形式解がその基盤になる。
1. GARCH(1,1): 物理測度 P の下での定式化
原資産の対数リターン は以下に従う。
は時刻 における条件付き分散(conditional variance)で、
はイノベーション(残差)。パラメータの制約は 、、、。最後の条件が共分散定常性(covariance stationarity)の必要十分条件で、無条件分散の存在を保証する。
無条件分散(長期平均分散)は、
はボラティリティの持続性(persistence)を表す。典型的な株式市場のデータだと くらいで、ボラティリティ・ショックは非常にゆっくり減衰する。
ボラティリティ半減期(half-life)は、
だと 営業日。けっこう長い。
の条件付き期待値は だから、
が1に近いとき、高い は高い を導く。これがボラティリティ・クラスタリングの数学的メカニズム。
最尤推定(MLE)
条件付き正規性の下で、対数尤度関数は、
がパラメータベクトル。数値最適化(L-BFGS-Bなど)で を求める。
2. GARCH変種:非対称性とレバレッジ効果
標準GARCH(1,1)は正と負のショックに対称的に反応する。だけど実際の株式市場では、下落(負のショック)がボラティリティをより大きく増加させる。これがレバレッジ効果(leverage effect)。
GJR-GARCH (Glosten, Jagannathan & Runkle, 1993)
のとき、負のショック()はボラティリティを の係数で増加させるけど、正のショックは のみ。定常性条件は、
EGARCH (Nelson, 1991)
対数をとるから が自動的に保証される(パラメータ制約不要)。 がレバレッジ効果を捕捉する。だけどEGARCHは非アフィン構造なので、閉形式のオプション価格は導出できない。
NGARCH (Engle & Ng, 1993; Duan, 1995)
Duan (1995) が用いたNonlinear Asymmetric GARCH。
のとき、(下落)で がより大きく増加する。定常性条件は、
Heston-Nandi GARCH (Heston & Nandi, 2000)
閉形式オプション価格を可能にするためにデザインされたアフィンGARCH。
NGARCHと同じ構造だけど、ドリフト項に (リスクプレミアム)が明示的に含まれる。 はリスクフリーレート。
モデルの特徴をざっくりまとめると、GARCH(1,1)はレバレッジ効果なしでアフィン、パラメータ3つ。GJR-GARCHはレバレッジありだけど非アフィンで閉形式なし、パラメータ4つ。EGARCHもレバレッジありで非アフィン、閉形式なし、パラメータ4つ。NGARCHはレバレッジありでアフィン、パラメータ4つ。HN-GARCHはレバレッジありでアフィン、閉形式あり、パラメータ5つ。閉形式が欲しいならHN-GARCH一択ということになる。
3. リスク中立変換:PからQへ
GARCHモデルは物理測度 で推定されるけど、オプション価格はリスク中立測度 で計算される。 と の関係を規定するのがプライシング・カーネル(pricing kernel)で、Duan (1995) のLRNVRはその最も基本的な形式。
BSMだと の変換はギルサノフの定理で厳密に行われて、ドリフトが から に変わるだけでボラティリティは不変。だけどGARCHだと離散時間だから、リスクの市場価格の指定がもう少し微妙になる。
Duan (1995) の局所的リスク中立評価関係(LRNVR)
LRNVRは2つの条件を課す。
条件1 — 条件付き期待リターンがリスクフリーレートに等しい。
条件2 — 条件付き分散は と で同一。
LRNVR下で、物理測度のNGARCHプロセス、
は以下のリスク中立プロセスに変換される。
分散プロセスは (ギルサノフ的シフト)を代入して、
つまり の下では非対称パラメータ が に変化する。
LRNVRの限界
LRNVRは条件付き分散を と で同一にする。これは分散リスクプレミアム(variance risk premium, VRP)がゼロということを意味する。
だけど実証研究は一貫してVRPの存在を示している。Hao & Zhang (2013) はLRNVRの下でGARCHモデルがCBOE VIXを約10%過小評価することを示したし、Bollerslev, Tauchen & Zhou (2009) はVRPが将来のリターンを予測することを実証している。
分散依存プライシング・カーネル(Christoffersen, Heston & Jacobs, 2013)
VRPを捕捉するために分散依存のプライシング・カーネルを導入したのがこれ。
はリターンリスクの価格、 は分散リスクの価格。 のとき、 の下での分散プロセスは と異なる。
の下でのパラメータ は のパラメータと から決定される。 だと の下ではボラティリティがより持続的になって()、VRPを生成する。
Zhang & Zhang (2020) はDuanの元のLRNVRを修正して(mLRNVR)、 と で条件付き分散を異なるものとすることでVRPを直接捕捉するフレームワークを提案した。これでGARCHモデルがVIXを正確に価格付けできるようになった。
4. Heston-Nandi閉形式オプション価格
HN-GARCH(1,1)はアフィン構造を持つから、条件付きモーメント母関数が再帰的に計算可能。これでフーリエ反転からヨーロピアンオプション価格の閉形式解が得られる。
リスク中立測度 の下でのHN-GARCHダイナミクスは、
対数株価の条件付きモーメント母関数
期間先の対数株価 の条件付きMGFを とおくと、
と は以下の再帰関係を満たす。
初期条件は 、。
Gil-Pelaez反転によるオプション価格
ヨーロピアン・コール価格は、Heston (1993) と同様にGil-Pelaez反転で計算する。
と はそれぞれ と を用いたフーリエ反転で計算される行使確率。これはBSMの と の一般化と解釈できる。けっこう綺麗な対応関係。
フーリエ反転の被積分関数は振動的だから数値積分には注意がいる。積分上限は有限値に截断して(普通 で十分)、被積分関数が複素数なので実部と虚部を分けて積分する。代替手法としてFFT(高速フーリエ変換)による離散化もある(Carr & Madan, 1999)。
5. 非アフィンGARCHのモンテカルロ価格付け
EGARCH、GJR-GARCHみたいな非アフィンモデルだと閉形式解が存在しない。モンテカルロ・シミュレーション(MC)で価格を計算することになる。
やることはシンプルで、 の下でのGARCHパラメータ( パラメータ + LRNVR変換)を設定して、現在の条件付き分散 を初期値にして、 本の価格パスを生成する。
オプション価格は満期ペイオフの平均。
分散削減
MCの収束を加速するための標準的テクニックが2つある。
対称変量法(Antithetic Variates)は と のペアを同時生成して、分散を約50%削減する。
制御変量法(Control Variates)はBSM価格を制御変量として使う。GARCH MCとBSM MCの差分を取って、BSM解析解で補正する。
6. ボラティリティ予測
GARCH(1,1)の -step先条件付き分散予測は閉形式で得られる。
は無条件分散。 で予測は に収束する(平均回帰)。
日間のオプション価格に用いる予測ボラティリティは、予測分散の平均の平方根。
この をBSMの に代入して「GARCHインフォームド」な理論価格を計算する。簡易的なアプローチだけど、それなりに使える。
予測の精度評価には将来のリアライズド・ボラティリティとの比較が不可欠。日次リターン から計算するリアライズド・ボラティリティ( 日ウィンドウ)は、
予測精度の指標としてはMSE、MAE、QLIKEあたりが標準。QLIKEはPatton (2011) が示したrobustな損失関数で、条件付き分散の予測評価で推奨されている。Mincer-Zarnowitz回帰( の )も定番。
Pythonで書くとこうなる
GARCHフィッティング
from arch import arch_model
returns = provider.get_daily_returns("SPY", period="5y") * 100
# GARCH(1,1)
garch = arch_model(returns, vol="Garch", p=1, q=1, mean="Constant", dist="normal")
result = garch.fit(disp="off")
# GJR-GARCH(1,1)
gjr = arch_model(returns, vol="Garch", p=1, o=1, q=1, mean="Constant")
gjr_result = gjr.fit(disp="off")
# EGARCH(1,1)
egarch = arch_model(returns, vol="EGARCH", p=1, q=1, mean="Constant")
egarch_result = egarch.fit(disp="off")
ボラティリティ予測
forecast = result.forecast(horizon=30)
cond_var = forecast.variance.iloc[-1].values
import numpy as np
sigma_30d = np.sqrt(np.mean(cond_var) * 252) / 100
print(f"GARCH 30d forecast sigma: {sigma_30d:.2%}")
Heston-Nandi閉形式価格
import numpy as np
from scipy.integrate import quad
def hn_mgf_coefficients(phi, tau, omega, alpha, beta, gamma_star, r):
A, B = 0.0, 0.0
for _ in range(tau):
A_new = A + phi * r + B * omega - 0.5 * np.log(1 - 2 * alpha * B)
numer = 0.5 * (phi - 2 * alpha * B * gamma_star) ** 2
B_new = phi * (-0.5) + beta * B + numer / (1 - 2 * alpha * B)
A, B = A_new, B_new
return A, B
def hn_call_price(S, K, tau, r, h0, omega, alpha, beta, gamma_star, upper=100):
ln_K = np.log(K)
def integrand_P1(u):
phi = complex(1, u)
A, B = hn_mgf_coefficients(phi, tau, omega, alpha, beta, gamma_star, r)
f = S ** phi * np.exp(A + B * h0)
return np.real(f * np.exp(-1j * u * ln_K) / (1j * u))
def integrand_P2(u):
phi = complex(0, u)
A, B = hn_mgf_coefficients(phi, tau, omega, alpha, beta, gamma_star, r)
f = S ** phi * np.exp(A + B * h0)
return np.real(f * np.exp(-1j * u * ln_K) / (1j * u))
P1 = 0.5 + (1 / np.pi) * quad(integrand_P1, 1e-8, upper, limit=200)[0]
P2 = 0.5 + (1 / np.pi) * quad(integrand_P2, 1e-8, upper, limit=200)[0]
return S * P1 - K * np.exp(-r * tau) * P2
参考文献
- Engle, R.F. (1982). "Autoregressive Conditional Heteroscedasticity with Estimates of the Variance of United Kingdom Inflation." Econometrica, 50(4), 987-1007
- Bollerslev, T. (1986). "Generalized Autoregressive Conditional Heteroskedasticity." J. Econometrics, 31, 307-327
- Nelson, D. (1991). "Conditional Heteroskedasticity in Asset Returns: A New Approach." Econometrica, 59(2), 347-370
- Glosten, L., Jagannathan, R. & Runkle, D. (1993). "On the Relation between the Expected Value and the Volatility of the Nominal Excess Return on Stocks." J. Finance, 48(5), 1779-1801
- Duan, J.-C. (1995). "The GARCH Option Pricing Model." Mathematical Finance, 5(1), 13-32
- Heston, S. & Nandi, S. (2000). "A Closed-Form GARCH Option Valuation Model." Review of Financial Studies, 13(3), 585-625
- Christoffersen, P., Heston, S. & Jacobs, K. (2013). "Capturing Option Anomalies with a Variance-Dependent Pricing Kernel." Review of Financial Studies, 26(8), 1963-2006
- Christoffersen, P., Jacobs, K. & Ornthanalai, C. (2013). "GARCH Option Valuation: Theory and Evidence." J. Derivatives, 21(2), 8-41
- Bollerslev, T., Tauchen, G. & Zhou, H. (2009). "Expected Stock Returns and Variance Risk Premia." Review of Financial Studies, 22(3), 1311-1341
- Hao, J. & Zhang, J.E. (2013). "GARCH Option Pricing Models, the CBOE VIX, and Variance Risk Premium." J. Financial Econometrics, 11(3), 556-580
- Zhang, W. & Zhang, J.E. (2020). "GARCH Option Pricing Models and the Variance Risk Premium." J. Risk Financial Manag., 13(3), 51
- Christoffersen, P. & Jacobs, K. (2004). "Which GARCH Model for Option Valuation?" Management Science, 50(9), 1204-1221
- Barone-Adesi, G., Engle, R. & Mancini, L. (2008). "A GARCH Option Pricing Model with Filtered Historical Simulation." Review of Financial Studies, 21(3), 1223-1258
- Patton, A. (2011). "Volatility Forecast Comparison Using Imperfect Volatility Proxies." J. Econometrics, 160, 246-256
- Nakagawa, K. et al. (2024). "A Multi-agent Market Model Can Explain the Impact of AI Traders in Financial Markets." arXiv:2409.12516