使用 R 中的 RQuantlib 将到期时间 (TTM) 转换为日转换

Time to maturity (TTM) shifted for day conversion using RQuantlib in R

我在 R 中使用 RQuantlib 包来计算隐含波动率。作为函数 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) 过去而不是出现这种异常情况吗?希望有人倾听。

可能应该扩展该功能,以便可以选择一种天数约定,如果您熟悉 C++ 并且可以修补和重新编译 RQuantLib,这就是方法。

同时,恐怕您也可以使用 days/360 来解决该问题。这意味着您还必须调整输入率和输出波动率;你要满足的关系是 r360 t360 = r365 t 365(根据你的 r365,你将从中得到 r360 作为输入传递)和 sigma2360 t360 = 西格玛2 365 t365(根据返回的 sigma360[=28,您将从中得到 sigma365 =]).