2
$\begingroup$

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?

$\endgroup$
  • $\begingroup$ 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. $\endgroup$ – Maddy Oct 5 '18 at 20:25
6
$\begingroup$

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

$\endgroup$
  • $\begingroup$ Changed risk free rate to 0.3% and I get IV of 22.0163% which is close to value published by Yahoo Finance. Thanks. $\endgroup$ – Ravi May 17 '16 at 15:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.