Main Content

BjerksundStensland

Create BjerksundStensland pricer object for Vanilla or Spread instrument using BlackScholes model

Since R2020a

Description

Create and price a Vanilla or Spread instrument object with a BlackScholes model and a BjerksundStensland pricing method using this workflow:

  1. Use fininstrument to create a Vanilla or Spread instrument object.

  2. Use finmodel to specify a BlackScholes model for the Vanilla or Spread instrument object.

  3. Use finpricer to specify a BjerksundStensland pricer object for the Vanilla instrument (American exercise) or Spread instrument object.

For more information on this workflow, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.

For more information on the available instruments, models, and pricing methods for a Vanilla or Spread instrument, see Choose Instruments, Models, and Pricers.

Creation

Description

BjerksundStenslandPricerObj = finpricer(PricerType,'Model',model,'DiscountCurve',ratecurve_obj,'SpotPrice',spotprice_value) creates a BjerksundStensland pricer object by specifying PricerType and sets the properties for the required name-value pair arguments Model, DividendType, and SpotPrice.

example

BjerksundStenslandPricerObj = finpricer(___,Name,Value) to set optional properties using additional name-value pairs in addition to the required arguments in the previous syntax. For example, BjerksundStenslandPricerObj = finpricer("Analytic",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',[100;105],'DividendValue',[2.5,2.8],'PricingMethod',"BjerksundStensland") creates a BjerksundStensland pricer object.

example

Input Arguments

expand all

Pricer type, specified as a string with the value of "Analytic" or a character vector with the value of 'Analytic'.

Data Types: char | string

Name-Value Arguments

Specify required and 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: BjerksundStenslandPricerObj = finpricer("Analytic",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',[100;105],'DividendValue',[2.5,2.8],'PricingMethod',"BjerksundStensland")

Required BjerksundStensland Name-Value Pair Arguments

expand all

Model, specified as the comma-separated pair consisting of 'Model' and the name of the previously created BlackScholes model object using finmodel.

Data Types: object

ratecurve object for discounting cash flows, specified as the comma-separated pair consisting of 'DiscountCurve' and the name of the previously created ratecurve object.

Note

Specify a flat ratecurve object for DiscountCurve. If you use a nonflat ratecurve object, the software uses the rate in the ratecurve object at Maturity and assumes that the value is constant for the life of the equity option.

Data Types: object

Current price of the underlying asset, specified as the comma-separated pair consisting of 'SpotPrice' and a scalar or vector of nonnegative numeric values. Use a vector for SpotPrice when pricing a Spread instrument.

Data Types: double

Optional BjerksundStensland Name-Value Pair Arguments

expand all

Dividend yield, specified as the comma-separated pair consisting of 'DividendValue' and a scalar or vector of nonnegative numeric values. Use a 1-by-2 vector of nonnegative values for DividendValue when pricing a Spread instrument.

Data Types: double

Dividend type, specified as the comma-separated pair consisting of 'DividendType' and string or character vector.

Data Types: char | string

Analytic pricing method, specified as the comma-separated pair consisting of 'PricingMethod' and a character vector or string.

Note

The default pricing method for a BlackScholes model is a BlackScholes pricer.

Data Types: string | char

Properties

expand all

Model, returned as a model object.

Data Types: object

This property is read-only.

ratecurve object for discounting cash flows, returned as a ratecurve object.

Data Types: object

Current price of the underlying asset, returned as a scalar or vector of nonnegative numeric values.

Data Types: double

Dividend yield, returned as a scalar or vector of nonnegative numeric.

Data Types: double

This property is read-only.

Dividend type, returned as a string.

Data Types: string

Analytic pricing method, returned as a string.

Data Types: string

Object Functions

priceCompute price for interest-rate, equity, or credit derivative instrument with Analytic pricer

Examples

collapse all

This example shows the workflow to price a European exercise Spread instrument when you use a BlackScholes model and a BjerksundStensland pricing method.

Create Spread Instrument Object

Use fininstrument to create a Spread instrument object.

SpreadOpt = fininstrument("Spread",'Strike',5,'ExerciseDate',datetime(2021,9,15),'OptionType',"put",'ExerciseStyle',"european",'Name',"spread_option")
SpreadOpt = 
  Spread with properties:

       OptionType: "put"
           Strike: 5
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2021
             Name: "spread_option"

Create BlackScholes Model Object

Use finmodel to create a BlackScholes model object.

BlackScholesModel = finmodel("BlackScholes",'Volatility',[0.2,0.1])
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: [0.2000 0.1000]
    Correlation: [2x2 double]

Create ratecurve Object

Create a flat ratecurve object using ratecurve.

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Create BjerksundStensland Pricer Object

Use finpricer to create a BjerksundStensland pricer object and use the ratecurve object for the 'DiscountCurve' name-value pair argument.

outPricer = finpricer("analytic",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',[100,105],'DividendValue',[0.09,0.17],'PricingMethod',"BjerksundStensland")
outPricer = 
  BjerksundStensland with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: [100 105]
    DividendValue: [0.0900 0.1700]
     DividendType: "continuous"

Price Spread Instrument

Use price to compute the price and sensitivities for the Spread instrument.

[Price, outPR] = price(outPricer,SpreadOpt,["all"])
Price = 
7.0596
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

outPR.Results
ans=1×7 table
    Price            Delta                    Gamma                   Lambda                Vega          Theta       Rho  
    ______    ____________________    ______________________    __________________    ________________    ______    _______

    7.0596    -0.23249     0.27057    0.0069887    0.0055319    -3.2932     3.8327    41.938    18.303    1.1011    -5.6943

This example shows the workflow to price an American exercise Vanilla instrument when you use a BlackScholes model and a BjerksundStensland pricing method.

Create Vanilla Instrument Object

Use fininstrument to create an American exercise Vanilla instrument object.

VanillaObj = fininstrument("Vanilla",'Strike',120,'ExerciseDate',datetime(2019,1,30),'OptionType',"put",'ExerciseStyle',"american",'Name',"vanilla_instrument")
VanillaObj = 
  Vanilla with properties:

       OptionType: "put"
    ExerciseStyle: "american"
     ExerciseDate: 30-Jan-2019
           Strike: 120
             Name: "vanilla_instrument"

Create BlackScholes Model Object

Use finmodel to create a BlackScholes model object.

BlackScholesModel = finmodel("BlackScholes",'Volatility',.2)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2000
    Correlation: 1

Create ratecurve Object

Create a flat ratecurve object using ratecurve.

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Create BjerksundStensland Pricer Object

Use finpricer to create a BjerksundStensland pricer object and use the ratecurve object for the 'DiscountCurve' name-value pair argument.

outPricer = finpricer("analytic",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',120,'DividendValue',0.05,'PricingMethod',"BjerksundStensland")
outPricer = 
  BjerksundStensland with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 120
    DividendValue: 0.0500
     DividendType: "continuous"

Price Vanilla Instrument

Use price to compute the price and sensitivities for the Vanilla instrument.

[Price, outPR] = price(outPricer,VanillaObj,["all"])
Price = 
6.1080
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

outPR.Results
ans=1×7 table
    Price     Delta       Gamma      Lambda      Vega      Theta       Rho  
    _____    ________    ________    _______    ______    _______    _______

    6.108    -0.48471    0.026611    -9.5227    28.781    -8.3418    -24.115

Version History

Introduced in R2020a