next up previous contents index
Next: Normal Distribution approximations. Up: Fixed Income modelling, with Previous: The Rendleman and Bartter   Contents   Index


Vasicek bond pricing.

If the term structure model is Vasicek's model there is a solution for the price of a zero coupon model, due to Jamshidan (1989).

Under Vacisek's model the process for the short rate is assumed to follow.

\begin{displaymath}dr = a(b-r)dt + \sigma dZ \end{displaymath}

where $a$, $b$ and $\sigma$ are constants. We have seen earlier how to calculate the discount factor in this case. We now want to consider an European Call option in this setting.

Let $P(t,s)$ be the time $t$ price of a zero coupon bond with a payment of $1 at time $s$ (the discount factor). The price at time $t$ of a European call option maturing at time $T$ on on a discount bond maturing at time $s$ is( See Jamshidan (1989) and Hull (1993))

\begin{displaymath}P(t,s)N(h) - XP(t,T)N(h-\sigma_P) \end{displaymath}

where

\begin{displaymath}h=\frac{1}{\sigma_P}\ln \frac{P(t,s)}{P(t,T)X} + \frac{1}{2}\sigma_P \end{displaymath}


\begin{displaymath}\sigma_P = v(t,T)B(T,s) \end{displaymath}


\begin{displaymath}B(t,T) = \frac{1-e^{-a(T-t)}}{a} \end{displaymath}


\begin{displaymath}v(t,T)^2 = \frac{\sigma^2({1-e^{-a(T-t)}})}{2a} \end{displaymath}

In the case of $a=0$,

\begin{displaymath}v(t,T)=\sigma\sqrt{T-t} \end{displaymath}


\begin{displaymath}\sigma_P = \sigma(s-T)\sqrt{T-t} \end{displaymath}



// file bondopt_call_vasicek.cc
// author: Bernt A Oedegaard.

#include <cmath>
#include "normdist.h"
#include "fin_algoritms.h"

double bond_option_price_call_zero_vasicek(double X,  // exercise price
					   double r, // current interest rate
					   double option_time_to_maturity,
					   double bond_time_to_maturity,
					   double a,  // parameters
					   double b, 
					   double sigma)
{  
    double T_t = option_time_to_maturity;
    double s_t = bond_time_to_maturity;
    double T_s = s_t-T_t;
    double v_t_T;
    double sigma_P;
    if (a==0.0) { 
	v_t_T = sigma * sqrt ( T_t ) ;
	sigma_P = sigma*T_s*sqrt(T_t); 
    }
    else {
	v_t_T = sqrt (sigma*sigma*(1-exp(-2*a*T_t))/(2*a));
	double B_T_s = (1-exp(-a*T_s))/a;
	sigma_P = v_t_T*B_T_s;
    };
    double h = (1.0/sigma_P) * log (
	term_structure_discount_factor_vasicek(s_t,r,a,b,sigma)/
	(term_structure_discount_factor_vasicek(T_t,r,a,b,sigma)*X) )
	+ sigma_P/2.0;
    double c = 
	term_structure_discount_factor_vasicek(s_t,r,a,b,sigma)*N(h)
	-X*term_structure_discount_factor_vasicek(T_t,r,a,b,sigma)*N(h-sigma_P);
    return c;
};



next up previous contents index
Next: Normal Distribution approximations. Up: Fixed Income modelling, with Previous: The Rendleman and Bartter   Contents   Index
Bernt Arne Odegaard
1999-09-09