Main Content

Rubinstein

Create Rubinstein pricer object for Cliquet instrument using BlackScholes model

Description

Create and price a Cliquet instrument object with a BlackScholes model and a Rubinstein pricing method using this workflow:

  1. Use fininstrument to create an Cliquet instrument object.

  2. Use finmodel to specify a BlackScholes model for the Cliquet instrument object.

  3. Use finpricer to specify a Rubinstein pricer object for the Cliquet 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 an Cliquet instrument, see Choose Instruments, Models, and Pricers.

Creation

Description

example

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

example

RubinsteinPricerObj = finpricer(___,Name=Value) sets optional properties using additional name-value arguments in addition to the required arguments in the previous syntax. For example, RubinsteinPricerObj = finpricer("Analytic",DiscountCurve=ratecurve_obj,Model=BSModel,SpotPrice=1000,DividendType="continuous",DividendValue=100,PricingMethod="Rubinstein") creates a Cliquet 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: string | char

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.

Example: RubinsteinPricerObj = finpricer("Analytic",DiscountCurve=ratecurve_obj,Model=BSModel,SpotPrice=1000,DividendType="continuous",DividendValue=100,PricingMethod="Rubinstein")

Required Rubinstein Name-Value Arguments

expand all

ratecurve object for discounting cash flows, specified as DiscountCurve and the name of a 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

Model, specified as Model and the name of a previously created BlackScholes model object using finmodel.

Data Types: object

Current price of the underlying asset, specified as SpotPrice and a scalar nonnegative numeric.

Data Types: double

Optional Rubinstein Name-Value Arguments

expand all

Dividend type, specified as DividendType and a string or character vector for a continuous dividend yield.

Data Types: char | string

Dividend yield for the underlying stock, specified as DividendValue and a scalar numeric.

Data Types: double

Analytic pricing method, specified as PricingMethod and a character vector or string.

Note

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

Data Types: double

Properties

expand all

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

Data Types: object

Model, returned as a BlackScholes model object.

Data Types: object

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

Data Types: double

This property is read-only.

Dividend type, returned as a string.

Data Types: string

Dividend yield for the underlying stock, returned as a scalar numeric.

Data Types: double

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 the absolute return for three Cliquet instruments when you use a BlackScholes model and a Rubinstein pricing method.

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 Cliquet Instrument Object

Use fininstrument to create a Cliquet instrument object for three Cliquet instruments.

ResetDates = Settle + years(0:0.25:1);  
CliquetOpt = fininstrument("Cliquet",ResetDates=ResetDates,InitialStrike=[140;150;160],ExerciseStyle="european",Name="cliquet_option")
CliquetOpt=3×1 object
  3x1 Cliquet array with properties:

    OptionType
    ExerciseStyle
    ResetDates
    LocalCap
    LocalFloor
    GlobalCap
    GlobalFloor
    ReturnType
    InitialStrike
    Name

Create BlackScholes Model Object

Use finmodel to create a BlackScholes model object.

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

     Volatility: 0.2800
    Correlation: 1

Create Rubinstein Pricer Object

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

outPricer = finpricer("analytic",DiscountCurve=myRC,Model=BlackScholesModel,SpotPrice=135,DividendValue=0.025,PricingMethod="Rubinstein")
outPricer = 
  Rubinstein with properties:

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

Price Cliquet Instruments

Use price to compute the price and sensitivities for the three Cliquet instruments.

[Price, outPR] = price(outPricer,CliquetOpt,"all")
Price = 3×1

   28.1905
   25.3226
   23.8168

outPR=3×1 object
  3x1 priceresult array with properties:

    Results
    PricerData

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

    28.191    0.59697    0.020662    2.8588    105.38    60.643    -14.62

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

    25.323    0.41949    0.016816    2.2364    100.47    55.367    -11.708

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

    23.817    0.29729    0.011133    1.6851    93.219    51.616    -7.511

Version History

Introduced in R2021b