Price European double barrier options using Black-Scholes option pricing model
Price = dblbarrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)
Price = dblbarrierbybls(___,Name,Value)
Compute the price of a European for a double knock-out (down and out-up and out) call option using the following data:
Rate = 0.05; Settle = '01-Jun-2018'; Maturity = '01-Dec-2018'; Basis = 1;
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', Maturity,'Rates', Rate, 'Compounding', -1, 'Basis', Basis);
AssetPrice = 100; Volatility = 0.25; StockSpec = stockspec(Volatility, AssetPrice);
Define the double barrier option.
LBarrier = 80; UBarrier = 130; Barrier = [UBarrier LBarrier]; BarrierSpec = 'DKO'; OptSpec = 'Call'; Strike = 110;
Compute price of option using flat boundaries.
PriceFlat = dblbarrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity, BarrierSpec, Barrier)
PriceFlat = 1.1073
Compute price of option using two curved boundaries.
Curvature = [0.05 -0.05]; PriceCurved = dblbarrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity, BarrierSpec, Barrier, 'Curvature', Curvature)
PriceCurved = 1.4548
StockSpec— Stock specification for underlying asset
Stock specification for the underlying asset, specified by the
StockSpec obtained from
stockspec handles several
types of underlying assets. For example, for physical commodities the price
StockSpec.Asset, the volatility is
StockSpec.Sigma, and the convenience yield is
OptSpec— Definition of option
'put'| string array with values
Definition of the option as
'put', specified as a
1 cell array of character
vectors or string array with values
Strike— Option strike price value
Option strike price value, specified as an
1 matrix of numeric
values, where each row is the schedule for one option.
Settle— Settlement or trade date
Settlement or trade date for the double barrier option, specified as an
1 matrix using serial
date numbers, date character vectors, or datetime objects.
ExerciseDates— Option exercise dates
Option exercise dates, specified as an
1 matrix of serial date
numbers, date character vectors, or datetime objects.
For a European option, the option expiry date has only one
ExerciseDates value, which is the maturity of
BarrierSpec— Double barrier option type
'DKO'| string array with values of
Double barrier option type, specified as an
1 cell array of character
vectors or string array with the following values:
'DKI' — Double Knock-In
'DKI' option becomes effective when the
price of the underlying asset reaches one of the barriers. It
gives the option holder the right but not the obligation to buy
or sell the underlying security at the strike price, if the
underlying asset goes above or below the barrier levels during
the life of the option.
'DKO' — Double Knock-Out
'DKO' option gives the option holder
the right but not the obligation to buy or sell the underlying
security at the strike price, as long as the underlying asset
remains between the barrier levels during the life of the
option. This option terminates when the price of the underlying
asset passes one of the barriers.
|Option||Barrier Type||Payoff If Any Barrier Crossed||Payoff If Barriers Not Crossed|
|Call/Put||Double Knock-in||Standard Call/Put||Worthless|
|Call/Put||Double Knock-out||Worthless||Standard Call/Put|
Barrier— Double barrier value
Double barrier value, specified as
1 matrix of numeric
values, where each element is a
vector where the first column is Barrier(1)(UB) and the second column is
Barrier(2)(LB). Barrier(1) must be greater than Barrier(2).
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
Price = dblbarrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,Maturity,BarrierSpec,Barrier,'Curvature',[1,5])
'Curvature'— Curvature levels of the upper and lower barriers
(default) | matrix
Curvature levels of the upper and lower barriers, specified as the
comma-separated pair consisting of
'Curvature' and an
1 matrix, where each
element is a
2 vector. The
first column is the upper barrier curvature (d1) and
the second column is the lower barrier curvature
d1 = d2 =
0 corresponds to two flat
d1 < 0 < d2 corresponds to an exponentially growing lower boundary and an exponentially decaying upper boundary.
d1 > 0 > d2 corresponds to a convex downward lower boundary and a convex upward upper boundary.
Price— Expected prices for double barrier options
Expected prices for double barrier options at time 0, returned as a
A double barrier option is similar to the
standard single barrier option except that it has two barrier levels: a lower
LB) and an upper barrier (
The payoff for a double barrier option depends on whether the underlying asset remains between the barrier levels during the life of the option. Double barrier options are less expensive than single barrier options as they have a higher knock-out probability. Because of this, double barrier options allow investors to reduce option premiums and match an investor’s belief about the future movement of the underlying price process.
The analytical formulas of Ikeda and Kunitomo approach pricing as constrained by curved boundaries.
This approach has the advantage of covering barriers that are flat, have exponential growth or decay, or are concave. The Ikeda and Kunitomo model for pricing double barrier options focuses on calculating double knock-out barriers.
 Hull, J. Options, Futures, and Other Derivatives. Fourth Edition. Upper Saddle River, NJ: Prentice Hall, 2000.
 Kunitomo, N., and M. Ikeda. “Pricing Options with Curved Boundaries.” Mathematical Finance. Vol. 2, Number 4, 1992.
 Rubinstein, M., and E. Reiner. “Breaking Down the Barriers.” Risk. Vol. 4, Number 8, 1991, pp. 28–35.