barrierbybls
Price European barrier options using Black-Scholes option pricing model
Syntax
Description
Price = barrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)
Note
Alternatively, you can use the Barrier object to price
            Barrier options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.
Price = barrierbybls(___,Name,Value)
Examples
Compute the price of an European barrier down out call option using the following data:
Rates = 0.035; Settle = datetime(2015,1,1); Maturity = datetime(2016,1,1); Compounding = -1; Basis = 1;
Define a RateSpec. 
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', Maturity, ... 'Rates', Rates, 'Compounding', Compounding, 'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9656
            Rates: 0.0350
         EndTimes: 1
       StartTimes: 0
         EndDates: 736330
       StartDates: 735965
    ValuationDate: 735965
            Basis: 1
     EndMonthRule: 1
Define a StockSpec. 
AssetPrice = 50; Volatility = 0.30; StockSpec = stockspec(Volatility, AssetPrice)
StockSpec = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.3000
         AssetPrice: 50
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []
Calculate the price of an European barrier down out call option using the Black-Scholes option pricing model.
Strike = 50; OptSpec = 'call'; Barrier = 45; BarrierSpec = 'DO'; Price = barrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle,... Maturity, BarrierSpec, Barrier)
Price = 4.4285
Compute the price of European down out and down in call options using the following data:
Rates = 0.035; Settle = datetime(2015,1,1); Maturity = datetime(2016,1,1); Compounding = -1; Basis = 1;
Define a RateSpec. 
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', Maturity, ... 'Rates', Rates, 'Compounding', Compounding, 'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9656
            Rates: 0.0350
         EndTimes: 1
       StartTimes: 0
         EndDates: 736330
       StartDates: 735965
    ValuationDate: 735965
            Basis: 1
     EndMonthRule: 1
Define a StockSpec. 
AssetPrice = 50; Volatility = 0.30; StockSpec = stockspec(Volatility, AssetPrice)
StockSpec = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.3000
         AssetPrice: 50
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []
Calculate the price of European barrier down out and down in call options using the Black-Scholes Option Pricing model.
Strike = 50; OptSpec = 'Call'; Barrier = 45; BarrierSpec = {'DO';'DI'}; Price = barrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity, BarrierSpec, Barrier)
Price = 2×1
    4.4285
    2.3301
Input Arguments
Stock specification for the underlying asset. For information
on the stock specification, see stockspec.
 
stockspec handles several
types of underlying assets. For example, for physical commodities
the price is StockSpec.Asset, the volatility is StockSpec.Sigma,
and the convenience yield is StockSpec.DividendAmounts.
Data Types: struct
Definition of the option as 'call' or 'put', specified
                                                as an
                                                  NINST-by-1
                                                cell array of character vectors or string array with
                                                values 'call' or
                                                  'put' or
                                                  "call" or
                                                  "put".
Data Types: char | cell | string
Option strike price value, specified as an NINST-by-1
                                                matrix of numeric values, where each row is the
                                                schedule for one option.
Data Types: double
Settlement or trade date for the barrier option, specified as an
              NINST-by-1 vector using a datetime array, string
            array, or date character vectors.
To support existing code, barrierbybls also
    accepts serial date numbers as inputs, but they are not recommended.
Option exercise dates, specified as an NINST-by-1 vector
            using a datetime array, string array, or date character vectors. 
Note
For a European option, there is only one ExerciseDates on the
                option expiry date which is the maturity of the instrument. 
To support existing code, barrierbybls also
    accepts serial date numbers as inputs, but they are not recommended.
Barrier option type, specified as an NINST-by-1 cell
                                                array of character vectors with the following
                                                values: 
- 'UI'— Up Knock-in- This option becomes effective when the price of the underlying asset passes above the barrier level. It gives the option holder the right, but not the obligation, to buy or sell (call/put) the underlying security at the strike price if the underlying asset goes above the barrier level during the life of the option. 
- 'UO'— Up Knock-out- This option gives the option holder the right, but not the obligation, to buy or sell (call/put) the underlying security at the strike price as long as the underlying asset does not go above the barrier level during the life of the option. This option terminates when the price of the underlying asset passes above the barrier level. Usually with an up-and-out option, the rebate is paid if the spot price of the underlying reaches or exceeds the barrier level. 
- 'DI'— Down Knock-in- This option becomes effective when the price of the underlying stock passes below the barrier level. It gives the option holder the right, but not the obligation, to buy or sell (call/put) the underlying security at the strike price if the underlying security goes below the barrier level during the life of the option. With a down-and-in option, the rebate is paid if the spot price of the underlying does not reach the barrier level during the life of the option. 
- 'DO'— Down Knock-up- This option gives the option holder the right, but not the obligation, to buy or sell (call/put) the underlying asset at the strike price as long as the underlying asset does not go below the barrier level during the life of the option. This option terminates when the price of the underlying security passes below the barrier level. Usually, the option holder receives a rebate amount if the option expires worthless. 
| Option | Barrier Type | Payoff if Barrier Crossed | Payoff if Barrier not Crossed | 
|---|---|---|---|
| Call/Put | Down Knock-out | Worthless | Standard Call/Put | 
| Call/Put | Down Knock-in | Call/Put | Worthless | 
| Call/Put | Up Knock-out | Worthless | Standard Call/Put | 
| Call/Put | Up Knock-in | Standard Call/Put | Worthless | 
Data Types: char | cell
Barrier level, specified as
                                                  NINST-by-1
                                                matrix of numeric values.
Data Types: double
Name-Value Arguments
Specify optional pairs of arguments as
      Name1=Value1,...,NameN=ValueN, where Name is
      the argument name and Value is the corresponding value.
      Name-value arguments must appear after other arguments, but the order of the
      pairs does not matter.
    
      Before R2021a, use commas to separate each name and value, and enclose 
      Name in quotes.
    
Example: Price = barrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,Maturity,BarrierSpec,Barrier,Rebate,1000)
Rebate value, specified as the comma-separated pair consisting of 'Rebate'
                                                  and
                                                  NINST-by-1
                                                  matrix of numeric values. For Knock-in options,
                                                  the Rebate is paid at expiry.
                                                  For Knock-out options, the
                                                  Rebate is paid when the
                                                  Barrier is reached. 
Data Types: double
Output Arguments
Expected prices for barrier options at time 0, returned as a NINST-by-1 matrix.
More About
A Barrier is a type of exotic option whose existence or payoff depends on the price of the underlying asset reaching a certain barrier level during the option's life.
A Barrier option has not only a strike price but also a barrier level and sometimes a
        rebate. A rebate is a fixed amount that is paid if the option cannot be exercised because
        the barrier level has been reached or not reached. The payoff for this type of option
        depends on whether the underlying asset crosses the predetermined trigger value (barrier
        level), indicated by Barrier, during the life of the option. For more
        information, see Barrier Option.
References
[1] Hull, J. Options, Futures and Other Derivatives Fourth Edition. Prentice Hall, 2000, pp. 646–649.
[2] Aitsahlia, F., L. Imhof, and T.L. Lai. “Pricing and hedging of American knock-in options.” The Journal of Derivatives. Vol. 11.3, 2004, pp. 44–50.
[3] Rubinstein M. and E. Reiner. “Breaking down the barriers.” Risk. Vol. 4(8), 1991, pp. 28–35.
Version History
Introduced in R2016bAlthough barrierbybls supports serial date numbers,
                        datetime values are recommended instead. The
                        datetime data type provides flexible date and time
                formats, storage out to nanosecond precision, and properties to account for time
                zones and daylight saving time.
To convert serial date numbers or text to datetime values, use the datetime function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y =
        2021
There are no plans to remove support for serial date number inputs.
See Also
barrierbyfd | barriersensbyfd | barrierbyls | barriersensbybls | barriersensbyls | Barrier
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)