2

I'm currently trying to model the IV curve for calls and puts on SPY using the Black-Scholes model with dividends. I'm able to calibrate the risk-free rate and dividends so that both ATM IVs match, but no matter what I do, there's always an IV discrepancy that gets bigger and bigger toward the wings. Is there an effect I'm not accounting for here? Could it be because options on SPY are American style?

Alex
  • 81
  • 1
  • 6
  • 2
    Hi. Could you please provide more details regarding your algorithm, maybe even the relevant code? – Kermittfrog Aug 25 '21 at 17:05
  • It's in Python, I fetch the Bid-Ask for each strike from Yahoo and find the implied volatility that leads to the mid-price using the brentq algorithm and the BS analytical formula as input, then I calibrate risk-free rate and dividends so that ATM vols match. Come to think of it, I'm not as precise as I could be with time to expiration, I use the number of business days until expiration, I don't go down to the minute, could it lead to this effect? – Alex Aug 25 '21 at 18:49
  • 1
    I do not understand what you mean with ‚calibration‘, There are too many moving parts without a look at your code IMHO. – Kermittfrog Aug 25 '21 at 19:19
  • The word is fancier than it should be, I just set them by hand so that ATM vols match. Here's my code if you want to take a look: https://github.com/almalh/iVol/blob/main/ivol.ipynb – Alex Aug 25 '21 at 21:57
  • 1
    Didn't check your code but put-call parity doesn't hold for American options. – fes Aug 26 '21 at 07:11
  • 1
    Hi, I had a look at your code; the problem is most probably in the data as you and @fesman already pointed out: SPY is american, hence European-PCP will not hold, sorry. – Kermittfrog Aug 26 '21 at 11:27
  • 1
    This is one reason you would usually de-americanize as explained in the answer to your your question about IV models. Also, usually one filters the input data as not all quotes will be reliable. On top of that, generally you don't use end of day but somewhat before close to avoid the noise just before close. Put call parity is a neat theoretical idea but in practice building vol surfaces is quite difficult. – AKdemy Aug 28 '21 at 22:24

1 Answers1

1

Thanks to all for the input. After a bit of research, I replaced the Black-Scholes pricer with a binomial tree pricer that includes early exercise and the known dividend in September, using what's explained in van der Hoek (2006) I chose a drift rate such that ATM vols match and put-call vols now match pretty closely even toward the wings. I definitely underestimated the effect that early exercise has.

Alex
  • 81
  • 1
  • 6