Skip to content
All library documents

Diagnosing an Implied Volatility Mismatch from a Rate Input

Article Quant Q&A · Author: Ravi

Summary

The document investigates why an American call’s market ask price cannot be reconciled with an implied volatility calculation using RQuantLib, while Yahoo Finance reports a volatility estimate. The author compares the market quote with model prices and suspects either a different pricing model or an input error. The accepted answer identifies the risk-free rate as the likely problem: the supplied value, 0.3070664, represents roughly 30%, whereas the answer recommends trying 0.3%.

This exchange illustrates how a unit or decimal-place error in a pricing input can make implied-volatility solving fail, even when the market quote is believed to be correct. The document does not report the result of rerunning the calculation with the adjusted rate, so it does not verify the resulting implied volatility or fully reconcile the displayed quote. It offers a diagnosis of this particular mismatch rather than a general comparison of Yahoo Finance and QuantLib methods.

Key ideas

  • The implied-volatility calculation fails when the model cannot match the supplied option price over its search range.
  • The accepted answer points to a risk-free rate entered as about 30% instead of 0.3%.
  • Pricing inputs must use the expected rate units and scale.
  • The document does not show whether the suggested rate reproduces Yahoo Finance’s volatility.

Tags

Full text
# Yahoo Finance Implied Volatility Calculation


# Yahoo Finance Implied Volatility Calculation












On 5/16/16 AXP stock closed with a price of 64.07. Yahoo Finance reports an implied volatility of 20.58% for this out of the money call option:

```
    --------------------------------------------------------------------------------
   Strike Contract           Last  Bid  Ask  Change %Change Volume Open   Implied
          Name                                                     Intrst Voltlty
    --------------------------------------------------------------------------------
    65.00  AXP161021C00065000 2.85  2.96 3.05 -0.15 -5.00%    9     1773   20.58%

    --------------------------------------------------------------------------------
```

Tried to see if I could get an implied volatility close to what Yahoo Finance got using this RQuantLib call:

```
AmericanOptionImpliedVolatility(type="call", value=3.05, underlying=64.07,
    strike=65, dividendYield=0.02189756, riskFreeRate=0.3070664,
    maturity=0.4308695, volatility=0.1817867)
```

Instead of getting an implied volatility, I got this error:

```
Error in americanOptionImpliedVolatilityEngine(type, value, underlying,  :
    root not bracketed: f[1e-07,4] -> [3.468527e+00,4.929779e+01]
```

Pricing this option using RQuantLib with Yahoo suggested volatility of 0.2058 produces a higher option price of 7.48:

```
AmericanOption(type="call", underlying=64.07, strike=65,
    dividendYield=0.02189756, riskFreeRate=0.3070664,
    maturity=0.4308695, volatility=0.2058, engine="CrankNicolson")
value  delta  gamma   vega  theta    rho divRho
7.4888 0.8003 0.0313     NA     NA     NA     NA
```

RQuantLib's call to compute implied volatility fails because the option price of 3.05 if far less than 7.48. I don't have a choice on what option price I enter to compute implied volatility. I have to use the market price. The market price reported by Yahoo could be wrong. Checking with Google Finance and CBOE option quote for this option shows that the Ask price of 3.05 is correct.

With a market price of 3.05, how does Yahoo Finance manage to compute implied volatility of 20.58%? Is it possibly using a different model than what is used by QuantLib? Or, is there something wrong in my input to RQuantLib?

## Answer by onlyvix.blogspot.com (score 7, accepted)

https://quant.stackexchange.com/a/26065

Probably because your risk-free rate is 0.3070664 (30%) Try 0.3%

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.