I am building a curve using par swaps rates. For example, I have the following two semi-annual swaps for input

Duration   start          end            rate   
1year      14-Nov-2011    14-Nov-2012    0.58%
2year      14-Nov-2011    14-Nov-2013    0.60%

and I want to build a curve for 10-Nov-2011. I don't know how to calculate discount factor for 14-Nov-2011, since I don't know how to choose a rate for period from 10-Nov-2011 until 14-Nov-2011.

Does anyone know how to find discount factor for 14-Nov-2011?

Additional info: For previous input the curve looks like

Date     , Discount factor
10-Nov-11, 1                  
14-Nov-11, 0.999935743789455  ???
14-May-12, 0.997012282219702  
14-Nov-12, 0.99406543047691   
15-Nov-12, 0.993981821851122  
15-May-13, 0.990959091324625  
15-Nov-13, 0.987828512874748  

generated with parameters:

  • Accrual method: Actual/360.
  • Interpolation to use durring bootstrapping: Linear from spot rates.
  • Swap bootstrapping method: Linear spot rates.

In my calculation, if we choose rate 0.58% than the discount factor for 14-Nov-11 would be: $$\textrm{discount factor} = \frac{1}{1+rate\times accrual} = \frac{1}{1+\frac{0.58}{100} \times \frac{4}{360}} = 0.99993555970837$$

which is not the correct value.

Additionally, when I try to reproduce the rate which is used to build the curve I already have, I get: $$ rate = \frac{1-discount factor}{discount factor \times accrual} = \frac{1-0.999935743789455}{0.999935743789455 \times \frac{4}{360}}= 0.57834\%$$
but it is unclear to me how can I get this rate from input data.


Your valuation date is $t=$ Thu 10-Nov-11. The swaps start on the spot date which is $t + 2$ business days = Mon 14-Nov-11. The usual approach is to extrapolate between $t$ and the first curve pillar, in a manner consistent with the interpolation method that you are using for representing your discount curve. For instance if you use linear interpolation of zero coupon rates then you might want to use linear extrapolation of zero coupon rates. Alternatively some systems use flat extrapolation, it won't make much of a difference for the short end of the curve.

Note that to get a richer curve you probably want to add short term instruments, such as weekly and monthly maturities swaps for the OIS discount curve, or FRAs or futures for the Libor projection curves.

A quick note on bootstrapping: when bootstrapping you are making some interpolation assumptions (because you need discount factors for the swaps semi-annual cash flows).

The common approach is:

  1. sort your N instruments by increasing maturity.
  2. transform the instruments maturities into N time pillars.
  3. choose a curve interpolation/extrapolation method, so that you can view you curve as depending on N parameters (e.g. N zero coupon rates if you choose to interpolate zero coupon rates).
  4. View your bootstrapping problem as finding N parameters to match N prices.

This looks like an N dimensional problem, but as long as your interpolation is such that the curve up to maturity T does not depend on pillars > T (i.e. linear interpolation which is local is fine, but splines which are global are not fine) then the N dimensional problem reduces to a sequence of N one dimensional problems which are easily solved.

The advantage of this approach is that you can use any mix of instruments into your bootstrapping.

| improve this answer | |
  • $\begingroup$ Tnx for answer. If I understand you correctly, you said that I should take 0.58% as annual rate, and then interpolate this rate (e.g. linearly) for the period of (1year-2days)? So calculation should be (1-2/360)*0.58=0.5767 which is not the correct one. $\endgroup$ – Dejan Nov 17 '17 at 15:50
  • $\begingroup$ "The usual approach is to extrapolate between t and the first curve pillar, in a manner consistent with the interpolation method that you are using for representing your discount curve." Can you describe this part better, maybe using an example? $\endgroup$ – Dejan Nov 17 '17 at 15:53
  • $\begingroup$ It is a bit more involved than that. I have edited my post to describe how bootstrapping can be done in a very generic fashion. $\endgroup$ – Antoine Conze Nov 17 '17 at 16:08
  • $\begingroup$ With this procedure I can find correctly all curve values (except for 14-Nov-11). I use linear interpolation for zero coupon rates and make interpolation between known rates. It works well in the middle of the curve. But for the first period I do not know what rates I should interpolate to get the rate for the period 10-Nov-2011 -> 14-Nov-2011. $\endgroup$ – Dejan Nov 17 '17 at 16:46
  • $\begingroup$ Hello @AntoineConze, I've a similar issue where Im trying to replicate murex curve but I get different results can you please check this post please : quant.stackexchange.com/questions/50358/… I can't figure out where I did make a mistake .... $\endgroup$ – Gogo78 Jan 5 at 16:22

If we want to find the rate before the first known swap (or cash, future,etc) we need to do the following:

  1. Sort inputs by termination dates and choose the rate from the first one. In my case it is 0.58%. So, let us denote $\textrm{firstIntervalRate}=0.58\%$.
  2. Rate for the period from the valuation date until the first start (effective) date should be calculated using the following formula $$\begin{align} r &= \left ( (1+\textrm{firstIntervalRate})^{accrual}-1\right ) \times \frac{1}{accrual}\\ &=\left ( \left (1+ \frac{0.58}{100}\right )^{\frac{4}{360}}-1 \right ) \times \frac{360}{4}= 0.57834\%.\end{align} $$


If we have $N$ payments with the given annual rate (in my case it is $\textrm{firstIntervalRate}$) than the rate for every period $r_p$ would satisfy

$$\textrm{firstIntervalRate} = \prod_{n=1}^{N}(1+r_p)-1= (1+r_p)^N -1, $$ so the rate for the period of $1/N$ of one year would be $$ r_p=(1+\textrm{firstIntervalRate})^{1/N}-1.$$ If we want a rate for an arbitrary number of days, we need to change $1/N$ in previous formula with the actual $accrual$ factor. Now, we have rate $r_p$ for some number of days (in my case it is 4 days) and next step is to make it annualized by multiplying with the number of payments per year (or in arbitrary case with the value of $1/accrual$).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.