「インプライド・ボラティリティ(IV)ってよく聞くけど、一体何?」 「計算が難しいって本当?」
オプション取引の価格に織り込まれた、市場の「期待」と「不安」を数値化する、インプライド・ボラティリティ(IV)。
この記事では、そのIVが、どのような数理モデル(ブラック・ショールズ・モデル)に基づいており、そして、Pythonを用いて、具体的に、どのように計算できるのか、その技術的な実装に、焦点を当てて解説します。
※この記事は、オプション取引の、より技術的な側面に焦点を当てています。もし、「インプライド・ボラティリティとは、そもそも何か?」という、概念的な理解から始めたい方は、まず、メインブログの、こちらの入門ガイドをお読みください。
【理論】IV算出の基礎:ブラック・ショールズ・モデル
インプライド・ボラティリティは、オプションの市場価格から、逆算して求められます。その逆算の際に、基準となるのが、オプションの理論価格を算出するための、最も有名な数理モデル「ブラック・ショールズ・モデル(BSモデル)」です。
ブラック・ショールズ式の概要(Call option)

この式の中のσ(シグマ)がボラティリティです。インプライド・ボラティリティの計算では、このσ以外のすべての変数と、市場で決まったオプション価格Cを使って、方程式を満たすσを数値解析的に見つけ出すのです
【実践】Pythonでインプライド・ボラティリティを計算してみよう
この複雑な逆算も、Pythonを使えば比較的簡単に行うことができます。ここでは、数値計算ライブラリSciPy
を使った方法を紹介します。
Step 1: 必要なライブラリの準備
まず、計算に必要なライブラリをインポートします。scipy
は最適化計算(今回はIVの探索)に、numpy
は数学的な計算に、scipy.stats
は正規分布の計算に使います。
# pip install scipy numpy
from scipy.optimize import brentq
import numpy as np
from scipy.stats import norm
Step 2: ブラック・ショールズの計算式をコードにする
次に、先ほどのブラック・ショールズの計算式をPythonの関数として定義します。この関数は、ボラティリティ(σ)を入力すると、オプションの理論価格を返すものです。
Step 3: 市場価格との差からIVを逆算する
いよいよIVを計算します。 brentq
という関数は、「ある関数(ここではbs_price_call
で計算した理論価格と市場価格の差)の結果が0になるような入力値」を見つけてくれます。
つまり、**「理論価格 – 市場価格 = 0」となるようなsigma
(ボラティリティ)**を探し出すのです。
def bs_price_call(S, K, T, r, sigma):
d1 = (log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*sqrt(T))
d2 = d1 - sigma*sqrt(T)
return S*norm.cdf(d1) - K*exp(-r*T)*norm.cdf(d2)
def implied_volatility_call(C_market, S, K, T, r):
return brentq(lambda sigma: bs_price_call(S, K, T, r, sigma) - C_market, 0.0001, 5.0)
まとめ:IVは市場との対話ツール
インプライド・ボラティリティは、一見すると難解な指標ですが、その本質は「市場が将来をどう見ているか」というシンプルなメッセージです。
- IVはオプションの市場価格から逆算される「期待変動率」
- IVを見ることで、オプションの割安・割高や市場のセンチメントがわかる
- 複雑な計算はPythonなどのツールを使えば誰でも実行できる
IVの計算方法を理解することは、オプションの本質を理解することに繋がります。ぜひこのツールを使いこなし、市場との対話を楽しみながら、より深い投資判断に役立ててください。