This is machine translation

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

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

normalvolbysabr

Implied Normal (Bachelier) volatility by SABR model

Syntax

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

Description

example

outVol = normalvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike) calculates the implied Normal (Bachelier) volatility by using the SABR stochastic volatility model.

example

outVol = normalvolbysabr(___,Name,Value) specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.

Examples

collapse all

Define the model parameters and option data.

ForwardValue = 0.0209;
Strike = 0.02;
Alpha = 0.041;
Beta = 0.5;
Rho = -0.2;
Nu = 0.33;

Settle = datenum('15-Feb-2018');
ExerciseDate = datenum('15-Feb-2020');

Compute the Normal (Bachelier) volatility using the SABR model.

ComputedVols = normalvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike)
ComputedVols = 0.0059

To use the Normal SABR model, set the Beta parameter to zero. Negative interest rates are allowed when the Normal SABR model is used in combination with Normal (Bachelier) implied volatility.

Define the model parameters and option data.

ForwardValue = -0.00383;
Strike = -0.003;
Alpha = 0.007;
Beta = 0;  % Set the Beta parameter to zero to use the Normal SABR model
Rho = -0.18;
Nu = 0.29;

Settle = datenum('17-Jan-2018');
ExerciseDate = datenum('17-Apr-2018');

Compute the Normal (Bachelier) volatility using the Normal SABR model.

ComputedVols = normalvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike)
ComputedVols = 0.0070

Input Arguments

collapse all

Current SABR volatility, specified as a scalar numeric.

Data Types: double

SABR CEV exponent, specified as a scalar numeric.

Note

Set the Beta parameter to 0 to allow a negative ForwardValue and Strike.

Data Types: double

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

Data Types: double

Volatility of volatility, specified as a scalar numeric.

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 numeric or vector of size NumVols-by-1.

Data Types: double

Option strike price value, specified as a scalar numeric 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 quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: outVol = normalvolbysabr(Alpha,Beta,Rho,Nu,Settle,ExerciseDate,ForwardValue,Strike,'Basis',2)

Day-count basis of the instrument, specified as the comma-separated pair consisting of 'Basis' and a positive integer from 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

Output Arguments

collapse all

Normal (Bachelier) volatility computed by the SABR model, returned as a scalar numeric or vector of size NumVols-by-1.

Algorithms

The two general case algorithms for normalvolbysabr are not At-The-Money (ATM) and ATM.

For not ATM (FK):

σN(α,β,ρ,υ,F,K,T)=α(FK)(1β)F(1β)K(1β)(zx(z)){1+[β(β2)α224Fmid22β+ρβυα4Fmid1β+23ρ224υ2]T}=υ(FK)x(z){1+[β(β2)α224Fmid22β+ρβυα4Fmid1β+23ρ224υ2]T}Fmid=F+K2z=υα(F1βK1β1β)          x(z)=ln(12ρz+z2+zρ1ρ)

For ATM (F = K):

σN,ATM(α,β,ρ,υ,F,T)=αFβ{1+[β(β2)α224F22β+ρβυα4F1β+23ρ224υ2]T}

The special case for normalvolbysabr where β = 0 for not ATM (FK) is:

σN(α,ρ,υ,F,K,T)=υ(FK)x(ζ)(1+23ρ224υ2T)ζ=υα(FK)x(ζ)=ln(12ρζ+ζ2+ζρ1ρ)

For ATM (F = K):

σN,ATM(α,ρ,υ,T)=α(1+23ρ224υ2T)

The special case for normalvolbysabr where β = 1 for not ATM (FK) is:

σN(α,ρ,υ,F,K,T)=υ(FK)x(ζ){1+[α224+ρυα4+23ρ224υ2]T}ζ=υαlnFKx(ζ)=ln(12ρζ+ζ2+ζρ1ρ)

For ATM (F = K):

σN,ATM(α,ρ,υ,F,T)=αF{1+[α224+ρυα4+23ρ224υ2]T}

References

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

Introduced in R2018b