I received this question in a job interview. I don't really have fixed income background and was wondering if anyone can help me understand how to figure out this for myself.

Create a 12 month time series representing the “A-AAA” yield at the 2yr, 5yr, 10yr, 20yr and 30yr maturity points. “A-AAA” is defined as all bonds whose S&P rating is A- or better or Moody’s rating is A3 or better.

Please provide results in the following format: Date 2yr Yield 5yr Yield 10yr Yield 20yr Yield 30yr Yield 4/30/2013
5/31/2013 …
2/28/2014 3/31/2014

The raw input data provided is bond level data for the constituents of a US Corporate Bond Index for each of 12 consecutive month ends from 4/30/2013 to 3/31/2014.

Example rows and file header

AsOfDate,Identifier,Amount Outstanding,Description,Coupon,Maturity Date, Price,Yield,Moody's Rating,S&P Rating

3/31/2014,00037BAA, 500000,ABB FINANCE USA INC,1.625,5/8/2017,100.436928,1.48,A2 ,A

  • 1
    $\begingroup$ ... What did you try? $\endgroup$
    – will
    Oct 18 '16 at 6:31

I find the task a little strange as there is usually a big difference between A and AAA yields.

But if this is really what is needed then I would do as follows. For each date:

i) I would pull in all of the bonds in the A-AAA category. I would then calculate their full prices by adding the accrued interest on to the provided clean price. That I can easily calculate from the bond information provided.

ii) I would then attempt to best-fit a zero curve form such as the Nelson-Siegel function to these full bond prices using a least squares approach. For example the Nelson-Siegel model has three main parameters $\beta_0, \beta_1,\beta_2$ and the exercise is to find the value of these parameters that fits the market prices best. This can be done easily in something like Excel Solver. The objective function you are minimising is something like

$\hat{O}(\beta_0,\beta_1,\beta_2) = \sum_{k=1}^K \left(P(\beta_0,\beta_1,\beta_2)-P_k \right)^2$

It might also be advisable to weight different bonds by their issuance size $N_k$. So you could change this to

$\hat{O}(\beta_0,\beta_1,\beta_2) = \sum_{k=1}^K N_k \left(P_k(\beta_0,\beta_1,\beta_2)-P_k \right)^2$

This would result in a curve that is the best fit to that set of bonds and which takes into account the different issuance sizes. Doing this will require me to value each bond $k$ as a stream of $M_k$ discounted cash flows using the appropriate zero rate $r(t)$ for that future date, i.e.

$P_k(\beta_0,\beta_1,\beta_2) = \sum_{i=1}^{M_k} \frac{c_k}{(1+r(t_i))^i}+ \frac{1}{(1+r(t_{M_k}))^{M_k}}$

I have written $r(t)$ rather than $r(t,\beta_0,\beta_1,\beta_2)$ to simplify notation.

Note how the discount zero rate $r(t)$ depends on the cash flow time. This approach is therefore more correct that using a yield-to-maturity based approach.

iii) From my fitted curve, I would calculate the 2Y, 5Y, 10Y, 20Y, 30Y zero rates as required. Calculating the different bond yields is simply a matter of solving for the bond coupon that makes a 2Y, 5Y, 10Y, 20Y, 30Y bond price to par. The formula for the $M$-year yield is

$y(M) = \left( 1-\frac{1}{(1+r(t_M))^M}\right) \left( {\sum_{i=1}^M \frac{1}{(1+r(t_i))^i}}\right)^{-1}$

This all assumes annual coupons. For semi-annual coupons you should adjust accordingly.

  • $\begingroup$ Thanks for the explanation. Need to do some research and review what you have written. $\endgroup$ Oct 19 '16 at 1:06

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.