I noted that implied volatility (IV field) from pandas.Options class is very different (especially, for out of money options) than what I compute with Black-Scholes model. (risk free rate is pulled from FRED and matches the time to expiry on the option).

Can anyone describe or provide references on how pandas.Options() computes its IV?

An example. as of 11/13/15: MSFT's close is 52.84, call's close 5.80, expiry 12/04/2015 (0.0575 year), K=48.5, r=0.0001 (rate). pandas IV = 0.3569, my BS-implied IV=0.6712. Difference is 0.3143 (mine is greater).

Another example. Without getting into code (unless someone asks for it), here is a visual for the context background. This is for educational purpose, not live trading.

  • Left-most image is my BS-implied IV.
  • Center image is IV from pandas.Options()
  • Right-most image is the difference between the two.

My calculations match pandas, but only for in the money and at the money, not out of money, where my IV values are very high (while pandas are nearly zero).

Below are These are computed for MSFT call options using 10/28/15 Yahoo data.

Please let me know, if further clarification is needed. Thanks in advance.

enter image description here

  • 1
    $\begingroup$ I suggest you give the parameters of one option where you believe the IV is clearly off. Give C (or P),S,T,R,and K. $\endgroup$ – Alex C Nov 14 '15 at 1:22
  • $\begingroup$ Alex, thanks for reply. Just want to know the formula that pandas.Options() uses. If my parameters are of use to you, I will add them in a moment. Naturally, it's a call option for MSFT, as stated above :) $\endgroup$ – Oleg Melnikov Nov 14 '15 at 1:52
  • $\begingroup$ Done :) Please see figures added $\endgroup$ – Oleg Melnikov Nov 14 '15 at 2:12
  • $\begingroup$ In case you don't get any response here (maybe nobody is familiar with the package?), you might check the source code yourself. It's an open source package. $\endgroup$ – SmallChess Nov 14 '15 at 11:06
  • $\begingroup$ First you are right that your IV figure is close to correct and the other is suspicious. But then, I don't understand where this pandas.Options() class comes from as it is not documented in my references on Pandas. Is it perhaps this blog.nag.com/2013/10/… which, however uses the nag4py library ? $\endgroup$ – Alex C Nov 14 '15 at 15:01

I don't see such a package in pandas, but MSFT options are American, so you need a PDE grid to solve for the IV. Black Scholes is for European options. MSFT has dividends so American Price > European Price. If it did not have dividends, then it would be safe to say that MSFT is very easy to borrow, so the European should be very close to the American price barring any weird funding irregularities (I once saw AAPL imply a negative dividend before they had dividends mostly due to strange stuff with funding).

In your case MSFT did have a 0.36 dividend that went ex on Nov 17, 2015 - that must factor into the price - especially since your option is fairly deep ITM. The likelihood of early expiry is very high and would occur on Nov 16, 2015 - so almost as if this is a 3 day option.

Try to back out the European implied vol as if this were a three day option - should get you closer. Really you want the expected time to exercise which should be slightly longer than 3 days.


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.