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.

blackvolbysabr

Calculate implied Black volatility using SABR model

Syntax

outVol = blackvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike)
outVol = blackvolbysabr(___,Name,Value)

Description

example

outVol = blackvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike) calculates the implied Black volatility using the SABR stochastic volatility model.

example

outVol = blackvolbysabr(___,Name,Value) adds optional name-value pair arguments.

Examples

collapse all

Define the model parameters and option data.

ForwardRate = 0.0357;
Strike = 0.03;
Alpha = 0.036;
Beta = 0.5;
Rho = -0.25;
Nu = 0.35;
  
Settle = datenum('15-Sep-2013');
ExerciseDate = datenum('15-Sep-2015');

Compute the Black volatility using the SABR model.

ComputedVols = blackvolbysabr(Alpha, Beta, Rho, Nu, Settle, ...
ExerciseDate, ForwardRate, Strike)
ComputedVols = 0.2122

Define the model parameters and option data with a negative strike.

ForwardRate = 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

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

Compute the Shifted Black volatility using the Shifted SABR model.

ComputedVols = blackvolbysabr(Alpha, Beta, Rho, Nu, Settle, ...
ExerciseDate, ForwardRate, Strike, 'Shift', Shift)
ComputedVols = 0.1518

Input Arguments

collapse all

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 NumVols-by-1.

Data Types: double

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

Data Types: double

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: outVol = blackvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike,'Basis',2,'Model','Obloj2008')

collapse all

Day-count basis of the instrument specified as a positive integer of the set [1...13]. The Basis value represents the basis used when annualizing the input forward-rate tree:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/365 (ISDA)

  • 13 = BUS/252

For more information, see basis.

Data Types: double

Version of SABR model, specified with either value:

  • 'Hagan2002' — Original version by Hagan et al. (2002)

  • 'Obloj2008' — Version by Obloj (2008)

Data Types: char

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

Implied Black volatility computed by SABR model, returned as a scalar or vector of size NumVols-by-1.

Algorithms

The SABR stochastic volatility model treats the underlying forward F^ and volatility α^ as separate random processes, which are related with correlation ρ:

dF^=α^F^βdW1dα^=vα^dW2dW1dW2=ρdtF^(0)=Fα^(0)=α

where

  • F^ is the underlying forward (a variable).

  • F is the current underlying forward (a constant).

  • α^ is the SABR volatility (a variable).

  • α is the current SABR volatility (a constant).

  • β is the SABR constant elasticity of variance (CEV) exponent.

  • υ is the volatility of volatility.

  • dW1 is Brownian motion.

  • dW2 is Brownian motion.

  • ρ is the correlation between forward value and volatility.

In contrast, Black's lognormal model assumes a constant volatility, σB.

dF^=σBF^dW

Hagan et al. (2002) derived the following closed-form approximation of implied Black lognormal volatility (σB) for the SABR model

σB(F,K)=α{1+[(1β)224α2(FK)1β+14ρβυα(FK)(1β)/2+23ρ224υ2]T+...}(FK)(1β)/2{1+(1β)224log2(F/K)+(1β)41920log4(F/K)+...}(zx(z))z=υα(FK)(1β)/2log(F/K)x(z)=log{12ρz+z2+zρ1ρ}

where

  • F is the current forward value of the underlying.

  • α is the current SABR volatility.

  • K is the strike value.

  • T is the time to option maturity.

Obloj (2008) advocated the following closed-form approximation of implied Black lognormal volatility for the SABR model (for β<1)

σB(F,K)=υlog(F/K)x(z){1+[(1β)224α2(FK)1β+14ρβυα(FK)(1β)/2+23ρ224υ2]T+...}z=υαF(1β)K(1β)1βx(z)=log{12ρz+z2+zρ1ρ}

These expressions can be simplified in special situations, such as the at-the-money ( ) and stochastic lognormal (β = 1) cases [1,2].

References

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

[2] [2] Obloj, J. “Fine-tune your smile: Correction to Hagan et. al.” Wilmott Magazine, 2008.

Introduced in R2014a

Was this topic helpful?