Main Content

VannaVolga

Create VannaVolga pricer object for Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch instrument using BlackScholes model

Since R2020b

Description

Create and price a Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch instrument object with a BlackScholes model and a VannaVolga pricing method using this workflow:

  1. Use fininstrument to create a Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch instrument object.

  2. Use finmodel to specify the BlackScholes model for the Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch instrument object.

  3. Use finpricer to specify the VannaVolga pricer object for the Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch 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 Vanilla, Barrier, DoubleBarrier, Touch, or DoubleTouch instrument, see Choose Instruments, Models, and Pricers.

Creation

Description

example

VannaVolgaPricerObj = finpricer(PricerType,'DiscountCurve',ratecurve_obj,'Model',model,'SpotPrice',spot_price,'VolatilityRR',volatilityrr_value,'VolatilityBF',volatilitybf_value) creates a VannaVolga pricer object by specifying PricerType and sets properties using the required name-value pair arguments DiscountCurve, Model, SpotPrice, VolatilityRR, and VolatilityBF. For example, VannaVolgaPricerObj = finpricer("VannaVolga",'DiscountCurve',ratecurve_obj,'Model',BSModel,'SpotPrice',Spot,'VolatilityRR',VolRR,'VolatilityBF',VolBF) creates a VannaVolga pricer object.

example

VannaVolgaPricerObj = finpricer(___,Name,Value) sets optional properties using additional name-value pairs in addition to the required arguments in the previous syntax. For example, VannaVolgaPricerObj = finpricer("VannaVolga",'DiscountCurve',ratecurve_obj,'Model',BSModel,'SpotPrice',Spot,'VolatilityRR',VolRR,'VolatilityBF',VolBF,'DividendValue',0.0210) creates a VannaVolga pricer object. You can specify multiple name-value pair arguments.

Input Arguments

expand all

Pricer type, specified as a string with the value "VannaVolga" or a character vector with the value 'VannaVolga'.

Data Types: char | string

Name-Value Arguments

Specify required 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: VannaVolgaPricerObj = finpricer("VannaVolga",'DiscountCurve',ratecurve_obj,'Model',BSModel,'SpotPrice',Spot,'VolatilityRR',VolRR,'VolatilityBF',VolBF,'DividendValue',0.0210)

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

Data Types: object

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

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

Data Types: double

25-delta risk reversal (RR) volatility, specified as the comma-separated pair consisting of 'VolatilityRR' and a scalar numeric.

Data Types: double

25-delta butterfly (BF) volatility, specified as the comma-separated pair consisting of 'VolatilityBF' and a scalar numeric.

Data Types: double

Optional VannaVolga Name-Value Pair Arguments

expand all

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

Data Types: char | string

Continuous dividend yield, specified as the comma-separated pair consisting of 'DividendValue' and a scalar numeric.

Note

When pricing currency (FX) options, specify the optional input argument 'DividendValue' as the continuously compounded risk-free interest rate in the foreign country.

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

Data Types: double

25-delta risk reversal (RR) volatility, returned as a scalar numeric.

Data Types: double

25-delta butterfly (BF) volatility, returned as a scalar numeric.

Data Types: double

This property is read-only.

Dividend type, returned as a string.

Data Types: string

Continuous dividend yield, returned as a scalar numeric.

Data Types: double

Object Functions

priceCompute price for equity instrument with VannaVolga pricer

Examples

collapse all

This example shows the workflow to price a DoubleBarrier instrument when you use a BlackScholes model and a VannaVolga 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",0.02)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.0200
    Correlation: 1

Create ratecurve Object

Create a flat ratecurve object using ratecurve.

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

Create VannaVolga Pricer Object

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

VolRR = -0.0045;
VolBF = 0.0037;
RateF = 0.0210;
outPricer = finpricer("VannaVolga","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'DividendValue',RateF,'VolatilityRR',VolRR,'VolatilityBF',VolBF)
outPricer = 
  VannaVolga with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 100
     DividendType: "continuous"
    DividendValue: 0.0210
     VolatilityRR: -0.0045
     VolatilityBF: 0.0037

Price DoubleBarrier Instrument

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

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

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

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

    1.645    0.82818    75.662    50.346    14.697    -1.3145    74.666

More About

expand all

References

[1] Bossens, Frédéric, Grégory Rayée, Nikos S. Skantzos, and Griselda Deelstra. "Vanna-Volga Methods Applied to FX Derivatives: From Theory to Market Practice." International Journal of Theoretical and Applied Finance. 13, no. 08 (December 2010): 1293–1324.

[2] Castagna, Antonio, and Fabio Mercurio. "The Vanna-Volga Method for Implied Volatilities." Risk. 20 (January 2007): 106–111.

[3] Castagna, Antonio, and Fabio Mercurio. "Consistent Pricing of FX Options." Working Papers Series, Banca IMI, 2006.

[4] Fisher, Travis. "Variations on the Vanna-Volga Adjustment." Bloomberg Research Paper, 2007.

[5] Wystup, Uwe. FX Options and Structured Products. Hoboken, NJ: Wiley Finance, 2006.

Version History

Introduced in R2020b