## Libor.LiborDerivatives Class CallableReverseFloater

```java.lang.Object Libor.LiborDerivatives.LiborDerivative Libor.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.