« 2007年5月 | トップページ | 2007年10月 »

2007年6月に作成された記事

2007年6月30日 (土)

Perlを使ってオプション価格を求める

日経平均オプション取引をするにあたり、オプションの理論価格を求めたりIVを求めたりするのにツールがあったほうがよいらしい。Excelのものはどこかにあるのだろうけど、せっかくPerlを使えるんだし、Perlでそういうモジュールがないかどうか探してみた。

CPANで見つかったのは下の2つ。

どちらもブラックショールズモデルを使っている。例によってインターネット上であまり情報が見つからないこともあって自分でこれらの2つを試してみたが、結論からいうとどっちもどっちであり、組み合わせて使うなどの工夫が必要とわかった。

Finance-Options-Calcは、Activeperlでppmを使ってinstallでき、原資産価格、行使価格、残存日数、Volatility、金利の上方を入力して、理論価格やデルタ/セータ/ロー/ガンマ/ベガを計算することが可能。オプション価格からIVを計算することはできない。

一方、Math-Business-BlackScholesは、ppmでinstallできず、Windowsで使うならcygwinのperlとして使う必要がある。Math-CDFというモジュールが必要であり、これもppmなしである。オプション価格からIVを計算したり、過去の値動きからHVを計算することもできる。ただし、デルタ/セータ/ロー/ガンマ/ベガを計算する機能はない。

マーケットスピードのシミュレータを使い、同じ値を入力して同じ値が帰ってくるかどうかテストしてみた。マーケットスピードは残存日数として休日の考慮がなく、365日計算となっており、自作プログラムも同様にした。IVなどを入力値としてオプション理論価格を求めたところ、Math-Business-BlackScholesはマケスピと同じ値となったが、Finance-Options-Calcは10~20円程度違う値となってしまい、どっちが正しいかわからない状況となった。モジュールのソースを見比べて調べたところ、累積正規分布を求める処理に違いがあることがわかり、Finance-Options-Calcで_normという関数で求めているものを、Math-Business-BlackScholesで使っているMath-CDFのpnormと置き換えたところ、Finance-Options-Calcもマケスピと同じ値が算出できた。デルタ/セータ/ロー/ガンマ/ベガも値が一致した。

以上より、IVやHVを求めるときにはMath-Business-BlackScholesを使用し、デルタ/セータ/ロー/ガンマ/ベガを求めるときには、pnormで改造したFinance-Options-Calcを使えばいいことになる。

他に気づいた相違点として、Math-Business-BlackScholesにはブラックショールズの拡張として対象証券からのキャッシュ・フローを考慮することができる( $fractional_yield として指定。省略すると0となる)。そういえば、入力データの指定方法としてパーセントにしたものを使うか、パーセントにしないで小数点表記のもの(100倍しない)ものを使うかという違いもある。後は、残存日数として日を指定するか年を指定するかという違いもある。Finance-Options-Calcは日を指定するが、実際は内部処理で365で割っているだけだが。

しかし、デルタ・ニュートラル・ヘッジ戦法は難しいと感じる。もう少し簡単な戦略で損失限定のポジを作って実践することから試してみるか。水曜日あたりはIVが高くなっていたので売り時だったなぁ。

| | コメント (0) | トラックバック (0)

« 2007年5月 | トップページ | 2007年10月 »