Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

DriftlessLMM Class Reference

#include <DriftlessLMM.h>

Inheritance diagram for DriftlessLMM:

LiborMarketModel List of all members.

Detailed Description

Libor market model which simulates the "forward transported" Libors

with Gaussian, that is, state independent factor loadings. Simulation takes place in the forward martingale measure at time where these quantities are local martingales and hence driftless. This speeds up path simulation by a factor of three. Moreover is a Gaussian process with known distribution and time steps can be simulated precisely without approximation. See book, 6.8.

By contrast a simulation of the Libors with Gaussian factor loadings does not lead to a Gaussian process or even a process with known distribution because of the state dependent Libor drift. Time steps cannot be simulated precisely and path computation is approximate.

The accrual factors are the most efficient way to store the state of the underlying Libor process and can easily be computed from the quantities . Libors , annuities and swap rates are then computed from the with minimal effort. This makes this by far the fastest and smoothest Libor market model. See book, 6.8 for details and notation.

The Libors themselves have stochastic volatility and consequently the Black caplet formula no longer applies directly. However it can still be used to get a highly accurate analytic approximation to the caplet price and the same is true of swaptions.

Paths step directly from one point on the tenor structure to the following point and are simulated in the forward martingale measure at the terminal time . The stochastic dynamics is either pseudo random (MC) based on the Mersenne Twister or quasi random (QMC) based on the Sobol sequence.

Author:
Michael J. Meyer

Definition at line 92 of file DriftlessLMM.h.

Public Member Functions

void switchToQMC ()
void switchToMC ()
Real XL (int j, int t) const
const RealVectorXLvect (int t, int p)
 DriftlessLMM (LiborFactorLoading *fl)
void newWienerIncrements (int t)
void printWienerIncrements (int t, int s) const
int effectiveDimension (int t, int s) const
void timeStep (int t, int p)
void timeStep (int t)
Real vol (int i) const
Real H_i0 (int i) const
Real H_it (int i, int t)
Real H_ii (int i)
Real H_pq (int p, int q, int t)
Real B0 (int i) const
Real B (int i, int t)
Real swapRate (int p, int q, int t)
Real swapRate (int p, int q)
Real B_pq (int p, int q, int t)
Real B_pq (int p, int q)
Real capletAggregateVolatility (int i) const
Real swaptionAggregateVolatility (int p, int q, int t) const
Real bondAggregateVolatility (Bond *B, int t) const
std::ostream & printSelf (std::ostream &os) const

Static Public Member Functions

LiborMarketModelsample (int n, int volType, int corrType)


Constructor & Destructor Documentation

DriftlessLMM::DriftlessLMM LiborFactorLoading   fl
 

Constructor, sets default stochastic generator: Mersenne Twister.

Parameters:
fl volatility and correlation structure, see FactorLoading.


Member Function Documentation

void DriftlessLMM::switchToQMC  
 

Switches to quasi random dynamics based on Sobol sequence.

void DriftlessLMM::switchToMC  
 

Switches to pseudo random dynamics based on Mersenne Twister.

Real DriftlessLMM::XL int    j,
int    t
const [virtual]
 

X-Libor , value in current path.

Parameters:
j Libor index.
t discrete time.

Implements LiborMarketModel.

const RealVector& DriftlessLMM::XLvect int    t,
int    p
[virtual]
 

X-Libor vector , value in current path. Index base p, natural indices.

Parameters:
p index of first Libor.
t discrete time.

Implements LiborMarketModel.

LiborMarketModel* DriftlessLMM::sample int    n,
int    volType,
int    corrType
[static]
 

Sample LMM, quarterly accrual.

Parameters:
n dimension (number of accrual intervals).
volType type of volatility surface (VolSurface::JR,M,CONST).
corrType type of correlations (Correlations::JR,CS).

void DriftlessLMM::newWienerIncrements int    t [virtual]
 

Writes a new set of standard normal increments driving a full Libor path to time t into the field Z. Forwards the request to the StochasticGenerator.

Reimplemented from LiborMarketModel.

void DriftlessLMM::printWienerIncrements int    t,
int    s
const [virtual]
 

Prints the matrix Z of current Wiener increments, method is used for testing only.

Reimplemented from LiborMarketModel.

int DriftlessLMM::effectiveDimension int    t,
int    s
const [inline, virtual]
 

The effective dimension of the simulation, that is, the number of standard normal deviates needed to compute one path from discrete time t to discrete time s. This is the dimension of the low discrepancy sequence generator needed for QMC simulation.

Note: if this is too high (>623 for Mersenne Twister) a random number generator may not be able to ensure equidistribution in this dimension calling into question the mathematical basis for Monte Carlo expectations.

Reimplemented from LiborMarketModel.

Definition at line 218 of file DriftlessLMM.h.

void DriftlessLMM::timeStep int    t,
int    p
[virtual]
 

Time step of X-Libors . (discrete time t to discrete time t+1) in a single step using a predictor-corrector algorithm and the current matrix Z of standard normal increments. See book 6.5.1.

Parameters:
t current discrete time (continuous time ).
p Libors evolved are .

Implements LiborMarketModel.

Referenced by timeStep().

void DriftlessLMM::timeStep int    t [inline]
 

Evolves the full set of Libors from discrete time t to time t+1 in a single time step using the current matrix Z of standard normal increments.

Parameters:
t current discrete time (continuous time T_t).

Definition at line 244 of file DriftlessLMM.h.

References timeStep().

Real DriftlessLMM::vol int    i const
 

Annualized volatility of .

Parameters:
i Libor index.

Reimplemented from LiborMarketModel.

Real DriftlessLMM::H_i0 int    i const [virtual]
 

Accrual factor , forward transport with Libors in state at time t=0.

Reimplemented from LiborMarketModel.

Real DriftlessLMM::H_it int    i,
int    t
[virtual]
 

Accrual factor . This factor shifts a cashflow from time with Libors in state at time (discrete time t). In other words the shift is carried out at discrete time t. Needs all up to time .

Parameters:
t current discrete time (continuous time T_t).
i cashflow shifted from time T_i to horizon.

Reimplemented from LiborMarketModel.

Real DriftlessLMM::H_ii int    i [virtual]
 

, that is the shift is carried out with Libors in state at time (discrete time t=i).

Parameters:
i cashflow shifted from time to horizon.

Reimplemented from LiborMarketModel.

Real DriftlessLMM::H_pq int    p,
int    q,
int    t
[virtual]
 

, the forward price at horizon of the annuity along at time .

Parameters:
p,q annuity along .
t price at time (accrued forward to time ).

Reimplemented from LiborMarketModel.

Real DriftlessLMM::B0 int    i const [virtual]
 

The zero coupon bond .

Parameters:
i bond matures at time .

Reimplemented from LiborMarketModel.

Real DriftlessLMM::B int    i,
int    t
[virtual]
 

The zero coupon bond with . Assumes that all Libors have been computed up to time (discrete time t).

Parameters:
t bond evaluated at time
i bond matures at time .

Reimplemented from LiborMarketModel.

Real DriftlessLMM::swapRate int    p,
int    q,
int    t
[virtual]
 

The forward swap rate at discrete time t (continuous time ). Needs all Libors up to time t.

Parameters:
p,q swap along .
t discrete time.

Reimplemented from LiborMarketModel.

Referenced by swapRate().

Real DriftlessLMM::swapRate int    p,
int    q
[inline]
 

The forward swap rate at time t=0.

Parameters:
p,q swap along .

Definition at line 346 of file DriftlessLMM.h.

References Real, and swapRate().

Real DriftlessLMM::B_pq int    p,
int    q,
int    t
[virtual]
 

The annuity . Needs all Libors up to time t.

Parameters:
p,q annuity along .
t discrete time.

Reimplemented from LiborMarketModel.

Referenced by B_pq().

Real DriftlessLMM::B_pq int    p,
int    q
[inline]
 

The annuity at time t=0.

Parameters:
p,q annuity along .

Definition at line 369 of file DriftlessLMM.h.

References B_pq(), and Real.

Real DriftlessLMM::capletAggregateVolatility int    i const [virtual]
 

Forecast for the total caplet volatility

on the interval . Here . Exact if Libors have deterministic volatility. Quantity is needed for Black caplet formula.

Parameters:
i caplet on .

Reimplemented from LiborMarketModel.

Real DriftlessLMM::swaptionAggregateVolatility int    p,
int    q,
int    t
const [virtual]
 

Forecast for the total swap rate volatility

on the interval . Here is the logarithm of the swap rate. Quantity is needed for Black approximate swaption formula.

Parameters:
p,q swap along on .
t swaption exercise at time .

Reimplemented from LiborMarketModel.

Real DriftlessLMM::bondAggregateVolatility Bond   B,
int    t
const [virtual]
 

Forecast for the total volatility (of the relevant quantity) on the interval needed for pricing the call on a bond. See book, 6.9.4.

Parameters:
B the bond
t call on bond exercises at time .

Reimplemented from LiborMarketModel.

std::ostream& DriftlessLMM::printSelf std::ostream &    os const [virtual]
 

A message what type of factor loading it is, all the parameter values.

Implements LiborMarketModel.


The documentation for this class was generated from the following file:
Generated on Mon Sep 22 02:16:32 2003 for Libor-Library by doxygen1.3-rc3