计算呼叫选项的"到期时间"的简单代码是无限循环

Jol*_* .A 3 excel vba

我想通过使用以下循环来计算呼叫选项的"到期时间".请注意,optionbidprice是电子表格上打印的数字,并且已正确读取.必须为每个新的重新计算期权价格T,因此也是如此function0.也functionderived被重新计算每次迭代.

optionPrice = BSMOptPrice(opT, S, sigma, K, rf, q, T)

functionDerived = (-1) * ((S * Nd1accent * sigma * Exp(-q * T)) / (2 * Sqr(T))) + (q * S * ND1 * Exp(-q * T)) - (rf * K * Exp(-rf * T) * ND2)

Do Until function0 = 0.1       
    function0 = optionBidPrice - optionPrice        
    Tnext = T - (function0 / functionDerived)        
    T = Tnext        
Loop        

calculateOptionExpiration = Tnext  
Run Code Online (Sandbox Code Playgroud)

我猜这个0.1数字太不现实了,循环找不到合适的T价值.

你怎么看?

Eri*_* J. 9

使用浮点数永远无法精确表示值0.1.您需要测试该值是否在0.1左右小范围内.请注意,对于任何浮点相等比较都是如此.

有关深入解释,请参阅为什么0.1在浮点中不存在