# Documentation

### This is machine translation

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

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

# blackvolbyrebonato

Compute Black volatility for LIBOR Market Model using Rebonato formula

## Syntax

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

## 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)` adds 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 ```

## 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 serial date numbers 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.

## Algorithms

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

`${\left({\upsilon }_{{}_{\alpha ,\beta }}^{LFM}\right)}^{2}=\sum _{i,j=\alpha +1}^{\beta }\frac{{w}_{i}\left(0\right){w}_{j}\left(0\right){F}_{i}\left(0\right){F}_{j}\left(0\right){\rho }_{i,j}}{{S}_{\alpha ,\beta }{\left(0\right)}^{2}}\underset{0}{\overset{{T}_{\alpha }}{\int }}{\sigma }_{i}\left(t\right){\sigma }_{j}\left(t\right)dt$`
where:

`${w}_{i}\left(t\right)=\frac{{\tau }_{i}P\left(t,{T}_{i}\right)}{\sum _{k=\alpha +1}^{\beta }{\tau }_{\kappa }P\left(t,{t}_{\kappa }\right)}$`

## References

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