Main Content

normalvolbysabr

Implied Normal (Bachelier) volatility by SABR model

Description

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.

example

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 = datetime(2018,2,15);
ExerciseDate = datetime(2020,2,15);

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 = datetime(2018,1,17);
ExerciseDate = datetime(2018,4,17);

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 datetime, string, or date character vector.

To support existing code, normalvolbysabr also accepts serial date numbers as inputs, but they are not recommended.

Option exercise date, specified as a scalar datetime, string, or date character vector.

To support existing code, normalvolbysabr also accepts serial date numbers as inputs, but they are not recommended.

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

Version History

Introduced in R2018b

expand all