使用LOG在相同公式上的宏与手动输出的差异

时间:2017-03-13 07:52:50

标签: excel excel-vba excel-formula derivative vba

这是一个非常奇怪的问题

我有一个生成Option(d1)的delta的宏:

Function dOne(UnderlyingPrice, ExercisePrice, Time, Interest, Volatility, Dividend)

    dOne = (Log(UnderlyingPrice / ExercisePrice) + (Interest - Dividend + (0.5 * Volatility ^ 2)) * Time) / (Volatility * (Sqr(Time)))

End Function

当我将值传递给它时,它会生成所需的输出:

Delta value using macro

但是,当我尝试在Excel中复制它时,它会提供完全不同的输出

Delta when values are passed manually

我知道手动生成的输出计算是正确的。 但是,所需的值是从VBA生成的值。

请建议我在这里缺少什么。

1 个答案:

答案 0 :(得分:2)

VBA中的Log功能是自然日志: ln(x)
公式中的LOG函数是log base 10: log 10 (x)

如果您想在VBA中使用log base 10,则必须使用对数标识来转换基数:

Log(x)/Log(10)

在你的情况下

dOne = (Log(UnderlyingPrice / ExercisePrice) / Log(10) + (Interest - Dividend + (0.5 * Volatility ^ 2)) * Time) / (Volatility * (Sqr(Time)))