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

使用R中的RQuantlib转换为日转换的到期时间(TTM),r,quantlib,R,Quantlib,我使用R中的RQuantlib包来计算隐含波动率。作为函数EuropeanOptionImpliedVolability的输入,我使用TTM天数除以365。但如果我使用产出隐含波动率来计算期权价格,使用手工制作的Black-Scholes函数,我会以不同的值结束 我发现原因在于europeanOptionImpliedVolatilityEngine,它使用转换来转换输入的小数年 int(maturity*360 + 0.5); 资料来源: 因此,在某些情况下,传递给C代码函数的TTM值相差1

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

我发现原因在于
europeanOptionImpliedVolatilityEngine
,它使用转换来转换输入的小数年

int(maturity*360 + 0.5);
资料来源:

因此,在某些情况下,传递给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)代替这种异常现象吗?希望有人听

> P>函数可能会被扩展,这样你就可以选择一个日间计数惯例,如果你熟悉C++,可以修补和重新编译rQuiqLB。
同时,我担心解决这个问题的方法也是使用days/360。这意味着你还必须调整你的投入率和产出波动率;您希望满足的关系是r360 t360=r365 t365(根据您的r365,您将从中获得作为输入传递的r360)和sigma2360=sigma2365 t365(根据返回的sigma360,您将从中获得sigma365)。

回答得不错。我在一张问题单上说了一些类似的话(虽然不太精炼),大概是从这里的OP得到的。@LuigiBallabio在更改C函数后尝试重新编译。它失败了,可能需要boost/quantlib-cpp-lib,但我的路径一团糟,需要做一些工作。因此,我暂时同意你的想法。@DirkEddelbuettel是的,我已经打开了这个问题。