Simulating Interest rates using CIR and HJM
While we can club equity, commodity and currency simulators in one category, interest rate simulators are a completely different animal. First because there is more than one way of modeling interest rates
Equilibrium models and Arbitrage free models.
An equilibrium model is based on a simplified macro model of interest rate drivers. For instance the Cox Ingersoll Ross (CIR) model assumes a mean reverting process (if rates go up, they must come down, if they come down they must go up) that makes assumptions about a long term average rate and an adjustment process that pulls interest rates back to the long term mean.
An arbitrage free model is a model that calibrates the output of the model on day one to the existing interest rate environment so that there are no opportunities for mis-pricing or arbitrage on day one between the real world and the interest rate model. For example the Black Derman and Toy (BDT) model calibrates the existing interest rate environment as represented by zero curves and the volatility at each point in the term structure with the model to project the entire forward rate term structure.
Second because unlike a price tree, there are a number of additional questions that need to be answered for an interest rate tree.
- Are you going to simulate one rate or the entire term structure? A single short rate projection model is built very differently than a multi factor forward rate projection model.
- What are the drivers that will drive interest rate movement in your model? Economic, statistical or data set /model specific
- How are you going to model these drivers? Assumptions, data sets, fit?
- Will your model be a theoretically correct model driven by fundamentals of economic theory?
- Or will it be a model that matches model prices at inception with market prices?
- If you do match market price, what is the process used to resolve differences between model prices and market prices? How do you calibrate your model to match market prices?
- How will you translate simulated interest rates into bond prices within your model? In addition to a rate lattice (tree) or simulator you also need a linked bond pricing lattice or simulator.
Compared to a price generating tree or Monte Carlo simulator for equities, currencies and commodities the same engine for an interest rate simulator also faces another interesting challenge. A conventional binomial tree assumes a constant risk free interest rate to hold throughout the length of the tree. The same assumption holds for a Monte Carlo simulator. When forecasting interest rates how can you simulate and then use the same rate in the same model at the same time. The short answer is you can’t.
We look at two interest rate simulation models from two different families. The one factor Cox Ingersoll Ross (CIR) Model and the multiple factor HJM model in this note. Both model first require the generation of an interest rate series through a grid, a lattice or a Monte Carlo Simulator, followed by conversion of the projected rates into applicable discount factors at specified points or nodes in the projection path. The discount factors are used to match market prices by solving for a set of model parameters that reduce the error between the simulated model prices and actual market prices for a given instrument.
Treatment of both models is based on the Security Pricing class taught by Mark Broadie at Columbia Business School and is covered in the attached pdf file on modeling interest rates.