normalvolbysabr

Implied Normal (Bachelier) volatility by SABR model

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

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):

For ATM (F = K):

${\sigma }_{N,ATM}\left(\alpha ,\beta ,\rho ,\upsilon ,F,T\right)=\alpha {F}^{\beta }\left\{1+\left[\frac{\beta \left(\beta -2\right){\alpha }^{2}}{24{F}^{2-2\beta }}+\frac{\rho \beta \upsilon \alpha }{4{F}^{1-\beta }}+\frac{2-3{\rho }^{2}}{24}{\upsilon }^{2}\right]T\right\}$

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

$\begin{array}{l}{\sigma }_{N}\left(\alpha ,\rho ,\upsilon ,F,K,T\right)=\upsilon \frac{\left(F-K\right)}{\stackrel{\wedge }{x}\left(\zeta \right)}\left(1+\frac{2-3{\rho }^{2}}{24}{\upsilon }^{2}T\right)\\ \zeta =\frac{\upsilon }{\alpha }\left(F-K\right)\\ \stackrel{\wedge }{x}\left(\zeta \right)=\mathrm{ln}\left(\frac{\sqrt{1-2\rho \zeta +{\zeta }^{2}}+\zeta -\rho }{1-\rho }\right)\end{array}$

For ATM (F = K):

${\sigma }_{N,ATM}\left(\alpha ,\rho ,\upsilon ,T\right)=\alpha \left(1+\frac{2-3{\rho }^{2}}{24}{\upsilon }^{2}T\right)$

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

$\begin{array}{l}{\sigma }_{N}\left(\alpha ,\rho ,\upsilon ,F,K,T\right)=\upsilon \frac{\left(F-K\right)}{\stackrel{\wedge }{x}\left(\zeta \right)}\left\{1+\left[\frac{-{\alpha }^{2}}{24}+\frac{\rho \upsilon \alpha }{4}+\frac{2-3{\rho }^{2}}{24}{\upsilon }^{2}\right]T\right\}\\ \zeta =\frac{\upsilon }{\alpha }\mathrm{ln}\frac{F}{K}\\ \stackrel{\wedge }{x}\left(\zeta \right)=\mathrm{ln}\left(\frac{\sqrt{1-2\rho \zeta +{\zeta }^{2}}+\zeta -\rho }{1-\rho }\right)\end{array}$

For ATM (F = K):

${\sigma }_{N,ATM}\left(\alpha ,\rho ,\upsilon ,F,T\right)=\alpha F\left\{1+\left[\frac{-{\alpha }^{2}}{24}+\frac{\rho \upsilon \alpha }{4}+\frac{2-3{\rho }^{2}}{24}{\upsilon }^{2}\right]T\right\}$

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