Main Content

IkedaKunitomo

Create IkedaKunitomo pricer object for DoubleBarrier instrument using BlackScholes model

Since R2020b

Description

Create and price a DoubleBarrier instrument object with a BlackScholes model and a IkedaKunitomo pricing method using this workflow:

  1. Use fininstrument to create a DoubleBarrier instrument object.

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

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

Creation

Description

example

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

example

IkedaKunitomoPricerObj = finpricer(___,Name,Value) sets optional properties using additional name-value pairs in addition to the required arguments in the previous syntax. For example, IkedaKunitomoPricerObj = finpricer("Analytic",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',100,'DividendValue',0.025,'PricingMethod',"IkedaKunitomo") creates a IkedaKunitomo pricer object. You can specify multiple name-value pair arguments.

Input Arguments

expand all

Pricer type, specified as a string with the value "Analytic" or a character vector with the value '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: IkedaKunitomoPricerObj = finpricer("Analytic",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',100,'DividendValue',0.025,'PricingMethod',"IkedaKunitomo")

Required IkedaKunitomo Name-Value Pair Arguments

expand all

Model object, specified as the comma-separated pair consisting of 'Model' and the name of a 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.

Data Types: object

Current price of the underlying asset, specified as the comma-separated pair consisting of 'SpotPrice' and a scalar nonnegative numeric value.

Data Types: double

Optional IkedaKunitomo Name-Value Pair Arguments

expand all

Dividend yield, specified as the comma-separated pair consisting of 'DividendValue' and a scalar nonnegative numeric value.

Data Types: double

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

Data Types: char | string

Curvature levels of the upper and lower barriers, specified as the comma-separated pair consisting of 'Curvature' and a vector where the first level is the upper barrier curvature (d1) and second level is the lower barrier curvature (d2). The possible curvature levels are as follows:

  • d1 = d2 = 0 corresponds to two flat boundaries.

  • d1 < 0 < d2 corresponds to an exponentially growing lower boundary and an exponentially decaying upper boundary.

  • d1 > 0 > d2 corresponds to a convex downward lower boundary and a convex upward upper boundary.

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 nonnegative numeric value.

Data Types: double

Dividend yield, returned as a scalar nonnegative numeric.

Data Types: double

This property is read-only.

Dividend type, returned as a string.

Data Types: string

Curvature levels of the upper and lower barriers, returned as a vector where the first level is the upper barrier curvature (d1) and second level is the lower barrier curvature (d2).

Data Types: char | 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 DoubleBarrier instrument when you use a BlackScholes model and an IkedaKunitomo pricing method.

Create DoubleBarrier Instrument Object

Use fininstrument to create a DoubleBarrier instrument object.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"European",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "european"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

Create BlackScholes Model Object

Use finmodel to create a BlackScholes model object.

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

     Volatility: 0.3000
    Correlation: 1

Create ratecurve Object

Create a flat ratecurve object using ratecurve.

Settle = datetime(2017,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-2017
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Create IkedaKunitomo Pricer Object

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

outPricer = finpricer("Analytic","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'Curvature',[0.03 -0.03],'DividendValue',0.029,"PricingMethod","IkedaKunitomo")
outPricer = 
  IkedaKunitomo with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 100
    DividendValue: 0.0290
     DividendType: "continuous"
        Curvature: [0.0300 -0.0300]

Price DoubleBarrier Instrument

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

[Price, outPR] = price(outPricer,DoubleBarrierOpt,["all"])
Price = 5.6848e-04
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

outPR.Results 
ans=1×7 table
      Price          Delta          Gamma       Lambda       Vega         Theta          Rho    
    __________    ___________    ___________    _______    _________    _________    ___________

    0.00056848    -3.7713e-05    -4.2071e-06    -6.6339    -0.031332    0.0008912    -0.00035113

Version History

Introduced in R2020b