Корень не заключен в скобки / американский вариант подразумевает волатильность / R
Когда я применяю функцию 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&, QuantLib::Real, QuantLib::Real, QuantLib::Real, QuantLib::Real) const [с F = QuantLib::{anonymous}::PriceError; Impl = QuantLib::Brent; QuantLib::Real = double]': корень не заключен в скобки: f[1e-007,4] -> [2.230734e+000,2.306800e+001]
Что странно, поскольку я получаю значения IV, когда подключаю их вручную.
Набор данных выглядит так:
введите описание изображения здесь
Когда я вставляю значения вручную, я получаю значения для каждой строки.
Спасибо за вашу помощь! Бен
1 ответ
Я отвечал на этот вопрос полдюжины раз с тех пор, как я начал RQuantLib пятнадцать с лишним лет (!!) назад. Вопрос действительно чисто цифровой, и вы мало что можете сделать. Базовая библиотека QuantLib не может решить одномерную проблему нахождения подразумеваемой волатильности для предоставленных вами параметров ценообразования. Не больше, не меньше.
Я рекомендую узнать о R's try()
а также tryCatch()
написать код, который справляется с ошибками.