Libor.LiborDerivatives
Class ZeroCouponBond

java.lang.Object
  extended byLibor.LiborDerivatives.LiborDerivative
      extended byLibor.LiborDerivatives.ZeroCouponBond

public class ZeroCouponBond
extends LiborDerivative

A zero coupon bond is the simplest example of a Libor derivative. The payoff is the constant random variable 1. Zero coupon bond prices can also be computed directly from the Libors. In this way the Zero coupon bond as a Libor derivative is a test case of a Libor derivative with known analytic price. This can be used to validate model correctness, to see how well the log-normal Libor approximations work in the pricing of derivatives etc.

Our implementation assumes that the bond matures at a Libor reset time T_i.


Constructor Summary
ZeroCouponBond(LiborProcess LP, int i)
           
 
Method Summary
 double analyticForwardPrice(int t)
          Analytic T_n-forward price at time t.
 double currentForwardPayoff()
          The payoff 1 at time T_i transported forward to time T_n, value in current Libor path.
 double lognormalForwardPayoffSample()
          The forward transported payoff (as seen from time t=0) computed from a new sample of the LiborVector object U=(X^0_i(T_i),...,X^0_{n-1}(T_i)), a log-normal approximating to the vector of true Libors U=(X_i(T_i),...,X_{n-1}(T_i)).
static void main(java.lang.String[] args)
          Test program.
 
Methods inherited from class Libor.LiborDerivatives.LiborDerivative
controlledForwardPayoff, controlledMonteCarloForwardPrice, controlVariateMean, currentControlledForwardPayoff, forwardPayoff, lognormalForwardPayoff, lognormalMonteCarloForwardPrice, monteCarloForwardPrice
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ZeroCouponBond

public ZeroCouponBond(LiborProcess LP,
                      int i)
Parameters:
LP - underlying Libor process.
i - bond matures at time T_i, must satisfy 0<i<=n.
Method Detail

currentForwardPayoff

public double currentForwardPayoff()
The payoff 1 at time T_i transported forward to time T_n, value in current Libor path.

Specified by:
currentForwardPayoff in class LiborDerivative

lognormalForwardPayoffSample

public double lognormalForwardPayoffSample()

The forward transported payoff (as seen from time t=0) computed from a new sample of the LiborVector object U=(X^0_i(T_i),...,X^0_{n-1}(T_i)), a log-normal approximating to the vector of true Libors U=(X_i(T_i),...,X_{n-1}(T_i)). Recall X_j(t)=delta_jL_j(t), see document LiborProcess.ps.

Overrides:
lognormalForwardPayoffSample in class LiborDerivative

analyticForwardPrice

public double analyticForwardPrice(int t)
Analytic T_n-forward price at time t.

Overrides:
analyticForwardPrice in class LiborDerivative
Parameters:
t - current discrete time.

main

public static void main(java.lang.String[] args)

Test program. Allocates a Libor process of dimension n=20 the zero coupon bond maturing at time T_10.

Then computes the Monte Carlo forward price of this zero coupon bond at time T_n and compares it to the analytic price computed directly from the Libors and to the Monte Carlo price based on the log-normal Libor approximation X0. The forward transporting and discounting involves all Libors L_j, j>=10.