I am using end of day options data and want to extract discrete dividend information contained in the option prices. I am doing this for ETFs like SPY where I know the dividend schedule. These are the steps I am doing:

  1. Create a "seed" div dictionary which has known div dates but approx. div values
  2. Let's say the 1st and 2nd div dates are 19-Mar-21 and 18-Jun-21. Find all options that expire >= 19-Mar and < 18-Jun. I get 4 expiries: 31-Mar, 16-Apr, 21-May, 18-Jun.
  3. For each expiry, I find the strike closest to the forward by finding min(callprice-putprice). I get the call and put options at this strike.
  4. I then minimise for Call implied vol - Put implied vol for a range of divs (0.5initialestimate to 1.5initialestimate) using the brentq algo to get the "optimal" multiplier.
  5. I average the multipliers I get for each expiry. This is the multiplier to be applied to the initial div estimate for first dividend date to get a final div estimate.
  6. I repeat this process to refine div estimates for all div dates.

I expected this process to yield results that were v tight. But doing this across several days yields a very wide range of estimates (Eg. For SPY, I am seeing estimate for Mar-21 div varying from 0.75 to 1.75 when actual div is likely to centre around 1.4)

Appreciate any thoughts/ inputs into this, including any alternative approaches I could try. I did find a relevant thread here: Implied Dividend from American Options (in practice) but didn't fully understand the implementation.

  • $\begingroup$ Keen to know if someone has implemented this: Kragt, Jac, Option Implied Dividends (June 2, 2017). Working paper, Available at SSRN: ssrn.com/abstract=2980275 or dx.doi.org/10.2139/ssrn.2980275 $\endgroup$
    – darkforce
    Commented Feb 15, 2021 at 18:37
  • 2
    $\begingroup$ Using at-the-money American options to calibrate the dividend is not a good idea as the call option will already have an early exercise premium (i.e. it will be worth more than the European equivalent). This means put/call parity doesn’t hold and its price is model dependent. Use deep in-the-money puts to calibrate the forward instead. $\endgroup$ Commented Feb 15, 2021 at 20:40


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.