Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

optsensbysabr

Calculate option sensitivities using SABR model

Syntax

Sens = optsensbysabr(ZeroCurve,Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike,OptSpec)
Sens = optsensbysabr(___,Name,Value)

Description

example

Sens = optsensbysabr(ZeroCurve,Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike,OptSpec) returns the sensitivities of an option value by using the SABR stochastic volatility model.

example

Sens = optsensbysabr(___,Name,Value) adds optional name-value pair arguments.

Examples

collapse all

Define the interest rate and the model parameters.

SwapRate = 0.0357; 
Strike = 0.03; 
Alpha = 0.036; 
Beta = 0.5; 
Rho = -0.25; 
Nu = 0.35; 
Rates = 0.05;

Define the Settle, ExerciseDate, and OptSpec for an interest-rate swaption.

Settle = datenum('15-Sep-2013'); 
ExerciseDate = datenum('15-Sep-2015'); 
OptSpec = 'call';

Define the RateSpec for the interest-rate curve.

RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, ...
'EndDates', ExerciseDate, 'Rates', Rates, 'Compounding', -1, 'Basis', 1)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9048
            Rates: 0.0500
         EndTimes: 2
       StartTimes: 0
         EndDates: 736222
       StartDates: 735492
    ValuationDate: 735492
            Basis: 1
     EndMonthRule: 1

Calculate the Delta and Vega sensitivity values for the interest-rate swaption.

[SABRDelta, SABRVega] = optsensbysabr(RateSpec, Alpha, Beta, Rho, Nu, Settle, ...
ExerciseDate, SwapRate, Strike, OptSpec, 'OutSpec',  {'Delta', 'Vega'})
SABRDelta = 0.7025
SABRVega = 0.0772

Define the interest rate and the model parameters.

SwapRate = 0.0002;
Strike = -0.001;  % -0.1% strike.
Alpha = 0.01;
Beta = 0.5;
Rho = -0.1;
Nu = 0.15;
Shift = 0.005;  % 0.5 percent shift
Rates = 0.0002;

Define the Settle, ExerciseDate, and OptSpec for the swaption.

Settle = datenum('1-Mar-2016');
ExerciseDate = datenum('1-Mar-2017');
OptSpec = 'call';

Define the RateSpec for the interest-rate curve.

RateSpec = intenvset('ValuationDate',Settle,'StartDates',Settle, ...
'EndDates',ExerciseDate,'Rates',Rates,'Compounding',-1,'Basis', 1)
RateSpec = 

  struct with fields:

           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9998
            Rates: 2.0000e-04
         EndTimes: 1
       StartTimes: 0
         EndDates: 736755
       StartDates: 736390
    ValuationDate: 736390
            Basis: 1
     EndMonthRule: 1

Calculate the Delta and Vega sensitivity values for the swaption.

[ShiftedSABRDelta,ShiftedSABRVega] = optsensbysabr(RateSpec, ...
Alpha,Beta,Rho,Nu,Settle,ExerciseDate,SwapRate,Strike,OptSpec, ...
'OutSpec',{'Delta','Vega'},'Shift',Shift)
ShiftedSABRDelta =

    0.9628


ShiftedSABRVega =

    0.0060

Input Arguments

collapse all

Annualized interest-rate term structure for zero-coupon bonds, specified by using the RateSpec obtained from intenvset or an IRDataCurve with multiple rates using the IRDataCurve constructor.

Data Types: struct

Current SABR volatility, specified as a scalar.

Data Types: double

SABR CEV exponent, specified as a scalar.

Data Types: double

Correlation between forward value and volatility, specified as a scalar.

Data Types: double

Volatility of volatility, specified as a scalar.

Data Types: double

Settlement date, specified as a scalar using a serial nonnegative date number or date character vector.

Data Types: double | char

Option exercise date, specified as a scalar using a serial nonnegative date number or date character vector.

Data Types: double | char

Current forward value of the underlying asset, specified as a scalar or vector of size NINST-by-1.

Data Types: double

Option strike price values, specified as a scalar value or a vector of size NINST-by-1.

Data Types: double

Definition of option, specified as 'call' or 'put' using a character vector.

Data Types: char

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: ModifiedSABRDelta = optsensbysabr(RateSpec,Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike,OptSpec,'OutSpec','ModifiedDelta')

collapse all

Sensitivity outputs, specified by a NOUT- by-1 or 1-by-NOUT cell array of character vectors with possible values of 'Delta', 'Vega', 'ModifiedDelta', 'ModifiedVega', 'dSigmadF', and 'dSigmadAlpha' where:

  • 'Delta' is SABR Delta by Hagan et al. (2002).

  • 'Vega' is SABR Vega by Hagan et al. (2002).

  • 'ModifiedDelta' SABR Delta modified by Bartlett (2006).

  • 'ModifiedVega' SABR Vega modified by Bartlett (2006).

  • 'dSigmadF' is the sensitivity of implied Black volatility with respect to the underlying current forward value, F.

  • 'dSigmadAlpha' is the sensitivity of implied Black volatility with respect to the Alpha parameter.

Example: OutSpec = {'Delta','Vega','ModifiedDelta','ModifiedVega','dSigmadF','dSigmadAlpha'}

Data Types: char | cell

Shift in decimals for the shifted SABR model (to be used with the Shifted Black model), specified using a scalar positive decimal value. Set this parameter to a positive shift in decimals to add a positive shift to ForwardValue and Strike, which effectively sets a negative lower bound for ForwardValue and Strike. For example, a Shift value of 0.01 is equal to a 1% shift.

Data Types: double

Output Arguments

collapse all

Sensitivity values, returned as an NINST-by-1 array as defined by OutSpec.

Algorithms

In the SABR model, an option with value V is given by the modified Black formula B, where σB is the SABR implied Black volatility.

V=B(F,K,T,σB(α,β,ρ,ν,F,K,T))

The Delta and Vega sensitivities under the SABR model are expressed in terms of partial derivatives in the original paper by Hagan (2002).

SABR Delta=VF=BF+BσBσBF

SABR Vega=Vα=BσBσBα

Later, Bartlett (2006) made better use of the model dynamics by incorporating the correlated changes between F and α

Modified SABR Delta=BF+BσB(σBF+σBαρυFβ)

Modified SABR Vega=BσB(σBα+σBFρFβυ)

where BF is the classic Black Delta and BσB is the classic Black Vega. The Black implied volatility σB is computed internally by calling blackvolbysabr, while its partial derivatives σBF and σBα are computed using closed-form expressions by optsensbysabr.

References

[1] Hagan, P. S., D. Kumar. A. S. Lesniewski, and D. E. Woodward. “Managing Smile Risk.” Wilmott Magazine, 2002.

[2] Bartlett, B. “Hedging under SABR Model.” Wilmott Magazine, 2006.

Introduced in R2014b

Was this topic helpful?