Documentation

# hjmvolspec

Specify Heath-Jarrow-Morton interest-rate volatility process

## Syntax

``VolSpec = hjmvolspec(Factor,Sigma_0)``
``VolSpec = hjmvolspec(Factor,CurveVol,CurveTerm)``
``VolSpec = hjmvolspec(Factor,Sigma_0,Lambda)``
``VolSpec = hjmvolspec(Factor,Sigma_0,CurveDecay,CurveTerm)``
``VolSpec = hjmvolspec(Factor,CurveProp,CurveTerm,MaxSpot)``

## Description

example

````VolSpec = hjmvolspec(Factor,Sigma_0)` creates a Constant volatility (Ho-Lee) structure for `hjmtree` by specifying the `Factor` as `'Constant'`. ```

example

````VolSpec = hjmvolspec(Factor,CurveVol,CurveTerm)` creates a Stationary volatility structure for `hjmtree` by specifying the `Factor` as `'Stationary'`.```

example

````VolSpec = hjmvolspec(Factor,Sigma_0,Lambda)` creates an Exponential volatility structure for `hjmtree` by specifying the `Factor` as `'Exponential'`.```

example

````VolSpec = hjmvolspec(Factor,Sigma_0,CurveDecay,CurveTerm)` creates a Vasicek, Hull-White volatility structure for `hjmtree` by specifying the `Factor` as `'Vasicek'`. ```

example

````VolSpec = hjmvolspec(Factor,CurveProp,CurveTerm,MaxSpot)` creates a Nearly proportional stationary volatility structure for `hjmtree` by specifying the `Factor` as `'Proportional'`.```

## Examples

collapse all

This example shows how to compute the `VolSpec` structure to specify the volatility model for `hjmtree` when volatility is single-factor proportional.

```CurveProp = [0.11765; 0.08825; 0.06865]; CurveTerm = [1; 2; 3]; VolSpec = hjmvolspec('Proportional', CurveProp, CurveTerm, 1e6)```
```VolSpec = struct with fields: FinObj: 'HJMVolSpec' FactorModels: {'Proportional'} FactorArgs: {{1x3 cell}} SigmaShift: 0 NumFactors: 1 NumBranch: 2 PBranch: [0.5000 0.5000] Fact2Branch: [-1 1] ```

This example shows how to compute the `VolSpec` structure to specify the volatility model for `hjmtree` when volatility is two-factor exponential and constant.

`VolSpec = hjmvolspec('Exponential', 0.1, 1, 'Constant', 0.2)`
```VolSpec = struct with fields: FinObj: 'HJMVolSpec' FactorModels: {'Exponential' 'Constant'} FactorArgs: {{1x2 cell} {1x1 cell}} SigmaShift: 0 NumFactors: 2 NumBranch: 3 PBranch: [0.2500 0.2500 0.5000] Fact2Branch: [2x3 double] ```

## Input Arguments

collapse all

Volatility factor, specified as a character vector with one of the following values:

• `'Constant'`

$\sigma \left(t,T\right)$ = `Sigma_0`

• `'Stationary'`

$\sigma \left(t,T\right)$ = `Vol(T- t)` = `Vol(Term)`

• `'Exponential'`

$\sigma \left(t,T\right)$ = `Sigma_0*exp(-Lambda*(T-t))`

• `'Vasicek'`

$\sigma \left(t,T\right)$ = `Sigma_0*exp(-Decay(T-t))`

• `'Proportional'`

$\sigma \left(t,T\right)$ = `Prop(T-t)*max(SpotRate(t),MaxSpot)`

### Note

You can specify more than one `Factor` by concatenating Factor names and their associated parameters.

Data Types: `char`

Base volatility over a unit, specified as a scalar numeric value.

Data Types: `double`

Decay factor, specified as a scalar numeric value.

Data Types: `double`

Number of curve `Vol` values at sample points, specified as a `NCURVES`-by`1` vector.

Data Types: `double`

Number of curve `Term` values at sample points, specified as a `NCURVES`-by-`1` vector.

Data Types: `double`

Number of curve `Decay` values at sample points, specified as a `NPOINTS`-by-`1` vector.

Data Types: `double`

Number of curve `Prop` values at sample points, specified as a `NCURVES`-by-`1` vector.

Data Types: `double`

Maximum spot rate, specified as a scalar numeric value.

Data Types: `double`

## Output Arguments

collapse all

Structure specifying the volatility model for `bktree`. `hjmvolspec` defines an HJM forward-rate volatility process based on the specified input `Factor`.

collapse all

### Volatility Process

The volatility process is $\sigma \left(t,T\right)$, where t is the observation time and T is the starting time of a forward rate.

In a stationary process, the volatility term is T–t. Multiple factors can be specified sequentially.

The time values T, t, and `Term` are in coupon interval units specified by the `Compounding` input of `hjmtimespec`. For instance if `Compounding` = `2`, `Term = 1` is a semiannual period (six months).