next up previous contents index
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];
};


Sources for further readings.

Section 15 of Hull (1993) has a short discussion.

The original references are Rendleman (1979) and Rendleman and Bartter (1980).


next up previous contents index
Next: Vasicek bond pricing. Up: Fixed Income modelling, with Previous: Black Scholes bond pricing.   Contents   Index
Bernt Arne Odegaard
1999-09-09