Libor.LiborDerivatives
Class CallableReverseFloater

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

public class CallableReverseFloater
extends LiborDerivative

The callable reverse floater CRF(p,q,K1,K2) is simply a call on the ReverseFloater RF(p,q,K1,K2) with zero strike expiring at time T_p.

This call is exercised precisely if the value of the reverse floater at time T_p is positive and hence has payoff max(RF(T_p),0) where RF(T_p) denotes the price of the reverse floater at time T_p.


Constructor Summary
CallableReverseFloater(LiborProcess LP, int p, int q, double K1, double K2)
          Libors L_j needed for j>=p and until time T_p.
 
Method Summary
 double controlVariateMean(int t)
          Mean of the control variate conditioned on the state of the Libor path at time t.
 double[] currentControlledForwardPayoff()
          Control variate is sum of forward transported Libors (B_p(T_p)-B_q(T_p))/B_n(T_p)(1-B_q(T_p))/B_n(T_p).
 double currentForwardPayoff()
          The payoff at time T_p is simply the price transported forward to time T_n, value in current Libor path.
static void main(java.lang.String[] args)
          Test program.
 
Methods inherited from class Libor.LiborDerivatives.LiborDerivative
analyticForwardPrice, controlledForwardPayoff, controlledMonteCarloForwardPrice, forwardPayoff, lognormalForwardPayoff, lognormalForwardPayoffSample, lognormalMonteCarloForwardPrice, monteCarloForwardPrice
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CallableReverseFloater

public CallableReverseFloater(LiborProcess LP,
                              int p,
                              int q,
                              double K1,
                              double K2)

Libors L_j needed for j>=p and until time T_p.

Parameters:
LP - underlying Libor process.
p - accrual starts T_p.
q - accrual stops T_q, with 0<p<q<=n.
K1 - see ReverseFloater.
K2 - see ReverseFloater.
Method Detail

currentForwardPayoff

public double currentForwardPayoff()
The payoff at time T_p is simply the price transported forward to time T_n, value in current Libor path.

Specified by:
currentForwardPayoff in class LiborDerivative

controlVariateMean

public double controlVariateMean(int t)
Mean of the control variate conditioned on the state of the Libor path at time t. This is simply (B_p(t)-B_q(t))/B_n(t) (a P_n-martingale). See LiborProcess.ps.

Overrides:
controlVariateMean in class LiborDerivative
Parameters:
t - current discrete time t<=p.

currentControlledForwardPayoff

public double[] currentControlledForwardPayoff()
Control variate is sum of forward transported Libors (B_p(T_p)-B_q(T_p))/B_n(T_p)(1-B_q(T_p))/B_n(T_p). See LiborProcess.ps

Overrides:
currentControlledForwardPayoff in class LiborDerivative

main

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

Test program. Allocates a Libor process of dimension n=15 and prices calleable reverse floater CRF(p,q,K1,K2) with p=5, q=15, K1=0.09, K2=0.03. All Libors are intialized at L_j(0)=0.04.

Computes the Monte Carlo forward price of the calleable reverse floater with and without control variates and the correlation of the payoff to the control variate.