デリバティブ偏愛家の日記

Pythonでオプションの理論価格とIVを計算する

Cドライブを漁ってたら出土したので、もしお探しの方がいたらどうぞ。

今回はExcel編と異なり、プレーンバニラオプションを対象としています。

 

準備・ライブラリを導入する

対数関数や累積確率密度関数を計算するために、先にライブラリの追加が必要です。今回は「numpy」と「scipy」を使用します。

numpyはあまりにメジャーなので、Pythonを入れる時に勢いで入れてる人もいるかと思います。配列操作をメインに色々出来るライブラリです。

scipyは数学、統計用の関数がメインのライブラリです。

 

共通する関数を作成する

累積確率密度関数の計算までは色々な場面で使うので、関数化しておきます。先に変数だけ説明しておきましょう。

  • S:原資産価格
  • K:権利行使価格
  • r:無リスク金利
  • t:残存時間(年換算)
  • V:ボラティリティ(年率)

 

理論価格の計算

CallとPutで使い分け出来るように、”CP”というパラメータで管理出来るようにしてみました。CPが0の時はCallとして、そうでない場合はPutとして計算します。システムの安定性とか考えたらPutは1の時とか限定した方が良いんでしょうね。

 

IVの逆算

今回はプレーンバニラオプションなので、原資産価格がどこにあろうとボラが高ければ理論価格は上がる、という単純な構造なので、IVを1%から少しづつ上げていき、計算結果が市場価格と超えた時点でのボラティリティをIVとして返す方式です。より正確に計算したい場合は、超えた時点と超える一つ前での乖離を使って按分すれば出せますが、まあ0.1%刻みで増やしているので、そこまで厳密な計算はトレーダー的には要らないかな、という感じはします。Vegaの大きい超長期オプションを大量に抱えているとか、リスク管理部門です、という人はやるべきでしょうが、そんな人たちがこのブログを見ている確率は…

さて、プレーンバニラはバイナリーオプションとは異なり、ATM近傍でも精緻に計算出来ます。まあ当然ですが逆にDeep OTMはVegaが非常に小さいので正確な値は出ません。ただ、スマイルカーブを描くと果ての権利行使価格のIVがガタガタするのは、こういう要因よりは、そもそも市場全体での建玉、流動性が少なく、データの信頼性が低いのが主要因かとは思います。

Tagged on:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です