Next: Vasicek bond pricing. Up: Fixed Income modelling, with Previous: Black Scholes bond pricing.   Contents   Index

Subsections

# The Rendleman and Bartter model

The Rendleman and Bartter approach to valuation of interest rate contingent claims is a particular simple one. Essentially, it is to apply the same binomial approach that is used to approximate options in the Black Scholes world, but the random variable is now the interest rate, which has implications for how we do discounting.

I will follow the notation used in Hull (1993) (page 385).

```// file rend_bar.cc
// author: Bernt A Oedegaard

#include <cmath>
#include <algorithm>
#include <vector>

double bond_option_price_call_zero_american_rendleman_bartter(double X,
double option_maturity,
double S,
double M,                   // term structure paramters
double interest,            // current short interest rate
double bond_maturity,        // time to maturity for underlying bond
double maturity_payment,
int no_steps)
//  call on a zero coupon bond.
{
double delta_t = bond_maturity/no_steps;

double u=exp(S*sqrt(delta_t));
double d=1/u;
double p_up = (exp(M*delta_t)-d)/(u-d);
double p_down = 1.0-p_up;

vector<double> r(no_steps+1);
r[0]=interest*pow(d,no_steps);
double uu=u*u;
int i;
for (i=1;i<=no_steps;++i){ r[i]=r[i-1]*uu;};
vector<double> P(no_steps+1);
for (i=0;i<=no_steps;++i){ 	P[i] = maturity_payment;    };
int no_call_steps=int(no_steps*option_maturity/bond_maturity);
for (int curr_step=no_steps;curr_step>no_call_steps;--curr_step) {
for (i=0;i<curr_step;i++) {
r[i]  = r[i]*u;
P[i] = exp(-r[i]*delta_t)*(p_down*P[i]+p_up*P[i+1]);
};
};
vector<double> C (no_call_steps+1);
for (i=0;i<=no_call_steps;++i){ C[i]=max(0.0,P[i]-X); };
for (int curr_step=no_call_steps;curr_step>=0;--curr_step) {
for (i=0;i<curr_step;i++) {
r[i]  = r[i]*u;
P[i] = exp(-r[i]*delta_t)*(p_down*P[i]+p_up*P[i+1]);
C[i]=max(P[i]-X, exp(-r[i]*delta_t)*(p_up*C[i+1]+p_down*C[i]));
};
};
return C[0];
};
```