今回はブラック-ショールズ方程式で
オプション価格を計算する方法についてです
解説動画はこちら
デリバティブの価格づけに現れる
偏微分方程式のことです。
ブラックショールズ方程式は主に
オプション取引とは
日経225オプションの価格情報があります。
オプション取引の価格計算ツール(日本取引所)
価格計算ツールもついているので
今回はこの計算方法をPythonで再現します。
ブラックショールズの計算式について
使用する変数
ブラック-ショールズの数式
コールオプション価格(買う権利):

こんな感じの計算式になっていますが
途中、d1,d2というものが必要になります。
d_1, d_2 の定義

なお、N(x) は 標準正規分布の累積分布関数(CDF)になります。
下記の関数で、オプション価格を計算できます。
実際に値を入れて計算する場合はこのようになります。
日数で計算したい場合は年単位なのでうまく合わせます。
まとめ
市場価格 > 理論価格
ということになります。
という感じになるので
自動取引ができるんじゃ無いかと
画策しているところです。
今回はブラックショールズ方程式による
オプション価格の計算方法についてでした。
今回はここまでです
それでは。
オプション価格を計算する方法についてです
解説動画はこちら
ブラック-ショールズ方程式とは
デリバティブの価格づけに現れる
偏微分方程式のことです。
デリバティブは株式や債券、通貨、商品などの
原資産から派生した金融商品の総称のことです。
原資産から派生した金融商品の総称のことです。
ブラックショールズ方程式は主に
ヨーロピアン・オプション(満期時のみ行使可) の
理論価格を求めるためのモデルになっています。
理論価格を求めるためのモデルになっています。
オプション取引とは
金融商品のデリバティブの一種で
ある原資産について、あらかじめ決められた
将来の一定の日または期間において
将来の一定の日または期間において
事前に定めた権利行使価格で取引できる
「権利」のことです
「権利」のことです
原資産を
買う権利についてのオプションを「コールオプション」
買う権利についてのオプションを「コールオプション」
売る権利についてのオプションを「プットオプション」
と呼んでいます。
日経225オプションと呼んでいます。
日経225オプションの価格情報があります。
オプション取引の価格計算ツール(日本取引所)
価格計算ツールもついているので
今回はこの計算方法をPythonで再現します。
ブラックショールズの計算式について
モデルの前提条件
• 価格は幾何ブラウン運動に従う
• 市場は完全で、裁定取引がない
• 無リスク金利は一定
• ボラティリティ(変動率)は一定
• 配当は考慮しない(配当あり版も考慮は可)
使用する変数
S 現在の価格(Spot Price)
K 権利行使価格(Strike Price)
T 満期までの残存期間(年単位)
r 無リスク金利(年利)
σ 価格のボラティリティ(年率標準偏差)
ブラック-ショールズの数式
コールオプション価格(買う権利):
プットオプション価格(売る権利):

こんな感じの計算式になっていますが
途中、d1,d2というものが必要になります。
d_1, d_2 の定義

なお、N(x) は 標準正規分布の累積分布関数(CDF)になります。
オプション計算のPythonコード
下記の関数で、オプション価格を計算できます。
import numpy as np
from scipy.stats import norm
def black_scholes_option_price(S, K, T, r, sigma, option_type='call'):
"""
ブラック-ショールズ方程式によるオプション価格の計算
S: 現在の株価
K: 権利行使価格
T: 残存期間(年単位)
r: 無リスク金利(年利)
sigma: ボラティリティ(年率標準偏差)
option_type: 'call' か 'put'
"""
d1 = (np.log(S / K) + (r + sigma**2 / 2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
if option_type == 'call':
price = S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
elif option_type == 'put':
price = K * np.exp(-r * T) * norm.cdf(-d2) - S * norm.cdf(-d1)
else:
raise ValueError("option_type must be 'call' or 'put'")
return price
実際に値を入れて計算する場合はこのようになります。
日数で計算したい場合は年単位なのでうまく合わせます。
# パラメータ例
S = 39425 # 現在の価格
K = 40000 # 権利行使価格
T = 62/365 # 満期まで62日
r = 0.0 # 無リスク金利 0%
sigma = 0.1883 # ボラティリティ 18.83%
call_price = black_scholes_option_price(S, K, T, r, sigma, option_type='call')
put_price = black_scholes_option_price(S, K, T, r, sigma, option_type='put')
print(f"Call Option Price: {call_price:.4f}")
print(f"Put Option Price : {put_price:.4f}")Call Option Price: 963.0367
Put Option Price : 1538.0367
まとめ
この計算結果をどう応用するかですが
オプション取引の戦略を決定するために使います。
市場価格 > 理論価格
オプションが「割高」
プットまたはコールを「売る(ショート)」
市場価格 < 理論価格
オプションが「割安」
プットまたはコールを「買う(ロング)」
ということになります。
この辺りを実際の売買手順フローに落とし込むと
① 必要データ収集(S, K, T, r, σ)
↓
② BSモデルで理論価格算出(call/put)
↓
③ 実際の市場価格と比較(割高・割安を判断)
↓
④ 戦略選定(買う/売る or 戦略組み合わせ)
↓
⑤ 証券口座で売買、モニタリング
という感じになるので
自動取引ができるんじゃ無いかと
画策しているところです。
今回はブラックショールズ方程式による
オプション価格の計算方法についてでした。
今回はここまでです
それでは。











