Skip to content
All library documents

Bootstrapping Treasury Yield Curves with Sparse Bond Data

Article Quant Q&A · Author: Jojo

Summary

The document addresses how to construct a zero-coupon Treasury curve when a cash-flow matrix has more coupon-date columns than bond-price rows. One proposed approach is to select a maturity-spaced set of securities, then create hypothetical bonds from nearby issues to fill maturity gaps. This produces a square cash-flow system that can be solved if the matrix is invertible.

Another response suggests a least-squares solution using the matrix transpose, or singular value decomposition when direct inversion is not available. The discussion also describes bootstrapping from hypothetical par bonds derived from on-the-run yields. It cautions that Treasury bootstrapping may be inferior to spline fitting when many issues are available. The suggestions are alternative approaches rather than a comparison backed by empirical results; matrix conditioning and the chosen securities can affect the resulting curve.

Key ideas

  • Selecting securities with evenly spaced maturities can create a square cash-flow system.
  • Nearby bonds can be combined to construct hypothetical securities for maturity gaps.
  • Least-squares methods or singular value decomposition can address non-square or singular systems.
  • Spline fitting may be preferable to direct bootstrapping when many Treasury issues are available.

Tags

Full text
# Solving the Bootstrapping equation when matrix is non-square


# Solving the Bootstrapping equation when matrix is non-square












I am trying to construct a Zero Coupon Yield curve for US Government Bonds from market data (coupons, face values, prices, months to maturity) via Bootstrapping. However, I am not too sure how I would go about solving the equation AP = F over here if I have the Matrix A such that it isn't square. I currently have more columns (which represent the months between each coupon payment) than rows (each row represents a bond with a particular number of months to maturity). For example one of the bonds I have has a coupon issued every 3 months and the maximum months to maturity among the bonds is 360, which implies my matrix A has 120 columns. However, I have only 60 rows as I have only 60 bonds with unique months to maturity, leaving matrix A as non-square. I am sure this is easily solvable but I haven't been able to find anything on this.

Thank You

## Answer by Helin (score 1, accepted)

https://quant.stackexchange.com/a/18783

There are many ways to bootstrap the Treasury curve. I'll start by talking about my personal preference.

The key step is to select appropriate securities to be included in the procedure. My preference is to use 60 Treasuries that are spaced out evenly (i.e., maturing 6 months after each other). Specifically for US Treasuries, it is convenient to select Treasuries auctioned in the February and August cycles, since they span the entire maturity spectrum. So as of today, you'd start with the note maturing on 15-August-2015, then the one maturing on 15-Feb-2016, ..., 15-Feb-2045.

There will be some gaps using this scheme and you'd need to fill in the gaps. For example, there are no bonds maturing on 15-Aug-2032, but you can easily create "hypothetical bonds" using nearby issues (in this case, it would be the Feb31s and Feb36s).

Once you have created this sample set, it's trivial to create a square matrix of cash flows. Given the cashflow structure of this selection, this matrix is almost certainly invertible.

Of course, this is not the only way to do this. Another popular strategy is to use only on-the-run issues, linearly connect all the yields and assume that's the par curve, and bootstrap off of these hypothetical par bonds.

In general, bootstrapping the Treasury curve is not that great of a strategy. I'd recommend looking into spline fitting techniques for the Treasury market, given the large number of issues outstanding.

## Answer by Gordon (score 1)

https://quant.stackexchange.com/a/18781

By multiplying the transpose of $A$ to both sides, you can make it to be a square matrix. That is $$A^T A P = A^T F.$$ Moreover, if $A^T A$ is invertible, you can have that $$P = \big(A^T A\big)^{-1}A^T F.$$

In general, for a non-square matrix, or a square matrix, $A$, but not invertible, the singular value decomposition approach can be employed. See the book Numerical Recipes in C.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.