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) を取得する手段はありますか? 誰かが聞いてくれることを願っています。