Main Content


Compute price for equity instrument with FiniteDifference pricer

Since R2020a



[Price,PriceResult] = price(inpPricer,inpInstrument) computes the instrument price and related pricing information based on the pricing object inpPricer and the instrument object inpInstrument.


[Price,PriceResult] = price(___,inpSensitivity) adds an optional argument to specify sensitivities.


collapse all

This example shows the workflow to price a Barrier instrument when you use a BlackScholes model and a FiniteDifference pricing method.

Create Barrier Instrument Object

Use fininstrument to create a Barrier instrument object.

BarrierOpt = fininstrument("Barrier",'Strike',105,'ExerciseDate',datetime(2019,1,1),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DO",'BarrierValue',40,'Name',"barrier_option")
BarrierOpt = 
  Barrier with properties:

       OptionType: "call"
           Strike: 105
      BarrierType: "do"
     BarrierValue: 40
           Rebate: 0
    ExerciseStyle: "american"
     ExerciseDate: 01-Jan-2019
             Name: "barrier_option"

Create BlackScholes Model Object

Use finmodel to create a BlackScholes model object.

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

     Volatility: 0.3000
    Correlation: 1

Create ratecurve Object

Create a flat ratecurve object using ratecurve.

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

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

Create FiniteDifference Pricer Object

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

outPricer = finpricer("FiniteDifference",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',100)
outPricer = 
  FiniteDifference with properties:

     DiscountCurve: [1x1 ratecurve]
             Model: [1x1 finmodel.BlackScholes]
         SpotPrice: 100
    GridProperties: [1x1 struct]
      DividendType: "continuous"
     DividendValue: 0

Price Barrier Instrument

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

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

       Results: [1x7 table]
    PricerData: [1x1 struct]

ans=1×7 table
    Price      Delta     Gamma     Lambda     Theta      Rho       Vega 
    ______    _______    ______    ______    _______    ______    ______

    11.323    0.54126    0.0132    4.7802    -7.4408    42.766    39.627

Input Arguments

collapse all

Pricer object, specified as a scalar FiniteDifference pricer object. Use finpricer to create the FiniteDifference pricer object.

Data Types: object

Instrument object, specified as a scalar or vector of Vanilla, Barrier, DoubleBarrier, or ConvertibleBond instrument objects. Use fininstrument to create the Vanilla, Barrier, DoubleBarrier, or ConvertibleBond instrument objects.

Data Types: object

(Optional) List of sensitivities to compute, specified as a NOUT-by-1 or a 1-by-NOUT cell array of character vectors or string array with supported values.

inpSensitivity = {'All'} or inpSensitivity = ["All"] specifies that the output is 'Delta', 'Gamma', 'Vega', 'Vegalt', 'Lambda', 'Rho', 'Theta', and 'Price'. This is the same as specifying inpSensitivity to include each sensitivity.


When you price a Barrier or ConvertibleBond instruments using a BlackScholes model, 'Vegalt' is not supported.

Example: inpSensitivity = {'delta','gamma','vega','vegalt','rho','lambda','theta','price'}

The sensitivities supported depend on the inpInstrument.

inpInstrumentSupported Sensitivities
Vanilla, 'delta','gamma','vega','vegalt','rho','lambda','theta','price'

Data Types: string | cell

Output Arguments

collapse all

Instrument price, returned as a numeric.

Price result, returned as a PriceResult object. The object has the following fields:

  • PriceResult.Results — Table of results that includes sensitivities (if you specify inpSensitivity)

  • PriceResult.PricerData — Structure for pricer data

Version History

Introduced in R2020a