Main Content

Rubinstein

Create Rubinstein pricer object for Cliquet instrument using BlackScholes model

Since R2021b

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

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.

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: 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 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 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