【问题标题】:Root not bracketed / american option implied volatility / R根不括起来 / 美式期权隐含波动率 / R
【发布时间】:2017-12-08 14:48:08
【问题描述】:

当我应用以下格式的美国期权隐含波动率函数时:

 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)

}

我收到以下错误:美国选项ImpliedVolatilityEngine 中的错误(类型、值、基础,:

../../../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 [with F = QuantLib::{anonymous}::PriceError; Impl = QuantLib::Brent; QuantLib::Real = double]':根未括起来:f[1e-007,4] -> [2.230734e+000,2.306800e+001]

这很奇怪,因为当我手动插入 IV 值时会收到它们。

数据集如下所示:

enter image description here

当我手动插入值时,我会收到每一行的值。

感谢您的帮助!本

【问题讨论】:

    标签: r options quantlib volatility


    【解决方案1】:

    自从我十五年前(!!)开始 RQuantLib 以来,我已经回答了六次这个问题。问题真的纯粹是数字问题,您无能为力。底层 QuantLib 库无法解决为您提供的定价参数寻找隐含波动率的一维问题。不多也不少。

    我建议学习 R 的 try()tryCatch() 来编写处理错误的代码。

    【讨论】:

    • 感谢您的回复!为什么我在手动输入值时会收到值?我试图理解直觉。谢谢!
    • 也许你的代码是错误的,因此你质疑不适用?减少到一个minimally verifiable complete example
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多