当我以下列格式应用americanoptionimpliedvolatility函数时:
impliedvol_test_v1$IV <- NA
impliedvol_test_v1$`risk free rate` <- as.numeric(impliedvol_test_v1$`risk
free rate`)
for(iRow in seq(1,nrow(impliedvol_test_v1),1)){
typeTMP <- impliedvol_test_v1$type[iRow]
valueTMP <- impliedvol_test_v1$value[iRow]
strikeTMP <- impliedvol_test_v1$strike[iRow]
underlyingTMP <- impliedvol_test_v1$underlying[iRow]
dividendyieldTMP <- impliedvol_test_v1$`Dividend yield`[iRow]
riskfreerateTMP <- impliedvol_test_v1$`risk free rate`[iRow]
maturityTMP <- impliedvol_test_v1$maturity[iRow]
volatilityTMP <- impliedvol_test_v1$volatility[iRow]
impliedvol_test_v1$IV[iRow] <- AmericanOptionImpliedVolatility(typeTMP,
valueTMP,strikeTMP, underlyingTMP, dividendyieldTMP, riskfreerateTMP,
maturityTMP, volatilityTMP)
}
我收到以下错误:americanOptionImpliedVolatilityEngine中的错误(类型,值,底层,:
../../../ QuantLib-1.6.2 / ql / math / solver1d.hpp:202:在函数`QuantLib :: Real QuantLib :: Solver1D :: solve(const F&amp;,QuantLib :: Real,QuantLib :: Real,QuantLib :: Real,QuantLib :: Real)const [with F = QuantLib :: {anonymous} :: PriceError; Impl = QuantLib :: Brent; QuantLib :: Real = double]':root不括号:f [1e-007,4] - &gt; [2.230734e + 000,2.306800e + 001]
这很奇怪,因为我手动插入时会收到IV值。
数据集如下所示:
当我手动插入值时,我会收到每行的值。
感谢您的帮助!本
答案 0 :(得分:1)
自从我开始RQuantLib十五年(!!)之前,我回答了这个问题了六次。问题真的纯粹是数字的,你几乎无能为力。基础QuantLib库无法解决为您提供的定价参数找到隐含波动率的一维问题。不多也不少。
我建议您了解R try()
和tryCatch()
来编写应对错误的代码。