# Documentation

### This is machine translation

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

# capbylg2f

Price cap using Linear Gaussian two-factor model

## Syntax

• ``CapPrice = capbylg2f(ZeroCurve,a,b,sigma,eta,rho,Strike,Maturity)``
example
• ``CapPrice = capbylg2f(___, Name,Value)``
example

## Description

example

````CapPrice = capbylg2f(ZeroCurve,a,b,sigma,eta,rho,Strike,Maturity)` returns cap price for a two-factor additive Gaussian interest-rate model. ```

example

````CapPrice = capbylg2f(___, Name,Value)` returns cap price for a two-factor additive Gaussian interest-rate model using optional name-value pairs. Note:   Use the optional name-value pair argument, `Notional`, to pass a schedule to compute the price for an amortizing cap.```

## Examples

collapse all

Define the `ZeroCurve`, `a`, `b`, `sigma`, `eta`, and `rho` parameters to price the cap.

```Settle = datenum('15-Dec-2007'); ZeroTimes = [3/12 6/12 1 5 7 10 20 30]'; ZeroRates = [0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475]'; CurveDates = daysadd(Settle,360*ZeroTimes); irdc = IRDataCurve('Zero',Settle,CurveDates,ZeroRates); a = .07; b = .5; sigma = .01; eta = .006; rho = -.7; CapMaturity = daysadd(Settle,360*[1:5 7 10 15 20 25 30],1); Strike = [0.035 0.037 0.038 0.039 0.040 0.042 0.044 0.046 0.047 0.047 0.047]'; Price = capbylg2f(irdc,a,b,sigma,eta,rho,Strike,CapMaturity) ```
```Price = 0.0316 0.3225 0.7761 1.3240 1.9394 3.1247 4.8451 7.3752 9.8582 11.4673 12.7850 ```

Define the `ZeroCurve`, `a`, `b`, `sigma`, `eta`, `rho`, and `Notional` parameters for the amortizing cap.

```Settle = datenum('15-Dec-2007'); % Define ZeroCurve ZeroTimes = [3/12 6/12 1 5 7 10 20 30]'; ZeroRates = [0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475]'; CurveDates = daysadd(Settle,360*ZeroTimes); irdc = IRDataCurve('Zero',Settle,CurveDates,ZeroRates); % Define a, b, sigma, eta, and rho a = .07; b = .5; sigma = .01; eta = .006; rho = -.7; % Define the amortizing caps CapMaturity = daysadd(Settle,360*[1:5 7 10 15 20 25 30],1); Strike = [0.035 0.037 0.038 0.039 0.040 0.042 0.044 0.046 0.047 0.047 0.047]'; Notional = {{'15-Dec-2010' 100;'15-Dec-2014' 70;'15-Dec-2022' 40;'15-Dec-2037' 10}}; % Price the amortizing caps Price = capbylg2f(irdc,a,b,sigma,eta,rho,Strike,CapMaturity, 'Notional', Notional) ```
```Price = 0.0316 0.3225 0.7761 1.1313 1.5362 2.3213 2.8297 3.6878 3.7297 3.8906 4.0223 ```

## Input Arguments

collapse all

Zero-curve for the Linear Gaussian two-factor model, specified using `IRDataCurve` or `RateSpec`.

Data Types: `struct`

Mean reversion for first factor for the Linear Gaussian two-factor model, specified as a scalar.

Data Types: `single` | `double`

Mean reversion for second factor for the Linear Gaussian two-factor model, specified as a scalar.

Data Types: `single` | `double`

Volatility for first factor for the Linear Gaussian two-factor model, specified as a scalar.

Data Types: `single` | `double`

Volatility for second factor for the Linear Gaussian two-factor model, specified as a scalar.

Data Types: `single` | `double`

Scalar correlation of the factors, specified as a scalar.

Data Types: `single` | `double`

Cap strike price, specified as a nonnegative integer using a `NumCaps`-by-`1` vector.

Data Types: `single` | `double`

Cap maturity date, specified using a `NumCaps`-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: `Price = capbylg2f(irdc,a,b,sigma,eta,rho,Strike,CapMaturity,'Reset',1,'Notional',100)`

collapse all

Frequency of cap payments per year, specified as positive integers for the values `[1,2,4,6,12]` in a `NumCaps`-by-`1` vector.

Data Types: `single` | `double`

`NINST`-by-`1` of notional principal amounts or `NINST`-by-`1` cell array where each element is a `NumDates`-by-`2` cell array where the first column is dates and the second column is the associated principal amount. The date indicates the last day that the principal value is valid.

Data Types: `single` | `double`

## Output Arguments

collapse all

Expected prices of cap, returned as a scalar or an `NumCaps`-by-`1` vector.

collapse all

### Algorithms

The following defines the two-factor additive Gaussian interest rate model, given the `ZeroCurve`, `a`, `b`, `sigma`, `eta`, and `rho` parameters:

`$r\left(t\right)=x\left(t\right)+y\left(t\right)+\varphi \left(t\right)$`
`$dx\left(t\right)=-a\left(x\right)\left(t\right)dt+\sigma \left(d{W}_{1}\left(t\right),x\left(0\right)=0$`
`$dy\left(t\right)=-b\left(y\right)\left(t\right)dt+\eta \left(d{W}_{2}\left(t\right),y\left(0\right)=0$`

where $d{W}_{1}\left(t\right)d{W}_{2}\left(t\right)=\rho dt$ is a two-dimensional Brownian motion with correlation ρ and ϕ is a function chosen to match the initial zero curve.

## References

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