With this article I want to show you how to create and price American options on an underlying that pays dividends – such as American stock options expiring after the ex-dividend date - in Excel using the open source QuantLib analytics library.
In my previous article I showed you how to calculate the fair price of an American option on an underlying that pays no dividends, using all 13 different models made available by QuantLib in Excel. Now I will turn my attention to the situation where the underlying pays discrete dividends between the option's inception and expiry dates.
I will discover that only 5 QuantLib models can cope with the situation and I will investigate the impact that the dividend payment date has on the option price, even after removing the time value of money effect by setting the interest rate to zero.
Setting a dividend payment
Picking up from where I left off with the spreadsheet containing the 13 QuantLib models that deliver valid prices for my one-year American put option on a Siemens stock, I change the value of cell H16 from 0 to 1, so that a discrete dividend amount of 1 € is paid on 17 Aug 2018.
The result is that cell D1 fails to produce the option price, quite expectably since my chosen Pricing Method of BaroneAdesiWhaleyApprox at cell E10 is not capable of handling dividends.
Finding which models can handle dividends
If I now go to sheet named Table containing the table of models with the respective prices, I notice that most pricing results have failed.
Only the following 5 models have survived the imposition of a non-zero dividend:
Ensuring proper model processing of dividend amount and payment date
I now remove the 8 models that are not up to the job, which leaves me with the following table:
But how can I know that these 5 healthy-looking models take indeed into account the dividend data and do not just return bogus numbers?
A simple test is to change the dividend amount and see if the calculated option prices change.
So I change the value in cell H16 of sheet Pricing from 1 to 2 and I observe that all prices in sheet Table do indeed change.
But it could still happen that some of these models wrongly treats the dividend amount in a European way, perhaps ignoring the exact payment time.
I can bolster my confidence in these models by performing one more, simple test: Changing the payment date in cell G16 of sheet Pricing and seeing if the table prices change.
The test turns affirmative but this may still be due to the models treating the impact of the dividend amount in a manner similar to that in the Black Scholes Merton analytic formula, where the forward compounded value of the dividend amount is subtracted from the underlying's forward, before that forward is used in the regular BS formula.
It is actually easy to check against such tricks by setting my yield curve with a zero flat rate. This effectively creates an economy where time has no effect on the value of money that is deterministically paid. In other words, receiving one dollar with certainty today is exactly the same as receiving it – also with certainty – tomorrow.So I set 0 in cell H5 of sheet Pricing and I repeat my previous test, which turns affirmative again.
Setting up a table that shows the dependence of option price on the dividend date
Being now in a "pure" world where the time value of money vanishes, I feel curious to investigate how the dividend payment time affects the option price.
I want to build a two-column table, where the left column contains the dividend payment dates and the right column the respective option price.First I edit cell E4 of sheet Pricing so that it links to the FDDividendAmerican model created in cell B23 of sheet Models. The result shown below indicates that the error in cell D1 is gone as expected and a valid option price is returned.
Since my option expires in one year, I opt for dates that increase in monthly intervals.
I can easily advance any given date by one month using the Deriscope function Add Period defined within the type Date.
The following video shows how I use the Deriscope wizard to create the mentioned function in a new sheet called OptionPriceByDivDate:
The resulting series of dates is shown below:
The date in cell A4 is created by the formula
which applies the function Add Period of type Date with the following two key-value pairs:
In order to calculate the corresponding option price, I must first create the objects of type Dividend Curve that correspond to these dividend payment dates.
For that, I can use the formula:
Where NewTable is a placeholder meant to be replaced by a 2x2 array derived from the range G15:H16 of sheet Pricing with the date cell replaced with the date on column A here.
So I replace NewTable with dsReplace(Pricing!$G$15:$H$16,2,2,1,1,A3) as shown below:
As you see, the formula returns the handle name &DivCrv_D3:4.2 the contents of which are displayed in the wizard. If I click on the lens sign of the key-value pair
I see the following contents Crv_D3:4.2
that verify that my selected object contains the dividend payment date of 16.03.2018 as expected.
Next I create the corresponding object of type Market as shown below:
As you see, the formula returns the handle name &Mkt_C3:4.1 the contents of which are displayed in the wizard. The element on the far right is an object displayed as
which is a visual verification that the correct Dividend Curve object is included in the currently selected Market object. Finally I enter the formula that returns the option price for the given Market object as follows:
By pasting the formulas to the rows below, I end up with the final table of option prices wrt dividend payment dates:
Dependence of the dividend contribution to the put option price on the dividend payment time
I want to isolate that part of the option price that is due to the dividend.
I achieve this by forming the difference between each option price and the price of an option where the underlying pays no dividends.
For the currently chosen put option, the following table and chart is produced:
One concludes that the contribution from the dividend payment to the price of the put option is positive - around 45 basis points – but stays almost flat as the dividend payment time changes.
Dependence of the dividend contribution to the call option price on the dividend payment time
Next I would like to measure the same effect for a call option.
I only need to change the Direction specified in cell B13 from Put to Call.
The result is as follows:
One concludes that the contribution from the dividend payment to the price of the call option is negative, with an absolute value that decreases from 55 to 20 basis points as the dividend payment time approaches the option expiry.
Conclusion and interpretation
Dividend timing affects the price of call options but hardly that of put options when the interest rate effect has been ruled out.
One may understand this behavior by realizing that a dividend payout causes an immediate drop of the underlying price.
Think of the new lower underlying price as the sum of two perfectly correlated, but separate components: 1) The underlying price as it was before the dividend flow and 2) a negative price that equals in absolute value the drop experienced by the underlying price due to the dividend flow (For simplicity I do not mention here the ex-dividend date).
Viewing the absolute value of the second component in isolation under a risk neutral world assumption, it keeps being diffused with a zero drift but due to convexity attains higher values at a faster rate than lower values. This is sensible as higher values are unbounded whereas lower values are bounded by zero.
Stated differently, the price drop propagates in the future with a bias towards higher values.
Also because the price drop evolution is perfectly correlated with the underlying price evolution, it follows that the price drop evolves so that it is higher when the underlying price is also higher (the regime where the call payout is non-zero) and is lower when the underlying price is also lower (the regime where the call payout is zero).
Therefore higher realizations of the propagated drop size fall within the call payoff regime and thus affect the call payoff amount. On the contrary, lower realizations fall outside the call payoff regime and thus cannot affect the call payoff amount (which stays equal to zero regardless of the drop).
The opposite happens with the put option, which receives contribution only from the lower realizations of the evolved drop.
The longer a price drop due to a dividend payment is propagated towards the future, the more it impacts the future payoff of a call option, but has only a limited effect on the future payoff of a put option.
So the earlier a certain dividend amount is paid, the higher its impact on a call option, whereas a put option is not affected.
You may download the spreadsheet produced with the above steps here.
Feel free to contact me if you want to share any thoughts with regard to this product or if you want to request any particular features. Contact info and social media links are available at my web site https://www.deriscope.com