Main Content


Create Black pricer object for Cap, Floor, or Swaption instrument using Black model


Create and price a Cap, Floor, or Swaption instrument object with a Black model and a Black pricing method using this workflow:

  1. Use fininstrument to create a Cap, Floor, or Swaption instrument object.

  2. Use finmodel to specify a Black model for the Cap, Floor, or Swaption instrument.

  3. Use finpricer to specify a Black pricer object for the Cap, Floor, or Swaption instrument.


    If you do not specify ProjectionCurve when you create a Cap, Floor, or Swaption instrument with the Black pricer, the ProjectionCurve value defaults to the DiscountCurve value.

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 Cap, Floor, or Swaption instrument, see Choose Instruments, Models, and Pricers.




BlackPricerObj = finpricer(PricerType,'DiscountCurve',ratecurve_obj,'Model',model) creates a Black pricer object by specifying PricerType and the required name-value pair arguments for DiscountCurve and Model to set properties using name-value pairs. For example, BlackPricerObj = finpricer("Analytic",'DiscountCurve',ratecurve_obj,'Model',BlackModel) creates a Black pricer object.

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

Black Name-Value Pair Arguments

Specify required comma-separated pairs of Name,Value arguments. Name is 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 Name1,Value1,...,NameN,ValueN.

Example: BlackPricerObj = finpricer("Analytic",'DiscountCurve',ratecurve_obj,'Model',BlackModel)

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

Data Types: object

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

Data Types: object


expand all

ratecurve object for discounting cash flows, returned as the ratecurve object

Data Types: object

Model, returned as a Black model object.

Data Types: object

Object Functions

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


collapse all

This example shows the workflow to price a Cap instrument when you use a Black model and a Black pricing method.

Create Cap Instrument Object

Use fininstrument to create a Cap instrument object.

CapOpt = fininstrument("Cap",'Strike',.02,'Maturity',datetime(2021,12,30),'Reset',4,'Principal',100,'Basis',12,'Name',"cap_option")
CapOpt = 
  Cap with properties:

                      Strike: 0.0200
                    Maturity: 30-Dec-2021
                 ResetOffset: 0
                       Reset: 4
                       Basis: 12
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "cap_option"

Create Black Model Object

Use finmodel to create a Black model object.

BlackModel = finmodel("Black",'Volatility',0.09,'Shift',0.002)
BlackModel = 
  Black with properties:

    Volatility: 0.0900
         Shift: 0.0020

Create ratecurve Object

Create a ratecurve object using ratecurve.

Settle = datetime(2020,9,14);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 14-Sep-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Create Black Pricer Object

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

outPricer = finpricer("analytic",'Model',BlackModel,'DiscountCurve',myRC)
outPricer = 
  Black with properties:

            Model: [1x1 finmodel.Black]
    DiscountCurve: [1x1 ratecurve]

Price Cap Instrument

Use price to compute the price for the Cap instrument.

Price = price(outPricer,CapOpt)
Price = 4.6412e-29
Introduced in R2020a