Main Content

blackvolbysabr

Calculate implied Black volatility using SABR model

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 = datetime(2013,9,15);
ExerciseDate = datetime(2015,9,15);

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 = datetime(2016,3,1);
ExerciseDate = datetime(2017,3,1);

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 Arguments

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

Day-count basis of the instrument, specified as the comma-separated pair consisting of 'Basis' and a positive integer of the set [1...13].

  • 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 as the comma-separated pair consisting of 'Model' and one of the following values:

  • '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 as the comma-separated pair consisting of 'Shift' and 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α^dW2E[dW1dW2]=ρ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.

  • W1 is Brownian motion.

  • W2 is Brownian motion.

  • ρ is the correlation between the changes in forward value and the changes in 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 (F=K ) and stochastic lognormal (β = 1) cases [1,2].

References

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

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

Version History

Introduced in R2014a