Libor.LiborProcess
Class LiborVector

java.lang.Object
  extended byStatistics.RandomVector
      extended byLibor.LiborProcess.LiborVector

public abstract class LiborVector
extends RandomVector

The RandomVector of Libors U=(X_m(T_m),X_{m+1}(T_m),...,X_{n-1}(T_m)) as seen from time t=0, ie. a snapshot of the Libors L_j, j>=m at time T_m.

No conditioning on information available at time t. Time t is ignored. Useful only for pricing at time t=0.

The idea is that many Libor derivatives depend only on such a vector and that direct simulation of this vector is much faster than computation of Libor paths.

Unfortunately the only way to compute this vector accurately is to derive it from Libor paths which is exactly what we want to avoid. Fortunately there are log-Gaussian approximations to this vector (the vector of logarithms log(X_j(T_j)) is multinormal) with known mean and covariance matrix which can be simulated directly.

This class provides the basic interface to such a vector and implements many methods associated with a LiborProcess (such as zero coupon bonds, swap rates,...) now derived from the vector U instead of true Libor. This allows for fast approximate valuation of Libor derivatives which depend only on the vecor U.

A Libor process has methods to compute associated (approximate) Libor vectors based on either the X0 or X1 approximation to true Libor and each Libor derivative maintains a reference to both an underlying Libor process and associated Libor vector.

Note: obvioulsy there a large number of other vectors of Libors which one might need. The current vector this is useful in the pricing of zero coupon bonds (test case) and swaptions. Other vectors can be implemented similarly.


Constructor Summary
LiborVector(LiborProcess LP, int m)
          The approximation to true Libor is either X0 or X1 (see LiborProcess.ps).
 
Method Summary
 double B_i0(int i)
          The zero coupon bond B_i(0)=B(0,T_i).
 double B_iTm(int i)
          The zero coupon bond B_i(T_m).
 double B_pq0(int p, int q)
          The annuity B_pq(t)=sum_{k=p}^{q-1}delta_kB_{k+1}(t) at time t=0.
 double B_pqTm(int p, int q)
          The annuity B_pq(t)=sum_{k=p}^{q-1}delta_kB_{k+1}(t).
 double forwardTransport()
          Accrual factor 1/B(T_m,T_n)=1/B(n,m).
 double[] getValue(int t)
          No conditioning on information available at time t.
abstract  void nextSample()
          Writes the next random sample of the vector of (approximate) Libors U=(X_m(T_m),X_{m+1}(T_m),...,X_{n-1}(T_m)) into the array this.X.
 double S_pq0(int p, int q)
          The forward swap rate S_pq(t)=k(t,[T_p,T_q]) at time t=0.
 double S_pqTm(int p, int q)
          The forward swap rate S_pq(t)=k(t,[T_p,T_q]) at discrete time t=T_m.
 
Methods inherited from class Statistics.RandomVector
conditionalCorrelation, conditionalCovariance, conditionalCovarianceMatrix, conditionalExpectation, conditionalExpectation, conditionalMeanAndStandardDeviation, conditionalMeanAndStandardDeviation, conditionalMeanAndStandardDeviation, conditionalMeanAndStandardDeviation, correlation, covariance, covarianceMatrix, dim, expectation, expectation, main, meanAndStandardDeviation, meanAndStandardDeviation, meanAndStandardDeviation, meanAndStandardDeviation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LiborVector

public LiborVector(LiborProcess LP,
                   int m)

The approximation to true Libor is either X0 or X1 (see LiborProcess.ps). At present only X0 is supported and specification of approximation type X1 defaults to type X0.

Not intended to be instantiated directly. LiborVectors are returned by methods of the class LiborProcess.

Parameters:
LP - underlying Libor process.
m - Libors X_j(T_m), j>=m.
Method Detail

getValue

public double[] getValue(int t)

No conditioning on information available at time t. The time parameter is ignored.

Specified by:
getValue in class RandomVector
Parameters:
t - discrete time, ignored.

nextSample

public abstract void nextSample()
Writes the next random sample of the vector of (approximate) Libors U=(X_m(T_m),X_{m+1}(T_m),...,X_{n-1}(T_m)) into the array this.X.


B_i0

public double B_i0(int i)
The zero coupon bond B_i(0)=B(0,T_i).

Parameters:
i - bond matures at time T_i

B_iTm

public double B_iTm(int i)
The zero coupon bond B_i(T_m).

Parameters:
i - bond matures at time T_i, must satisfy T<=i.

forwardTransport

public double forwardTransport()

Accrual factor 1/B(T_m,T_n)=1/B(n,m). This factor shifts a cashflow from time T_m to the horizon T_n with Libors in state at time T_m.


S_pqTm

public double S_pqTm(int p,
                     int q)

The forward swap rate S_pq(t)=k(t,[T_p,T_q]) at discrete time t=T_m.

Parameters:
p - swap begins at T_p, must satisfy m<=p
q - swap ends at T_q (settled).

S_pq0

public double S_pq0(int p,
                    int q)

The forward swap rate S_pq(t)=k(t,[T_p,T_q]) at time t=0.

Parameters:
p - swap begins at T_p.
q - swap ends at T_q (settled).

B_pqTm

public double B_pqTm(int p,
                     int q)

The annuity B_pq(t)=sum_{k=p}^{q-1}delta_kB_{k+1}(t). at time t=T_m.

Parameters:
p - annuity begins at T_p.
q - annuity ends at T_q (settled).

B_pq0

public double B_pq0(int p,
                    int q)

The annuity B_pq(t)=sum_{k=p}^{q-1}delta_kB_{k+1}(t) at time t=0.

Parameters:
p - annuity begins at T_p.
q - annuity ends at T_q (settled).