Valuation of most financial product requires the product to be quoted or traded on daily basis. MGS for instance are traded daily but mainly on the so called benchmark issue. Nevertheless, BIDS (Bonds Information and Dissemination System) provided valuation prices for all MGS issues and has become the source for marking to market of MYR bonds including PDS.

It is a necessity at this juncture to illustrate how a discount curve can be generated from existing par bonds or par bond indicative level. A par bond is a bond trading at par or 100 i.e. the coupon and the yield of the bond is at the same level. The method shown is applicable to other products such as interest rate swap and cross currency swap discussed in the following chapters.

For our illustration we will assume value date of June 17, 2020. We will used T-bill rates for the short term as it the issuer is the same with MGS. Combined they are also referred to as the risk free curve. Table 4-7 is a sample discount rate for T-bills and calculation have been made to convert the rates to discount factors.

Other relevant information that might be helpful to get a more accurate discount curve would be the T-bills discount rate. Since both are issued by the Malaysian government, the T-bills and MGS curves become the risk free curve. T-Bill rates are provided in the Table 4-8. Maturity dates are provided to enable us to calculate the number of days and convert the discount rate discount factors using equations in Chapter 1. Table 4-10 shows the result of our bootstrapping process described below

Recall that when we value a bond type instrument, each of the cash flows are discounted at the same yield. In a bootstrapping process, each cash flow is discounted at a the respective discount factor. A par bond means that the the yield, the bond is valued at 100. By the same token, when we refer to par rate or yield, it refers to the yield at which the instrument is valued at 100.

As an example, let have a look at the 1Y par yield provided in Table 4-9. The value of the bond is already knwon to be 100 and at 100, the coupon is the same as the yield. The value of the bond is derived using the following formula:

\( \begin{align} 100 &= c.fv.dcf_1.df_1 + \left(fv+c.fv.dcf_2\right).df_2 \\ \textrm{where } c &= \textrm{ coupon rate} \\ dcf_1 &= \textrm{ day count factor for the first coupon}\\ df_1 &= \textrm{ discount factor to the first coupon date}\\ dcf_2 &= \textrm{ day count factor for the second coupon}\\ df_2 &= \textrm{ discount factor to the second coupon date}\\ fv &= \textrm{ face value}\\ \end{align} \)

We know that \(c\) = 2.85%, \(df_1\) = 0,986, \(dcf_1\) and \(dcf_2\) = 0.5 because MGS is using Actual/Actual day count convention and \(fv\) = 100. The only unknown in the formula is \(df_2\) which can resolved by rearranging the formula:

\( \begin{align} df_2 &= \dfrac{100 - c.fv.dcf_1.df_1}{fv+c.fv.dcf_2}\\ &=\dfrac{100-0.0285\textrm{ x }0.5\textrm{ x }0.9860\textrm{ x }100}{100+0.0285\textrm{ x }0.5\textrm{ x }100}\\ &= 0.972097 \end{align} \)

We solved the discount factor for 1Y and the process can be repeated to obtain other discount factors. As a general formula, user can use the following to repeat the process:

Calculating the discount factor simple when all the information are available as in the case of our example above. The next MGS tenor available is a two-year par yield. This will present some difficulties since there is a coupon cash flow on the 18th month and the appropriate discount factor is not available for perusal. This is a common problem which is resolved by using interpolation. Since we are using python, we used interpolation method available in scipy. In particular, we are using 'PchipInterpolator' which is a piecewise cubic hermite interpolating polynomial - a common interpolation technique used for interest rates.

The result of our calculations is in Table 4-10

It is worth mentioning that bootstrapping is covered in Certified Financial Quant certification program. Although, using the interest rate swap rates are generally preferred, the mathematics boiled down to Equation 4-7 when

There is also a shortcoming in bootstrapping which has not been mentioned by any textbook nor practitioner but indirectly highlighted by one of the certification participant. For a verly long term tenor, e.g. 30Y, the discount factor can be negative if the rates are too high. The same problem also persist if the curve is too steep. Caution is therefore advised to users of bootstrapping technique.

Alternatively, if it is even possible, strip the long end of the coupon, sells them and reap the extra-ordinary profit (or lower your breakeven cost).

Our FRN calculator also calculates the discount factor using the same bootstrapping technique and include longer tenors for simulation. Feel free to input any rates and see the results.