Specify Heath-Jarrow-Morton interest-rate volatility process


Volspec = hjmvolspec(varargin)


The arguments to hjmvolspec vary according to the type and number of volatility factors specified when calling the function. Factors are specified by pairs of names and parameter sets. Factor names can be 'Constant', 'Stationary', 'Exponential', 'Vasicek', or 'Proportional'. The parameter set is specific for each of these factor types:

  • Constant volatility (Ho-Lee):
    VolSpec = hjmvolspec('Constant', Sigma_0)

  • Stationary volatility:
    VolSpec = hjmvolspec('Stationary', CurveVol, CurveTerm)

  • Exponential volatility:
    VolSpec = hjmvolspec('Exponential', Sigma_0, Lambda)

  • Vasicek, Hull-White:
    VolSpec = hjmvolspec('Vasicek', Sigma_0, CurveDecay, CurveTerm)

  • Nearly proportional stationary:
    VolSpec = hjmvolspec('Proportional', CurveProp, CurveTerm, MaxSpot)

You can specify more than one factor by concatenating names and parameter sets.

The following table defines the various arguments to hjmvolspec.




Scalar base volatility over a unit time.


Scalar decay factor.


Number of curves (NCURVES)-by1 vector of Vol values at sample points.


NCURVES-by-1 vector of Decay values at sample points.


NCURVES-by-1 vector of Prop values at sample points.


NCURVES-by-1 vector of Term sample points.

    Note:   See the volatility specifications formulas below for a description of Vol, Decay, Prop, and Term.


Volspec = hjmvolspec(varargin) computes VolSpec, a structure that specifies the volatility model for hjmtree.

hjmvolspec specifies an HJM forward-rate volatility process. Each factor is specified with one of the functional forms.

Volatility SpecificationFormula


σ(t,T) = Sigma_0


σ(t,T) = Vol(T-t) = Vol(Term)


σ(t,T) = Sigma_0*exp(-Lambda*(T-t))

Vasicek, Hull-White

σ(t,T) = Sigma_0*exp(-Decay(T-t))


σ(t,T) = Prop(T-t)*max(SpotRate(t), MaxSpot)

The volatility process is σ(t,T), 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).


collapse all

Compute the VolSpec Structure to Specify a Proportional Volatility Model for HJMTree

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 = 

          FinObj: 'HJMVolSpec'
    FactorModels: {'Proportional'}
      FactorArgs: {{1x3 cell}}
      SigmaShift: 0
      NumFactors: 1
       NumBranch: 2
         PBranch: [0.5000 0.5000]
     Fact2Branch: [-1 1]

Compute the VolSpec Structure to Specify an Exponential Volatility Model for HJMTree

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 = 

          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]

Related Examples

See Also


Introduced before R2006a

Was this topic helpful?