Options with Varying Strikes and Variable Rates

Overview

Most call and put options are issued with one strike price that holds for all times during the options’ life if they are American style, or only at expiry if they are European-style, or only on certain dates if they are Bermudan-style.  FINCAD provides several functions for each of these option types.  However, there are instances where options have:

·         time-varying strike prices

·         lock-out periods

·         exercise windows

FINCAD provides functions that take into account these characteristics.  They have the extension “_strike” in their name (e.g.  aaBin_strike()).

For the valuation of options, it is standard to assume that the risk-free rate is constant over the life of the option.  This is an assumption in the Black-Scholes formula, which is used for European options, and the Cox-Rubinstein Binomial model, which is often used for American and Bermudan-style options.  It is possible to modify these methods to allow for time varying rates.  This modification is especially useful for long-dated options and FX options in particular (this will be discussed in more detail below).  FINCAD functions that allow for variable rates have the extension “_curve” in their name.  (e.g.  aaBin_curve()).

We note that, often options with these types of characteristics are warrants or employee stock options (options issued by a company on its own stock).  If this is the case, we encourage users to look at the specialized warrant functions that allow for the characteristics described above and, further, account for any dilution effect associated with an exercise of the warrants (or employee stock options).

Formulas & Technical Details

Modifying the binomial model for variable rates

Though perhaps not well-known, it is very simple to modify the standard binomial tree to account for variable rates.  Consider one step of the binomial tree between a node at  and  (a move up) and  a move down. 

Let

 be the volatility and

 the time step (which is equal to the option time divided by the number of time steps). 

Now

 and

. 

Let

 and

.

We note that these values are independent of any rates.  Now, given a discount factor curve, it is possible to interpolate the discounting rate, , associated with each time step.  Suppose, for simplicity,  is a continuous rate and let .  The probability of moving down to  is given by  and the probability of moving up is equal to .

The important thing to note is that as rates change, the stock prices (or FX rates, or commodity prices, ...) are not altered.  The only thing that is altered in the tree is the probabilities.  Hence, the standard binomial method can be altered to account for time varying rates by:

·         calculating the discounting rate at each time step

·         calculating new probabilities at each time step

·         discounting the option at the given rate at each time step.

We note that if there is a second curve for the holding cost (in commodities) or a foreign curve (in FX), one also needs to calculate this rate at each time step.

Modifying the binomial model for variable strikes

It is also fairly straightforward to modify the binomial tree for variable strike prices.  At any given iteration, one simply needs to determine the strike price that applies (if one does at all).  Given this strike price, at any time step, one can check the value of exercising a call or a put against the value of retaining the option.

For a more detailed discussion concerning binomial trees, we suggest that the reader refer to the binomial tree document contained in the product.

FINCAD Functions

American-style

aaBIN_strike() :(price_u, strike_tbl, d_exp, d_v, vlt, rate_ann, acc_rate, cost_hldg, acc_cost_hldg, option_type, iter, stat)

Calculates the fair value and risk statistics for an American-style call or put option with time varying strike prices and any combination of lock-out periods and/or exercise windows.

 

aaBIN_curve_strike():(price_u, strike_tbl, d_exp, d_v, vlt, df_crv_std, df_crv_hld, intrp, option_type, iter, stat)

Calculates the fair value and risk statistics for an American-style call or put option with time varying strike prices and any combination of lock-out periods and/or exercise windows.  This function allows for variable rates.

American-style, Dividend Paying Equity

aaBIN_strike_dcf() : (price_u, strike_tbl, d_exp, d_v, vlt, rate_ann, acc_rate, div_obj, option_type, iter, stat)

Calculates the fair value and risk statistics for an American-style call or put option with time varying strike prices and any combination of lock-out periods and/or exercise windows.  The underlying equity may pay a discrete dividend.

 

aaBIN_curve_strike_dcf() :(price_u, strike_tbl, d_exp, d_v, vlt, df_crv_std, div_obj, intrp, option_type, iter, stat)

Calculates the fair value and risk statistics for an American-style call or put option with time varying strike prices and any combination of lock-out periods and/or exercise windows.  This function allows for variable rates.  The underlying equity may pay a discrete dividend.

Bermudan-style

aaBerm_strike() :(price_u, ex_obj, d_exp, d_v, vlt, rate_ann, cost_hldg, acc_cost_hldg, option_type, iter, stat)

Calculates the fair value and risk statistics for an Bermudan-style call or put option with time varying strike prices.

 

aaBerm_curve_strike() :(price_u, ex_obj, d_exp, d_v, vlt, df_crv_std, df_crv_hld, intrp, option_type, iter, stat)

Calculates the fair value and risk statistics for an Bermudan-style call or put option with time varying strike prices.

Bermudan-style, Dividend Paying Equity

aaBerm_strike_dcf() :(price_u, ex_obj, d_exp, d_v, vlt, rate_ann, div_obj, option_type, iter, stat)

Calculates the fair value and risk statistics for an Bermudan-style call or put option with time varying strike prices.  The underlying equity may pay a discrete dividend.

 

aaBerm_curve_strike_dcf() :(price_u, ex_obj, d_exp, d_v, vlt, df_crv_std, div_obj, intrp, option_type, iter, stat)

Calculates the fair value and risk statistics for an Bermudan-style call or put option with time varying strike prices.  The underlying equity may pay a discrete dividend.

 

Description of Inputs

Input Argument

Description

price_u

Current value of the underlying asset

ex

Strike price

d_exp

Expiry date of the option

d_v

Value date

vlt

The annualized volatility of the underlying asset (not an input in the implied volatility functions).

rate_ann,

cost_hldg

Also denoted rate1 and rate2, respectively.  These rates are quoted on an annually compounded, Act / 365 (fixed) basis.

1.       If the underlying is an equity, rate1 is the relevant risk-free rate.  Rate2 is the annualized dividend yield.

2.       If the underlying is a forward or futures price, rate2 should be set equal to the risk-free rate1.

3.       If the underlying is an FX (foreign exchange) rate, and quoted on a domestic per foreign basis, rate1 should be the risk-free domestic rate and rate2 the risk-free foreign rate.

4.       If the underlying is an FX rate, and quoted on a foreign per domestic basis, rate1 should be the risk-free foreign rate and rate2 the risk-free domestic rate.

5.       If the underlying is a commodity, then rate2 should be set to the annualized holding cost of the commodity, including storage and insurance costs as well as marginal convenience value.

df_crv_std, df_crv_hld

These are discount factor curves (date, discount factor).  If the underlying is an FX rate, and quoted on a domestic per foreign basis, df_crv_std should be the domestic curve and df_crv_hld the foreign curve.  If the quoted basis is foreign per domestic the curves should be switched.  If the underlying is a commodity, then df_crv_std is the risk-free curve and df_crv_hld should be the holding cost discount factor curve (including storage and insurance costs as well as marginal convenience value).

iter

The number of steps of the binomial tree.

option_type

The type of option:

1.       call

2.       put

stat

See the description of the outputs.

div_obj

Dividend payment table. The table has two columns, the dividend payment dates (left column) and the corresponding dividend payment amounts (right column). Only used in aaBIN*_dcf() and aaBerm*_dcf().

Strike_tbl

A 3 column table, start date, end date, strike price.  This table is used in all of the aaBin*_strike* functions.

Ex_tbl

A 2 column table, date, strike price.  This table is used in all of the aaBerm*_strike* functions.

 

Description of Outputs

Output Statistic

Description

fair value

The fair value of the option.

delta

The rate of change in the fair value of the option per change in the current value of the underlying asset.  This is the derivative of the option price with respect to the current value of the underlying.

gamma

The rate of change in the value of delta per change in the current value of the underlying asset.  This is the second derivative of the option price with respect to the current value of the underlying.

theta

The rate of change in the fair value of the option per one day decrease in the option time.  This is the negative of the derivative of the option price with respect to the option time (in years), divided by 365.

vega

The rate of change in the fair value of the option per 1% change in volatility.  This is the derivative of the option price with respect to the volatility.

rho of rate

The rate of change in the fair value of the option per 1% change in the risk-free rate, rate_ann.  This is the derivative of the option price with respect to the risk-free rate.

rho of holding cost

The rate of change in the fair value of the option per 1% change in the holding cost, cost_hldg.  This is the derivative of the option price with respect to cost_hldg. If the underlying is futures, this statistic is not available.

For details about the calculation of Greeks, see the Greeks of Options on non-Interest Rate Instruments FINCAD Math Reference document.

 

Examples

Consider a call option on a stock that is locked-out for the first year, has a strike price of 40 for the next year, is locked out the third year and a strike price of 45 for the 4th and final year after that.  Suppose that today is the 1-Jan-2000, the stock price is 40, the volatility 20%, the risk-free rate is 5% and that the stock pays dividends at a rate of 2% (we are not going to run an actual dividend version though this is likely a better model for a dividend paying stock).  The following table (Strike_tbl) describes the exercise schedule.

Strike Table

effective date

terminating date

exercise price

1-Jan-2001

1-Jan-2002

40

1-Jan-2003

1-Jan-2004

45

If we run the function aaBin_Strike() with these parameters (and 200 time steps), we obtain a fair value of 5.6615.  For comparison, running the same option with a strike price of 40 in the 4th year, we obtain a value of 6.694 (not surprisingly, more valuable). 

 

 

Disclaimer

 

With respect to this document, FinancialCAD Corporation (“FINCAD”) makes no warranty either express or implied, including, but not limited to, any implied warranty of merchantability or fitness for a particular purpose. In no event shall FINCAD be liable to anyone for special, collateral, incidental, or consequential damages in connection with or arising out of the use of this document or the information contained in it. This document should not be relied on as a substitute for your own independent research or the advice of your professional financial, accounting or other advisors.

 

This information is subject to change without notice. FINCAD assumes no responsibility for any errors in this document or their consequences and reserves the right to make changes to this document without notice.

 

Copyright

 

Copyright © FinancialCAD Corporation 2008. All rights reserved.