Excel + VBAでファイナンス。 ブラックショールズオプションオプション電卓

この記事は対処されており、主にオプションの研究を開始し、価格を理解したい人に役立ちます。 第二に、Excelでの計算にまだVBAツールを使用していないが、学習したい場合-それがいかに簡単かがわかります。



オプションの基本



オプションの性質と価格設定について簡単に説明します。 オプションには4つの主要なパラメーターがあります。



1. 原資産

2. オプションのタイプ (コールまたはプット)

3. 行使価格(オプション行使価格)

4.オプションの有効期限 (有効期限)



オプションの買い手にとっては 、満期日の行使価格で原資産購入する(コールオプション)または売却する(プットオプション) 権利を表します。 オプションの売り手にとっては 、満期日の行使価格で原資産を売却(コールオプション)または購入(プットオプション)する義務表します。 実際、オプションは、取引の時点から有効期限までの原資産(BA)の価格の変動に対する保険です-売り手は保険会社として機能し(BAの価格の不利な変更の場合、オプションの買い手に保険を支払います)、保険契約者はオプションの買い手です(売り手に保険を支払います) )



保険の価格と同様に、オプションの価格は「被保険者イベント」の確率によって完全に決定されます。 オプションの行使(オプションの買い手の権利の行使)。 この確率とオプション価格、買い手が支払い、売り手が受け取る保険のコストに影響する主な要素:





この場合、 これら3つのコンポーネントそれぞれのオプション価格の依存性は非線形です。 これらの重要な要素に対して一般的に受け入れられているオプション価格設定式は、1973年にフィッシャーブラックとマイロンショールズによって開発されました。



Black-Scholesの式の形式は次のとおりです(Wikipediaで詳細を確認できます)。



(ヨーロッパ)コールオプションの価格:

画像

画像

画像

(ヨーロッパ)プットオプションの価格:

画像



指定:

C(S、t) -オプションの有効期限前(有効期限前)の時刻tでの呼び出しオプションの現在の値。

Sは原資産の現在の価格です。

N(x)は、標準正規分布の条件下で偏差が小さくなる確率です(したがって、標準正規分布関数の値の範囲を制限します)。

Kはオプションの行使価格です。

r-リスクフリー金利;

T-t-オプションの有効期限までの時間。

画像 -原資産のボラティリティ(分散の平方根)をもたらします。



ギリシャ人のオプション



BA価格、ボラティリティ、および有効期限に対するオプション価格の感度を評価するために、ギリシャ語と呼ばれる係数が使用されます(係数は、「vegi」を除くギリシャ文字で主に示されます)。



ブラックショールズモデルのギリシャ人は、次のように計算されます。



1. デルタ画像 )-BA価格の変更からオプション価格が変更されるレート。 呼び出しオプションの場合、デルタは次と等しくなります 画像 、プットオプション用 画像 。 デルタは、BAの価格に応じたオプション値曲線の現在の傾きを示します。



2. ガンマ画像 )-デルタの変更によるオプション価格の変更率(またはBAの価格の変更による加速)。 ガンマが等しい 画像



3. ベガ画像 )-BAのボラティリティの変化に対するオプション価格の依存性を説明します。 画像 。 Vegaは、ボラティリティの変化の各パーセンテージポイント(1%)で変化するオプション値のポイント数を反映します。



4. シータ画像 )-有効期限が切れるまでの時間に応じたオプション価格の引き下げについて説明します。 通話用- 画像 、プット用- 画像



上記の式は、ストックオプションの場合を含む一般的な場合に当てはまります。 先物契約のオプションを計算する場合、リスクフリーレートrは適用されません。 なぜなら 先物のオプションはモスクワ証券取引所で取引されているため、計算では金利を考慮していません。



MS Excelでのモデルの実装



そのため、Excel + VBAでのBlack-Scholesモデルの実装。



便宜上、BSモデルの変数ごとに関数を作成します。 各関数には入力変数があります。



S-BA価格

X-行使価格

dは有効期限までの日数です

yは1年の日数

v-ボラティリティ

OptionType-オプションタイプ「Call」または「Put」(価格とデルタの計算専用)



VBAでの通常の関数の記述は次のとおりです。

関数名関数(コンマで区切られた入力変数)

...計算...

FunctionName = ...計算...

終了機能




このような関数は、Excelワークシートからだけでなく、他の関数からも呼び出すことができます。

関数は作成されたモジュールに書き込まれます(たとえば、Alt + F11を押してExcelでVBAを実行し、[挿入]-> [モジュール]を選択します)。



関数d_1(S、X、d、y、v)



T = d / y

d_1 =(Log(S / X)+(0.5 *(v ^ 2))* T)/(v *(T ^ 0.5))

終了機能



関数d_2(S、X、d、y、v)

T = d / y

d_2 = d_1(S、X、d、y、v)-v *(T ^ 0.5)

終了機能



関数Nd_1(S、X、d、y、v)

Nd_1 = Application.NormSDist(d_1(S、X、d、y、v))

終了機能



関数Nd_2(S、X、d、y、v)

Nd_2 = Application.NormSDist(d_2(S、X、d、y、v))

終了機能



関数N_d_1(S、X、d、y、v)

N_d_1 = Application.NormSDist(-d_1(S、X、d、y、v))

終了機能



関数N_d_2(S、X、d、y、v)

N_d_2 = Application.NormSDist(-d_2(S、X、d、y、v))

終了機能



関数N1d_1(S、X、d、y、v)

T = d / y

N1d_1 = 1 /(2 * Application.Pi())^ 0.5 *(Exp(-0.5 * d_1(S、X、d、y、v)^ 2))

終了機能



関数OptionPrice(OptionType、S、X、d、y、v)

OptionType = "Call"の場合Then

OptionPrice = S * Nd_1(S、X、d、y、v)-X * Nd_2(S、X、d、y、v)

ElseIf OptionType = "Put" Then

OptionPrice = X * N_d_2(S、X、d、y、v)-S * N_d_1(S、X、d、y、v)

終了する場合

終了機能



関数デルタ(OptionType、S、X、d、y、v)

OptionType = "Call"の場合Then

Delta = Application.NormSDist(d_1(S、X、d、y、v))

ElseIf OptionType = "Put" Then

Delta = Application.NormSDist(d_1(S、X、d、y、v))-1

終了する場合

終了機能



関数シータ(S、X、d、y、v)

T = d / y

シータ=-((S * v * N1d_1(S、X、d、y、v))/(2 *(T ^ 0.5)))/ y

終了機能



関数ガンマ(S、X、d、y、v)

T = d / y

ガンマ= N1d_1(S、X、d、y、v)/(S *(v *(T ^ 0.5)))

終了機能



関数Vega(S、X、d、y、v)

T = d / y

ベガ=(S *(T ^ 0.5)* N1d_1(S、X、d、y、v))/ 100

終了機能




完成したExcelファイルは、 リンクからダウンロードできます。



Excelセルでは、たとえば、セルに= OptionPrice(「Put」; 76870; 90,000; 13; 365; 0.47)と入力することで、指定した関数を呼び出すことができます。原資産の価格76870、ストライク90,000、推定ボラティリティ45有効期限の%および13日前。



私が注意したいいくつかのポイント







まとめ



そのため、VBAで動作するオプション計算機を入手しました。これは、オプションのプロパティの調査(さまざまな市場パラメーターに対する価格とギリシャの依存関係の図を作成する)と、より複雑なプログラムの取引と構築の両方に使用できます。



All Articles