# 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?

• How did you calculate maturity? In MATLAB, (datenum('10/21/2016') - datenum('05/16/2016'))/365 = 0.432877. I see same value in Excel too. – Maddy Oct 5 '18 at 20:25