1

RQuantlib在 R 中使用包来计算隐含波动率。作为函数的输入,EuropeanOptionImpliedVolatility我使用 TTM 天数除以 365。但如果我使用输出的隐含波动率使用手工制作的 Black Scholes 函数计算期权价格,我会以不同的值结束。

我发现原因在于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 回答