I want to calibrate the HW one factor model to current market data. How do I set the function $\theta(t)$ in
$$ \mathrm{d}r(t) = \kappa(\theta(t)-r(t))\mathrm{d}t+\sigma\mathrm{d}W(t) $$ to replicate the current yield curve, i.e. what data do I look at to calibrate (Libor curves?) and how do I use these data to get $\theta$?
Answer
Concerning your first question, this depends on what curve, currency, etc. you are interested in. The general method for constructing yield curves is called bootstrapping which allows you to derive spot, zero-coupon rates from the known price of coupon-bearing instruments $-$ such as bonds or swaps. In general:
- You start picking short-term (typically less than 1 year), zero-coupon instruments, such as Forward Rate Agreements (FRAs), futures, Certificate Deposits (CDs) to start the curve;
- Then for longer maturities (typically longer than 1 year) you pick coupon-bearing instruments such as swaps and you iteratively bootstrap zero-coupon rates for those maturities from the prices of these instruments and the previous zero-coupon rates you already have.
For a Euro curve, you might look at rate futures for maturities lower than 1 year and to standard fixed-for-floating swaps for longer maturities to derive a Libor-based yield curve.
As to your second question, we assume you have a bootstrapped yield curve up to a maturity $T_{\max}$. Then you can derive the price of zero-coupon bonds $B(0,T)$ for a continuum of maturities $T \in [0;T_{\max}]$ by interpolation. As these prices are derived from market data, I will write them as $B^M(0,T)$.
Now, note that there exists a relationship between zero-coupon bonds and instantaneous forward rates $f(0,T)$ which is the following:
$$ f(0,T)=-\frac{\partial \ln B}{\partial T}(0,T) $$
Thus you can derive market-implied instantaneous forward rates $f^M(0,T)$ from the current term structure $\left(B^M(0,T):T \in [0;T_{\max]}\right)$ $-$ using numerical differentiation techniques such as finite differences.
Slightly rewriting your SDE:
$$ \mathrm{d}r(t) = (\theta(t)-\kappa r(t))\mathrm{d}t+\sigma\mathrm{d}W(t) $$
In order to match your bootstrapped term structure you need to set theta as follows:
$$ \theta(t) = \frac{\partial f^M}{\partial T}(0,t) + \kappa f^M(0,t) + \frac{\sigma^2}{2\kappa}(1-e^{-2\kappa t})$$
Note that with the calibration procedure described above you will calibrate the model only to the yield curve. If you want to calibrate to more complex products such as options you can turn parameters $\kappa$ and $\sigma$ into time-dependent functions: $\kappa(t)$, $\sigma(t)$.
No comments:
Post a Comment