Documentation

This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

blackvolbyrebonato

Compute Black volatility for LIBOR Market Model using Rebonato formula

Syntax

  • outVol = blackvolbyrebonato(ZeroCurve,VolFunc,CorrMat,
    ExerciseDate,Maturity)
    example
  • outVol = blackvolbyrebonato(___,Name,Value)
    example

Description

example

outVol = blackvolbyrebonato(ZeroCurve,VolFunc,CorrMat,
ExerciseDate,Maturity)
computes the Black volatility for a swaption using a LIBOR Market Model.

example

outVol = blackvolbyrebonato(___,Name,Value) computes the Black volatility for a swaption using a LIBOR Market Model with optional name-value pair arguments.

Examples

collapse all

Define the input maturity and tenor for a LIBOR Market Model (LMM) specified by the cell array of volatility function handles, and a correlation matrix for the LMM.

Settle = datenum('11-Aug-2004');

% Zero Curve
CurveTimes = (1:10)';
CurveDates = daysadd(Settle,360*CurveTimes,1);

ZeroRates = [0.03 0.033 0.036 0.038 0.04 0.042 0.043 0.044 0.045 0.046]';

% Construct an IRCurve
irdc = IRDataCurve('Zero',Settle,CurveDates,ZeroRates);

LMMVolFunc = @(a,t) (a(1)*t + a(2)).*exp(-a(3)*t) + a(4);
LMMVolParams = [.3 -.02 .7 .14];

numRates = length(ZeroRates);
VolFunc(1:numRates-1) = {@(t) LMMVolFunc(LMMVolParams,t)};

Beta = .08;
CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));
CorrMat = CorrFunc(meshgrid(1:numRates-1)',meshgrid(1:numRates-1),Beta);

ExerciseDate = datenum('11-Aug-2009');
Maturity = daysadd(ExerciseDate,360*[3;4],1);

Vol = blackvolbyrebonato(irdc,VolFunc,CorrMat,ExerciseDate,Maturity,'Period',1)
Vol =

    0.2210
    0.2079

Related Examples

Input Arguments

collapse all

Zero-curve for the LiborMarketModel, specified using IRDataCurve or RateSpec.

Data Types: struct

Function handle for volatility, specified by a NumRates-by-1 cell array of function handles. Each function handle must take time as an input and return a scalar volatility

Data Types: cell | function_handle

Correlation matrix, specified by NumRates-by-NumRates.

Data Types: single | double

Swaption exercise dates, specified by a NumSwaptions-by-1 vector of serial date numbers or date character vectors.

Data Types: single | double | char | cell

Swap maturity dates, specified using a NumSwaptions-by-1 vector of dates or date character vectors.

Data Types: single | double | char | cell

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: Vol = blackvolbyrebonato(irdc,VolFunc,CorrMat,ExerciseDate,Maturity,'Period',1)

collapse all

Compounding frequency of curve and reset of swaptions, specified as a positive integer for the values 1,2,4,6,12 in a NumSwaptions-by-1 vector.

Data Types: single | double

Output Arguments

collapse all

Black volatility, returned as a vector for the specified swaptions.

More About

collapse all

Algorithms

The Rebonato approximation formula relates the Black volatility for a European swaption, given a set of volatility functions and a correlation matrix

(υα,βLFM)2=i,j=α+1βwi(0)wj(0)Fi(0)Fj(0)ρi,jSα,β(0)20Tασi(t)σj(t)dt

where:

wi(t)=τiP(t,Ti)k=α+1βτκP(t,tκ)

References

[1] Brigo, D. and F. Mercurio. Interest Rate Models - Theory and Practice. Springer Finance, 2006.

Introduced in R2013a

Was this topic helpful?