Financial Derivatives Toolbox    

Heath-Jarrow-Morton (HJM) Model

The Heath-Jarrow-Morton (HJM) model is one of the most widely used models for pricing interest rate derivatives. The model considers a given initial term structure of interest rates and a specification of the volatility of forward rates to build a tree representing the evolution of the interest rates, based upon a statistical process. For further explanation, see the book "Modelling Fixed Income Securities and Interest Rate Options" by Robert A. Jarrow.

Building an HJM Forward Rate Tree

The HJM tree of forward rates is the fundamental unit representing the evolution of interest rates in a given period of time. This section explains how to create the HJM forward rate tree using the Financial Derivatives Toolbox.

The MATLAB function that creates the HJM forward rate tree is hjmtree. This function takes three structures as input arguments:

Creating the HJM Forward Rate Tree (hjmtree)

Calling the function hjmtree creates the structure, HJMTree, containing time and forward rate information for a bushy tree.

This structure is a self-contained unit that includes the HJM tree of rates (found in the FwdTree field of the structure), and the volatility, rate, and time specifications used in building this tree.

The calling syntax for hjmtree is

where:

Specifying the Volatility Model (VolSpec)

The function hjmvolspec generates the structure VolSpec, which specifies the volatility process used in the creation of the forward rate trees. In this context represents the starting time of the forward rate, and represents the observation time. The volatility process can be constructed from a combination of factors specified sequentially in the call to hjmvolspec. Each factor specification starts with a string specifying the name of the factor, followed by the pertinent parameters.

Consider an example that uses a single factor, specifically, a constant-sigma factor. The constant factor specification requires only one parameter, the value of . In this case, the value corresponds to 0.10.

The NumFactors field of the VolSpec structure, VolsSpec.NumFactors = 1, reveals that the number of factors used to generate VolSpec was one. The FactorModels field indicates that it is a 'Constant' factor, and the NumBranches field indicates the number of branches. As a consequence, each node of the resulting tree has two branches, one going up, and the other going down.

Consider now a two-factor volatility process made from a proportional factor and an exponential factor.

The output shows that the volatility specification was generated using two factors. The tree has three branches per node. Each branch has probabilities of 0.25, 0.25, and 0.5, going from top to bottom.

Specifying the Interest Rate Term Structure (RateSpec)

The structure RateSpec is an interest term structure that defines the initial forward rate specification from which the tree rates are derived. The section Interest Rate Term Structure explains how to create these structures using the function intenvset, given the interest rates, the starting and ending dates for each rate, and the compounding value.

Consider the example

Use the function datedisp to examine the dates defined in the variable RateSpec. For example

Specifying the Time Structure (TimeSpec)

The structure TimeSpec specifies the time structure for an HJM tree. This structure defines the mapping between the observation times at each level of the tree and the corresponding dates.

TimeSpec is built using the function hjmtimespec. The hjmtimespec function requires three input arguments:

The syntax used for calling hjmtimespec is

where:

Calling hjmtimespec with the same data used to create the interest rate term structure, RateSpec builds the structure that specifies the time layout for the tree.

Note that the maturities specified when building TimeSpec do not have to coincide with the EndDates of the rate intervals in RateSpec. Since TimeSpec defines the time-date mapping of the HJM tree, the rates in RateSpec are interpolated to obtain the initial rates with maturities equal to those found in TimeSpec.

Example: Creating an HJM Tree

Use the VolSpec, RateSpec, and TimeSpec you have created as input to the HJMTree function to create an HJM tree.


  Sensitivity Using HJM Trees in MATLAB