1

R のパッケージを使用しRQuantlibてインプライド ボラティリティを計算しています。関数への入力として、EuropeanOptionImpliedVolatilityTTM 日数を 365 で割った値を使用します。しかし、出力のインプライド ボラティリティを使用して、手作りのブラック ショールズ関数を使用してオプション価格を計算すると、異なる値で終了します。

europeanOptionImpliedVolatilityEngine変換を使用して入力された小数年を変換するに原因があることがわかりました

int(maturity*360 + 0.5);

ソース: RQuantlib github

したがって、これにより、C コード関数に渡される TTM 値が 1 日の差でシフトすることになり、私の場合はデータの約 70% がシフトされました。

x=OptGreeks$TTM/365
y=floor(x*360+0.5)
z=OptGreeks$TTM - y
table(z)

出力

z
   0    1 
2636 4910 

これが行われている理由と、この異常の代わりに正しい日数 (TTM) を取得する手段はありますか? 誰かが聞いてくれることを願っています。

4

1 に答える 1

1

この関数はおそらく、日カウント規則を選択できるように拡張する必要があります。これは、C++ に精通しており、RQuantLib にパッチを適用して再コンパイルできる場合に行う方法です。

それまでの間、この問題を回避するには、days/360 も使用してください。これは、入力レートと出力ボラティリティも調整する必要があることを意味します。満たしたい関係は、r 360 t 360 = r 365 t 365 (r 365 を指定すると、r 360入力として渡されます) および sigma 2 360 t 360 = sigma 2 365 t 365 (から返された sigma 360を指定すると、 sigma 365が得られます)。

于 2015-05-17T19:00:31.763 に答える